博客列表 >css相邻选择器与兄弟选择器的使用以及Paddin与Margin的使用 2019年9月3日

css相邻选择器与兄弟选择器的使用以及Paddin与Margin的使用 2019年9月3日

江水的博客
江水的博客原创
2019年09月07日 15:02:19972浏览

1、相邻选择器与兄弟选择器实例演示如下:

实例

 <ul>
        <li>1</li>
        <li>2</li>
        <li class="item">3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li id="liu">8</li>
        <li>9</li>
        <li>10</li>
    </ul>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

ul{
    margin:0;
    padding-left: 0;
    border:1px solid green;
}
/* 层级选择器 */
ul li{
    list-style: none;
    width:50px;
    height: 50px;
    background-color: gold;
    /* border: 1px solid black; */
    border-radius: 50%;
    /* 水平和垂直居中显示 */
    text-align: center;
    line-height: 50px;
    /* 将块级元素变为内联元素 */
    display: inline-block;
/* 为li元素加一个阴影 */
box-shadow: 2px 2px 2px #666;
}
/* 相邻选择器 */
#liu+*{
background-color: red;
border: 2px solid blue;
}
/* 兄弟选择器 */
.item~*{
background-color: green;
border: 2px solid blue;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

相邻选择器的运行效果如下图所示

xl.png

我们可以从图中看到相邻选择器只会选择紧挨着8号元素的后面一个元素9号的背景被改变了,而十号没有改变背景。

兄弟选择器的效果如下图所示

xd.png

从兄弟选择器可以看出,兄弟选择器会把3号后面所有的元素选中并改变背景,由于9号刚刚被前面的相邻选择器选中并没有改变颜色,是因为相邻选择器的等级要高于兄弟选择器。

这两个选择器都是选择后面的元素,而相邻选择器是选择紧挨着该元素后面的第一个元素,而兄弟选择器是选择跟该元素平级的后面的所有元素。

2、nth-child()和nth-of-type() 实例演示如下:

实例

<div>
     <p>汽车</p>
     <li>火车</li>
     <li>轮船</li>
    </div>
    <div>
         <p>***</p>
        <p>轮船</p> 
   </div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

 div :nth-child(2){
            background-color: green;
        }
        div p:nth-of-type(2){
            background-color: red;
        }

运行实例 »

点击 "运行实例" 按钮查看在线实例

div :nth-child(2)运行效果如下图:

6.png

div p:nth-child(2)运行效果如下图:

8.png

这两个选择器虽然都是选择第二个元素但两个选择的意义却不同,第一个选择器是选择每个div下面的第二个元素它关注的是元素的位置,而第二个选择器是选择每个div下的第二个元素且第二个元素还必须是p类型的标签,它既关注元素的位置也关注元素的类型。

3、padding对盒子大小的影响 实例演示如下:

实例

 <!-- 将图片在容器里居中显示 -->
    <div class="box1"><img src="static/image/girl.jpg" alt="美女" width="200"></div>
    <!-- 使用宽度分离将图片居中显示 -->
    <div class="wrap">
        <div class="box2"><img src="static/image/girl.jpg" alt="美女" width="200"></div>
    </div>
    <!-- 使用box-sizing -->
    <div class="box3"><img src="static/image/girl.jpg" alt="美女" width="200"></div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

.box1{
    width:300px;
    background-color: wheat;
   border:2px solid red;
}
.box1{
    padding: 50px;
    width: 196px;/*如果这里写出200px的话,总宽度就会变成304*/
    /* 左浮动 */
    float: left;
}
/* 宽度分离 */
.wrap{
    width:300px;
/* 设置左浮动以及左外边距 */
    float: left;
    margin-left: 10px;
}
.box2{
    background-color:aqua;
    border:2px solid red;
    padding: 50px;

}
/* 使用box-sizing */
.box3{
    float: left;
    margin-left: 10px;
    width: 300px;
    padding:50px;
    /* 将宽度作用于边框上这时候盒子就不会被撑开 */
    box-sizing:border-box;
    background-color:aqua;
    border:2px solid red;
   
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果图如下:

9.png

上面使用了三种方法将图片居中显示,而我们最常用的还是最后一种。

4、margin中的同级塌陷,嵌套传递与自动挤压 实例演示如下

实例

 <!-- 同级塌陷 -->
    <div class="box1"></div>
    <div class="box2"></div>
    <!-- 嵌套传递 -->
    <div class="box1">
        <div class="box2"></div>
    </div>
    
    <!-- 自动挤压 -->
    <div class="box3"></div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

/* 同级塌陷哪一个值小就会往值大的塌陷 */
.box1{
    width: 150px;
    height: 150px;
    background-color: red;
    margin-bottom: 50px;
}
.box2{
    width:150px;
    height: 150px;
    background-color: blue;
    margin-top:30px;
}
/* 嵌套传递 */
.box1{
    width: 200px;
    height: 200px;
    background-color: red;
    /* 设置内上边距,然后将高度设置回来,因为一旦设置了padding就会撑开盒子 */
     padding-top:20px;
      height: 180px;
   
}
.box2{
    width: 100px;
    height: 100px;
    background-color: green;
    /* margin-top: 20px; 当在这里为box2盒子设置上外边距时,会发现没有用 */
}
/* 自动挤压 */
.box3{
    width:200px;
    height: 200px;
    background-color: blue;
    /* margin-left: auto;
    margin-right: auto; */
    margin: 0 auto;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

因为截图看不出效果,所以我这里就没截图了,所以只需要看代码就可以了,需要的可以将代码复制下去运行看效果。

总结:

这里讲解了相邻选择器与兄弟选择器,相邻选择器只会选择紧挨着选择元素后面的第一个元素,而兄弟选择器会选择该元素后面平级的所有元素,两个的作用是不一样的,nth-child()是用于选择某一个特定的元素而nth-fo-type是用于选择特定的元素和特定的元素类型,两者所关注的点不一样,一个元素一旦设置了padding就会撑开盒子,常常解决的方法就是,设置了padding值后再将宽度重新设置,或宽度分离就是为该元素在套一个容器,还有就是将宽度作用到边框上面而不是内容上,这样就不会撑开盒子了,margin有三个特性一个是同级塌陷、嵌套传递、自动挤压使用时记住这三个需要注意的点就可以了。







声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议