div の最初の子のみを表示し、残りをすべて非表示にする方法を見つけるのに苦労しています。これは純粋に css で行うことができますか、それとも Javascript を使用する必要がありますか?
では、これを最初のp-tagのみを表示するにはどうすればよいですか?
<div id="test1">
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
</div>
div の最初の子のみを表示し、残りをすべて非表示にする方法を見つけるのに苦労しています。これは純粋に css で行うことができますか、それとも Javascript を使用する必要がありますか?
では、これを最初のp-tagのみを表示するにはどうすればよいですか?
<div id="test1">
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
</div>
との組み合わせは確実にそれを行うはずです:not
:first-child
#test1 p:not(:first-child) {
display: none;
}
これはバージョン 9 より前の IE では機能しないことに注意してください。
これを試して
CSS
#test1 p{
display:none;
}
#test1 p:first-child{
display:block;
}
:first-child
ラップインを使用することにより:not()
:
#test1 p:not(:first-child) {
display:none;
}
first-child
IE8 以前ではサポートされていないことに注意してください。完全なクロス ブラウザ サポートが必要な場合は、Javascript を使用する必要があります。
Javascript ソリューションは次のようになります。
var div = document.getElementById("test1");
var pList = div.getElementsByTagName("p");
for(var i=0; i<pList.length; i++) {
if(pList[i] != div.children[0]) {
pList[i].style.display = "none";
}
}
#test1 p {
display: none;
}
#test1 p:first-child {
display: block;
}
あなたの例では要素のみを使用p
しましたが、他の要素が含まれている場合は? 一般に、最初の要素のみを表示するには、これを使用できます。
#test1 :not(:first-child) {
display: none;
}
これは IE<9 では機能しないことに注意してください。
フィドルのデモ。
すべての P 要素を非表示にしてから、最初の p 要素を暗黙的に表示します。
#test1 p {
display: none;
}
#test1 p:first-child {
display: block;
}
aDOCTYPE
が宣言されている場合、これは IE7+ で機能します。ここでブラウザーの互換性を確認してください( IE7.jsを使用しない限りIE9 でのみ機能する:not
を使用するのとは異なります)
これを試してみてください。IE7+で動作するはずです
CSS
#test1>p ~ p{
display: none;
}
jsfiddleについて
古いサポートが必要な場合は、クロスブラウザーにする必要があります。
Javascript
var test1 = document.getElementById("test1").getElementsByTagName("p"),
i = 1,
p = test1[i];
while (p) {
p.style.display = "none";
p = test1[i += 1];
}
jsfiddleについて
試す
#test1 p:not(:first-child)
{
visibility:hidden;
}
$('#test1 p:not(:first-child)').hide();