409

次のようなスタイルの要素のリストがあります。

ul {
    list-style-type: none;
    text-align: center;
}

li {
    display: inline;
}

li:not(:last-child):after {
    content:' |';
}
<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    <li>Five</li>
</ul>

One | Two | Three | Four | Five |代わりに出力One | Two | Three | Four | Five

最後の要素を除くすべてをCSSで選択する方法を知っている人はいますか?

ここ:not()でセレクターの定義を見ることができます

4

9 に答える 9

466

notセレクターに問題がある場合は、それらすべてを設定して、最後のセレクターをオーバーライドできます。

li:after
{
  content: ' |';
}
li:last-child:after
{
  content: '';
}

または、以前に使用できる場合は、最後の子は必要ありません

li+li:before
{
  content: '| ';
}
于 2012-03-16T12:03:48.993 に答える
262

すべてが正しいようです。使用したものの代わりに、次のcssセレクターを使用することをお勧めします。

ul > li:not(:last-child):after
于 2013-06-17T10:06:39.250 に答える
31

私にとってはうまくいきます

&:not(:last-child){
            text-transform: uppercase;
        }
于 2018-12-14T12:44:59.893 に答える
26

書かれているあなたの例は、私にとってChrome11で完全に機能します。おそらくあなたのブラウザは:not()セレクターをサポートしていませんか?

このクロスブラウザを実現するには、JavaScriptなどを使用する必要がある場合があります。jQueryはセレクターAPIに:not()を実装します。

于 2011-03-27T14:47:12.407 に答える
21

CSSを使用した例

  ul li:not(:last-child){
        border-right: 1px solid rgba(153, 151, 151, 0.75);
    }
于 2017-07-26T20:57:11.923 に答える
10

サンプルはIEでは機能しません。コンテンツCSSプロパティを使用するには、IEで標準的な方法でページをレンダリングするためにドキュメントでDoctypeヘッダーを指定する必要があります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<html>

<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    <li>Five</li>
</ul>

</html>

2番目の方法は、CSS3セレクターを使用することです

li:not(:last-of-type):after
{
    content:           " |";
}

ただし、Doctypeを指定する必要があります

そして3番目の方法は、次のようなスクリプトでJQueryを使用することです。

<script type="text/javascript" src="jquery-1.4.1.js"></script>
<link href="style2.css" rel="stylesheet" type="text/css">
</head>
<html>

<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    <li>Five</li>
</ul>

<script type="text/javascript">
  $(document).ready(function () {
      $("li:not(:last)").append(" | ");
    });
</script>

3番目の方法の利点は、doctypeを指定する必要がなく、jQueryが互換性を処理することです。

于 2011-03-27T15:28:02.730 に答える
1

:before last-childと:afterを削除して使用します

 ul li:not(last-child){
 content:' |';
}

うまくいけば、それはうまくいくはずです

于 2019-09-21T23:49:12.840 に答える
0

:before last-childと:afterを削除して使用します

ul > li:not(:last-child):after {
   border-bottom: none !important;
}
于 2021-08-23T08:26:17.333 に答える
-3

あなたはこれを試すことができます、私はあなたが探している答えではないことを知っていますが、概念は同じです。

すべての子のスタイルを設定し、最後の子からスタイルを削除する場所。

コードスニペット

li
  margin-right: 10px

  &:last-child
    margin-right: 0

画像

ここに画像の説明を入力してください

于 2018-07-06T06:53:32.617 に答える