批改状态:合格
老师批语:写得不错, 没写总结, 下次注意
一、CSS相邻兄弟选择器
如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器。
1、相邻选择器选择的是该元素的下一个元素;
2、兄弟选择器选择的是该元素后面的所有元素。
网页实际效果展示:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.bg-lightblue+* {
background: lightblue;
}
.bg-grenn~* {
background: green;
}
</style>
</head>
<body>
<div class="xl">
<h2>相邻选择器</h2>
<p>我是一行段落</p>
<p class="bg-lightblue">我是一行段落设置class=bg-lightblue,跟下一个段落是邻居</p>
<p>我是一行段落,跟上一个段落是邻居,我被设置成背景为浅蓝</p>
<p>我是一行段落</p>
</div>
<h2>兄弟选择器</h2>
<p>我是一行段落</p>
<p class="bg-grenn">我是一行段落设置class=bg-grenn</p>
<p>我是一行段落是上一个段落的兄弟同级元素被设置成背景为绿色</p>
<p>我是一行段落是上一个段落的兄弟同级元素被设置成背景为绿色</p>
<p>我是一行段落是上一个段落的兄弟同级元素被设置成背景为绿色</p>
</body>
</html>点击 "运行实例" 按钮查看在线实例
二、伪类选择器
伪类选择器常用的有子元素选择器和类型选择器。
1、关注点不用,如果关注点是位置用子元素选择器;
2、即关注位置又关注类型用类型选择器。
网页实际效果展示:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
div :first-child {
background-color: aqua;
}
div :last-child {
background-color: beige;
}
div :nth-child(4) {
background-color: blueviolet;
}
ul li:first-of-type {
background-color: beige;
}
ul li:last-of-type {
background-color: aqua;
}
ul li:nth-of-type(4) {
background-color: blueviolet;
}
</style>
</head>
<body>
<h2>子元素选择器</h2>
<div>
<p>我是一行段落用first-child 设置了背景色</p>
<p>我是一行段落</p>
<p>我是一行段落</p>
<p>我是一行段落用nth-child(4) 设置了背景色</p>
<p>我是一行段落</p>
<p>我是一行段落用last-child 设置了背景色</p>
</div>
<h2>类型选择器</h2>
<ul>
<li>我是无序列表用first-of-type 设置了背景色</li>
<li>我是无序列表</li>
<li>我是无序列表</li>
<li>我是无序列表用nth-of-type(4) 设置了背景色</li>
<li>我是无序列表</li>
<li>我是无序列表用last-of-type 设置了背景色</li>
</ul>
</body>
</html>点击 "运行实例" 按钮查看在线实例
三、padding对盒子大小的影响与解决方案
网页实际效果展示

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>padding对盒子的影响</title>
<style>
.box1 {
width: 300px;
border: 1px solid black;
background: lightblue;
}
.box1 {
padding: 50px;
. width: 200px;
}
.wrap {
width: 300px;
}
.box2 {
padding: 50px;
border: 1px solid black;
background: lightgreen;
}
.box3 {
width: 300px;
box-sizing: border-box;
padding: 50px;
background: lightsalmon;
border: 1px solid black;
}
</style>
</head>
<body>
<div class="box1">
<img src="../static/images/girl.jpg" alt="小姐姐" width="200">
</div>
<p>盒子的固定宽度为300px,想要把图片放置在盒子中间位置,在设置padding=50px的时候盒子被撑开了</p>
<h2>2种解决padding把盒子撑开的方案</h2>
<p>1、宽度分离</p>
<p>在图片中在加一个盒子,使其不被撑大。</p>
<div class="wrap">
<div class="box2">
<img src="../static/images/girl.jpg" alt="小姐姐" width="200">
</div>
</div>
我是用宽度分离的方法把图片居中子盒子中。
<p>2、box-sizing属性设置</p>
<p>利用box-sizing属性把盒子中border部分一起算进盒子的大小中。</p>
<div class="box3">
<img src="../static/images/girl.jpg" alt="小姐姐" width="200">
</div>
<p>我是用box-sizing: border-box的方式把图片居中的。</p>
</body>
</html>点击 "运行实例" 按钮查看在线实例
四、margin中的同级塌陷, 嵌套传递与自动挤压
网页实际效果展示

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.box1 {
width: 50px;
height: 50px;
background: lightgreen;
margin-bottom: 30px;
}
.box2 {
width: 50px;
height: 50px;
background: lightblue;
margin-top: 20px;
}
.box3 {
width: 100px;
height: 100px;
background: lightgreen;
}
.box4 {
margin-top: 50px;
width: 50px;
height: 50px;
background: lightblue;
}
.box5 {
padding-top: 50px;
box-sizing: border-box;
width: 100px;
height: 100px;
background: lightgreen;
}
.box6 {
width: 50px;
height: 50px;
background: lightblue;
}
.box7 {
width: 50px;
height: 50px;
background: lightgreen;
margin-left: auto;
}
.box8 {
width: 50px;
height: 50px;
background: lightgreen;
margin-right: auto;
}
.box9 {
width: 50px;
height: 50px;
background: lightgreen;
margin: auto;
}
</style>
</head>
<body>
<h3>同级塌陷</h3>
<div class="box1"></div>
<div class="box2"></div>
<p>绿色方块设置的是下外边距30px,蓝色部分设置的是上外边距20px</p>
<p>此时应该中间的空白处是50px,但是实际上的数值为30px,因为垂直方向上的margin塌陷了,以数值大的内容显示。</p>
<h3>嵌套传递</h3>
<div class="box3">
<div class="box4"></div>
</div>
<p>在蓝色方块中设置了margin-top: 50px,此时他的父级绿色方块也一起作用上了。</p>
<p>解决办法</p>
<div class="box5">
<div class="box6"></div>
</div>
<p>在父级绿色方块中,利用padding-top:50px,来实现子级蓝色方块的头上外边距等于50px。</p>
<h3>自动挤压</h3>
<div class="box7"></div>
<p>我是用margin-left:auto 设置的效果,此时绿色方块从左边自动留出空白挤压。</p>
<div class="box8"></div>
<p>我是用margin-right:auto 设置的效果,此时绿色方块从右边自动留出空白挤压。</p>
<div class="box9"></div>
<p>我是用margin:auto 设置的效果,此时绿色方块从左邮边自动留出空白挤压,显示的效果为居中。</p>
</body>
</html>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号