CSS选择器:nth-child()的灵活用法及常见场景示例
CSS选择器中的nth-child()相信大家都比较熟悉,nth-child()和nth-of-type()的区别是:nth-child()不区分类型。大家经常使用的大多都是其常规的一两种用法,在遇到一些稍微复杂点的需求,比如,选择从第A个到第B个子元素时,很多前端开发者往往束手无策。今天我们就整理下nth-child()的一些使用场景,供大家扩展学习。
以下示例,为方便演示,我们将所有子元素的默认背景设为淡灰色,将选中的子元素设为淡珊瑚色背景(未被选中的子元素为淡灰色背景)。因为nth-child()选择器不区分类型,所以这里我们使用ul列表标签来进行演示。
HTML代码:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
提示:可以使用ul>li*10快速生成该段代码。
默认CSS样式代码如下:
ul{
margin: 20px;
li{
width: 30px; height: 30px;line-height: 30px;
margin: 5px; float: left;
list-style: none; text-align: center;
border: 1px solid gray; background: lightgray;
}
}
场景一:选择所有偶数/奇数位置的子元素
CSS样式代码:
ul li:nth-child(2n){ border: 1px solid coral; background: lightcoral;}
效果如下:
li:nth-child(2n)为选择偶数个子元素,那么则可以通过li:nth-child(2n+1)来选择第奇数个子元素;
当然,我们还可以通过关键词:even和odd来实现选择第奇数个或者偶数个子元素的效果,如:
li:nth-child(even){ border: 1px solid coral; background: lightcoral;}
场景二:选择所有X的倍数的子元素
选取位置为3的倍数的子元素,如第3、6、9个子元素。
CSS样式代码:
li:nth-child(3n){ border: 1px solid coral; background: lightcoral;}
场景三:选择从第4个子元素往后的所有元素
CSS样式代码:
li:nth-child(n+5){ border: 1px solid coral; background: lightcoral;}
效果如下:
场景四:选择第8个子元素前的所有元素
CSS代码:
li:nth-child(-n+8){ border: 1px solid coral; background: lightcoral;}
效果如下:
当然:选择第8个元素之前的所有子元素,等同于对选择第八个子元素之后的所有元素取反。该效果也可通过如下代码实现:
li:not(:nth-child(n+9)){ border: 1px solid coral; background: lightcoral;}
场景五:三四结合使用,选择从第4个到第8个子元素
CSS代码:
li:nth-child(n+5):nth-child(-n+8){ border: 1px solid coral; background: lightcoral;}
效果如下:
场景六:对场景五取反,即选择除从第5到第8个子元素之外的其他子元素
CSS代码:
li:not(:nth-child(n+5):nth-child(-n+8)){ border: 1px solid coral; background: lightcoral;}
效果如下:
通过nth-child()选择器,我们还可以实现很多其他使用场景较为小众的一些效果,希望大家扩展学习,在学习的过程中,举一反三。
- CSS选择器:nth-child()的灵活用法及常见场景示例
CSS选择器中的nth-child()相信大家都比较熟悉,nth-child()和nth-of-type()的区别是:nth-child()不区分类型。大家经常
- 为什么你的logo图模糊不清,移动端图片虚化的解决方案
在传统pc时代的时候,几乎99%的网站都在使用图片格式作为logo,而大部分网站都使用了png透明底的图片来做网站的logo。但是进入移动时代之后,这种习惯还是
- 响应式网站布局的优缺点分析
响应式网站,通俗的讲就是使用CSS媒体查询技术,写一套代码,可以在多个终端上使用。在此之前,前端切图工作者是需要分别针对电脑端、移动端和平板等常见设备专门去写一
- 切图和前端什么关系?为什么前端又被称为切图仔?
很多初从事前端切图这个行业的新人,大多都有一个疑问?为什么要把前端开发人员称为切图仔呢?提起这个问题,我们还要从前端切图行业的发展历程来说起,当然,这个问题对与
- 目前主流的前端框架有哪些?
基本上每种语言都有对应的一些快速框架用于提升开发人员的效率,所谓框架更像是工具箱或者脚手架,在开发时如果能很好的利用框架可以起到事半功倍的效果。简单形象的说,如
- 移动端background-attachment: fixed失效解决方法
在做web前端切图时,我们经常需要做背景图片不跟随内容滚动的效果,这个时候就需要使用到background-attachment: fixed 属性,这个属性及