css判断某元素的⼦元素个数并分别设置样式的⽅法
⼯作时遇到这样⼀个问题:根据某元素所包含的⼦元素个数,分别设置不同的样式,这个⽤js可以解决,不过个⼈认为⽤css解决可能更简单⼀点。这也正好加深了我对css选择器的理解和运⽤。
demo如下:
100种不同的字体效果图如下
完整代码如下:
<!DOCTYPE html>
<html>
<head>
<title>css3</title>
<style type="text/css">
*{
box-sizing:border-box;
}
ul{
width:100%;
margin:0;
padding:0;
font-size: 0;
}
li{
margin:0;
padding:0;
display:inline-block;
vertical-align: top;
font-size: 13px;
border:1px solid red;
height:30px;
}
/*ul只有⼀个⼦元素的样式*/
li:nth-last-child(1):first-child{
width:100%;
}
/*ul有2个⼦元素的样式*/
/*li:nth-last-child(2):first-child, 是倒数第⼆个元素,⼜是第⼀个元素,说明li的⽗元素ul有2个⼦元素(起到了判断某⽗元素下有⼏个⼦元素的作⽤)*/ li:nth-last-child(2):first-child,
/* ~ 选择位于li:nth-last-child(2):first-child 即第⼀个⼦元素之后的元素*/
li:nth-last-child(2):first-child ~ li{
width:calc(100% / 2);
}
/*ul有3个⼦元素的样式*/
/*第⼀个元素宽度为1/3,字体颜⾊为蓝⾊*/
li:nth-last-child(3):first-child{
width:calc(100% / 3);
color:blue;
}
/*第⼀个元素之后的第⼀个元素(即有3个⼦元素的ul 的第 3 个元素)*/
li:nth-last-child(3):first-child ~ li:nth-last-child(1){
width:calc(100% / 4);
color:red;
}
/*第⼀个元素之后的第⼀个元素(即有3个⼦元素的ul 的第 2 个元素)*/
li:nth-last-child(3):first-child ~ li:nth-last-child(2){
width:calc(100% / 6);
color:yellow;
}
</style>
</head>
<body>
<ul class="list">
<li>11111</li>
</ul>
<ul class="list">
<li>11111</li>
<li>22222</li>
</ul>
<ul class="list">
<li>11111</li>
<li>22222</li>
<li>33333</li>
</ul>
</body>
</html>
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论