2017-01-04 7 views
2

このデモをご覧になり、CSSルールをすべて.boxに適用できますが、最後のCSSルールに適用することはできませんか?特定のクラスを持つすべての要素にCSSルールを適用しますが最後に

私はすでに:not(:last-of-type):not(:last-child)を試してみましたが、彼らは

.box{ 
 
    height:40px; 
 
    width:100%; 
 
    padding:12px; 
 
} 
 
.box:not(:last-of-type){ 
 
    border-bottom: 1px solid #ddd; 
 
} 
 
.box:not(:last-child){ 
 
    border-bottom: 1px solid #ddd; 
 
}
<div class="box">Box 1</div> 
 
<div class="box">Box 2</div> 
 
<div class="box">Box 3</div> 
 
<div class="box">Box 4</div>

+0

実際の答えはここにあります。 (クローズされた質問は答えとして追加できません。)Stackoverflow(とjsfiddle)は余分な隠れ要素 'body'を追加します。 ':last-child'はこれらの追加された要素をターゲットにして終了し、隠されているのでスタイルが予期しない効果を持つように見えます。 CodePenはあなたの例がうまく動作するようにこれを行いません[http://codepen.io/ouroborus/pen/xgxyJv]。回答の中には、この問題を緩和するのに役立つラッパー要素を使用することをお勧めしますが、なぜそれが問題なのかについては何も言及していません。 – Ouroborus

+0

@BoltClockこれはその複製ではありません。 ':last-child'について語っていますが、この質問とその答えはどちらも別の問題について話します。 – Ouroborus

+0

@Ouroborus:質問は原則的に同じです:質問者は、特定のクラスを持つ最後の要素(すべてを除く)にスタイルを適用したいと考えています。隠された要素があるかどうかにかかわらず、これは当てはまります。 – BoltClock

答えて

3

を以下のようなスタイル

チェックこのスニペット

.box { 
 
    height: 40px; 
 
    width: 100%; 
 
    padding: 12px; 
 
    border-bottom: 1px solid #ddd; 
 
} 
 
.box:last-of-type { 
 
    border:none ; 
 
}
<div class="Wrapper"> 
 
    <div class="box">Box 1</div> 
 
    <div class="box">Box 2</div> 
 
    <div class="box">Box 3</div> 
 
    <div class="box">Box 4</div> 
 
</div>

または

あなたは

.box { 
 
    height: 40px; 
 
    width: 100%; 
 
    padding: 12px; 
 
    border-bottom: 1px solid #ddd; 
 
} 
 
.box:last-child { 
 
    border:none; 
 
}
<div class="Wrapper"> 
 
    <div class="box">Box 1</div> 
 
    <div class="box">Box 2</div> 
 
    <div class="box">Box 3</div> 
 
    <div class="box">Box 4</div> 
 
</div>

としての最後の子を使用することができます10

希望する場合は

+0

最後のルールは '.box:last-child {border-bottom:none; } '。オーバーライドする必要のないものをオーバーライドしないでください。 '.box:last-child'は' .box'よりも高い特異性を持ち、 '!important'を使う必要はありません。 – Ouroborus

+0

yaa thats right :) – Geeky

1

仕事をしていません。このお試しください:親要素とそれを包む試してみて、適用してみてください

.box { 
    height: 40px; 
    width: 100%; 
    padding: 12px; 
    border-bottom: 1px solid #ddd; 
} 

.box:last-child { 
    border-bottom: 0; 
} 
1

:not(:last-child)を別の部門にラップしてください。それ以外の場合、ブラウザーはどちらが最後の子かを識別できません。

.box{ 
 
    height:40px; 
 
    width:100%; 
 
    padding:12px; 
 
} 
 

 
.box:not(:last-child){ 
 
    border-bottom: 1px solid #ddd; 
 
}
<div> 
 
    <div class="box">Box 1</div> 
 
    <div class="box">Box 2</div> 
 
    <div class="box">Box 3</div> 
 
    <div class="box">Box 4</div> 
 
</div>

それはすべてにスタイルを与え、その後.boxborder: 1pxを与え、.box:last-childborder: none;を与えるようlast-childのスタイルの別のセットを与えることによって、スタイルの上書きを使用することを暗示しません。これはスタイルを上書きしています

+0

'body'はコンテナではありませんか?最後の '.box'は' body'の ':last-child'になります。 – Ouroborus

+0

はい。それは例外です。':last-child'や':not(:last-child) 'を使いたい場合は、本体以外のラッパーの中にラップする必要があります。 [jsFiddle](https://jsfiddle.net/xr4zmhqt/1/) –

+0

を編集してみてください。これは例外ではなく、Stackoverflowスニペットの特定の特徴です。 SOはスニペット本体に 'script'要素を追加し、目的の要素ではなく' body'の ':last-child'としてカウントします。 – Ouroborus

関連する問題