在学习nth-of-type这个伪类选择器时,会觉得这个选择器很强大,但是在使用的过程中遇到了一种现象,该现象导致该选择器无法实现预期目的,达到了与nth-child一样的效果.目前仍无很好的解决方法.
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<style>
main{
/* 整体的宽度 */
width: 340px;
}
/* 中间插入一个盒子,但是不同类名 */
.banner{
float: left;
width: 340px;
height: 200px;
background-color: pink;
}
.test{
float: left;
width: 100px;
height: 100px;
background-color: plum;
/* 每个小盒子都有一个右外边距 */
margin-right: 20px;
margin-bottom: 20px;
}
.test:nth-of-type(3n){
/* 让每三个小盒子的右外边距为0,这样才能放得下 */
margin-right: 0;
}
</style>
</head>
<body>
<main>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="banner"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
</main>
</body>
</html>
效果如下
可以看出来,类名为.banner的盒子居然参与到了nth-of-type的计数,不然不会出现banner下方的盒子从第二个开始就右外边距为0的现象.
目前最好的解决方法就是不让banner使用div标签,使用section标签也能达到预期目的.
效果如下
可以看出,小盒子准确的摆放在了我们想要的位置.