1.复合选择器
a.后代选择器(包含选择器)可以选择孙子元素
选择某个父元素中的子元素
元素1 元素2 (样式声明) 元素1是父级,只选元素2,不影响元素1
ul li a选择孙子元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 让有序列表的字变成红色 -->
<style>
ol li{
color: red;
}
ul li a{
color: yellow;
}
</style>
</head>
<body>
<ul>
<li>吃饭</li>
<li>睡觉</li>
<li>打游戏</li>
<li><a href="#">孙子元素</a></li>
</ul>
<ol>
<li>吃饭</li>
<li>睡觉</li>
<li>打游戏</li>
</ol>
</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">
<title>Document</title>
<style>
.two>a{
color:red;
}
</style>
</head>
<body>
<div class="two">
<a href="#">链接1</a>
<p>
<a href="#">链接2</a>
</p>
<p>
<a href="#">链接3</a>
</p>
</div>
</body>
</html>
b.并集选择器
选择多组标签,集体声明
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div,h2{
color: aqua;
}
</style>
</head>
<body>
<div>
玩游戏
</div>
<h1>看电视</h1>
<h2>做家务</h2>
</body>
</html>
c.伪类选择器(定义元素状态)
1)链接伪类选择器
a:link 选择未被访问过的链接
a:visited选择已经被访问过的链接
a:hover 选择鼠标指针悬停上的链接
a:active 选择活动标签 (鼠标按下了但是未弹起)
默认展示黑色,当鼠标悬停到上面时展示为红色,当鼠标按下去没有弹起展示为绿色
hover和active除了a标签,也适用于其他标签
要按照LVHA的顺序书写,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
a {
color: black;
}
a:hover {
color: red;
}
a:active {
color: green;
}
input{
color: yellow;
}
input:hover {
color: red;
}
input:active{
color: green;
}
</style>
</head>
<body>
<a href="#">不跳转页面</a>
<br>
<input type="button" value="按钮">
<a href="#">小猫</a>
</body>
</html>
2)force伪类选择器
选取获取焦点的input表单元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.three>input:focus{
color:red ;
}
</style>
</head>
<body>
<div class="three">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
</div>
</body>
</html>
被选中的表单字体会变成红色
2.盒子模型
每一个HTML元素就相当于是一个矩形的"盒子"
有以下几部分组成
边框:border
内容:content
内边框:padding
外边框:margin
1) 边框
粗细:border-width 样式:border-style 默认没有边框,solid实线边框,dashed虚线边框,dotted点线边框 border-color颜色
可以简写
可以改写四个方向的边框
border-top/bottom/left/right
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
width: 200px;
height: 100px;
/* border-color: black;
border-width:10px;
border-style:solid; */
/* 使边框不在撑大盒子 */
box-sizing: border-box;
border: black dashed 10px;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
边框的10个像素会撑大盒子,由原来的200*100,变成220*120,添加属性 box-sizing:border-box,使边框不在撑大盒子。
div{
width: 200px;
height: 100px;
box-sizing: border-box;
border-top:10px red dotted;
border-left:10px green dashed ;
}
2)内边距
padding设置内容和边框之间的距离
四个方向加边距
padding-top
padding-bottom
padding-left
padding-right
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
width: 200px;
height: 100px;
padding-left:10px;
padding-top:10px;
}
</style>
</head>
<body>
<div>
这是一个div
</div>
</body>
</html>
没有加padding属性前,内容顶格写。
这是加入padding属性之后,带有一个绿色的内边距
内边距也会影响盒子的大小,使用box-sizing:border-box属性(同上)
复合写法
padding:5px; /*上下左右*/
padding:5px 10px; /*上下5px 左右 10px*/
padding:5px 10px 20px;/*上边居5px 左右内边距10px 下内边距 20px*/
padding: 5px 10px 20px 30px;/*上 右 下 左(顺时针)*/
3)外边距:控制盒子和盒子之间的距离
四个方向加边距
margin-top
margin-bottom
margin-left
margin-right
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
border:solid green 10px ;
/* margin-top:5px;
margin-right:5px; */
width: 200px;
height: 100px;
/* 居中 */
/* 文字没有居中,但是盒子居中 */
margin:auto;
/* 文字居中 */
text-align: center;
/* 去除浏览器默认样式 */
margin:0px;
}
</style>
</head>
<body>
<div>我爱学习</div>
<div>这是一个div</div>
<div>学习使我快乐</div>
</body>
</html>
border:solid green 10px;
margin-top:5px;
margin-right:5px;
border:solid green 10px ;
margin-top:5px;
margin-right:5px;
width: 200px;
height: 100px;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
border:solid green 10px ;
margin-top:5px;
margin-right:5px;
width: 200px;
height: 100px;
/* 居中 */
/* 文字没有居中,但是盒子居中 */
margin:auto;
/* 文字居中 */
text-align: center;
/* 去除浏览器默认样式 */
/* margin:0px; */
}
</style>
</head>
<body>
<div>我爱学习</div>
<div>这是一个div</div>
<div>学习使我快乐</div>
</body>
</html>
margin的复合写法和padding一样
margin:auto是块级元素居中
text-align:center是行内元素居中