CSS复合选择器
后代选择器
后代选择器:又称为包含选择器,可以选择父元素里面子元素。其写法就是把外层标签写在前面,内层标签写在
后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
/*
元素1 元素2 {
属性:属性值
}
*/
ul li {
color: red;
}
</style>
</head>
<body>
<ul>
<li>后代选择器1</li>
<li>后代选择器2</li>
<li>后代选择器3</li>
</ul>
</body>
</html>
子类选择器
子类选择器: 子类选择器只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
/*
元素1 > 元素2 {
属性:属性值
}
*/
ul > a {
color: red;
}
</style>
</head>
<body>
<!-- 只有第一个<a>标签会发生改变 -->
<ul>
<a href="#">子类选择器</a>
<li><a href="#">子类选择器</a></li>
</ul>
</body>
</html>
并集选择器
并集选择器: 可以选择多组标签,同事定义他们的样式 。标签中间用 “,” 隔开
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
/*
元素1 , 元素2 {
属性:属性值
}
*/
h1, h2 {
color: red;
}
</style>
</head>
<body>
<!-- <h1> <h2> 都会发生改变 -->
<h1>并集选择器1</h1>
<h2>并集选择器2</h2>
<h3>并集选择器3</h3>
</body>
</html>
链接伪类选择器
链接伪类选择器: 主要用于修改<a>
标签的一些行为
a:link 选择所有未被访问的链接
a:visited 选择所有已被访问的链接
a:hover 选择鼠标指针位于其上的链接
a:active 选择活动链接(鼠按下未弹起的链接)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
a:link {
color: black;
}
a:visited {
color: red;
}
a:hover {
color: blue;
}
a:active {
color: yellow;
}
</style>
</head>
<body>
<a href="#">链接伪类选择器</a>
</body>
</html>
focus伪类选择器
伪类选择器: 用于获得焦点的表达元素
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
/*
表单元素:focus {
属性:属性值
}
*/
input:focus {
background-color: red;
}
</style>
</head>
<body>
<!-- 当标签获取焦点时,背景变为红色 -->
<input type="text"/>
</body>
</html>
CSS元素分类
根据元素的显示方式对元素进行分类,例如:<div>
标签独占一行,被分为块元素。<span>
一行可以放多个,被分为行元素
块元素
特点:
独占一行,下一个元素会另起一行
可以设置高度、宽度、外边距和内边距
宽度默认是容器(父级宽度)得100%
行内元素
特点:
相邻行内元素在一行上,一行可以显示多个
高度、宽度设置无效
默认宽度是他本事内容的宽度
行内元素只能容纳文本或其他行内元素
行内块元素
行内块元素: 在行内元素中有几个特殊的标签:<img/> <input/> <td>
,它们同时具有块元素和行内元素的特点。
特点
和相邻行内元素(行内块元素)在一行上,但是他们之间会有空白间隙。一行可以显示多个(行内块压损)
默认宽度就是它本身的宽度
高度、宽度、行高、外边距和内边距都是可以控制的
元素显示模式转换
元素显示模式转换: 在开发过程中可能会遇到将行内元素转缓存块元素,这时就需要进行类型转换。例如:在使用<a/>
标签时,<a/>
标签默认的高度并不是我们理想的高度(行内元素不能修改宽高),这时就可以将<a/>
转行为快元素为其设置高度。
属性:display 可以修改元素类型
block: 块元素
inline: 行内元素
inline-block: 行内块元素
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.balld {
width: 200px;
height: 100px;
border: 1px solid red;
/* 将行内元素转行为快元素 block:块元素*/
display: block;
}
div {
width: 200px;
height: 100px;
border: 1px solid red;
/* 将块元素转换为行内元素 inline:行内元素*/
display: inline;
}
span {
width: 200px;
height: 100px;
border: 1px solid red;
/* 将行内元素转行为行内块元素 inline-block:行内块元素*/
display: inline-block;
}
</style>
</head>
<body>
<a class="balld">元素类型转换1 设置宽高后生效</a>
<div>元素类型转换2 设置的宽高未生效</div>
<span>行内块元素 设置的宽高生效 并且一行可以放多个1</span>
<span>行内块元素 设置的宽高生效 并且一行可以放多个2</span>
</body>
</html>
CSS背景
CSS背景常用属性: 背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。
属性 | 作用 | 常用属性值 | 备注 |
---|---|---|---|
background-color | 定义标签背景色 | red #FF0000 rgb(255,0,0) | 预定义的颜色值:red 十六进制:#FF0000 RGB代码:rgb(255,0,0) 默认值:transparent 背景颜色为透明 |
background-image | 为标签添加背景图片 | url地址 | 地址可以为项目指定目录下的图片 地址也可以为网络地址 |
background-repeat | 背景平铺 | repeat(平铺) no-repeat(不平铺) repeat-x(沿X轴平铺) repeat-y(沿Y轴平铺) | background-image和ackground-repeat 一起使用 |
background-position | 背景图片位置 | background-position: x y x和y代表 x坐标和y坐标 可以使用方位名词或者精确单位 | 精确单位:百分数 或 px值 方位名称:top、center、bottom、left、right |
background-attachment | 背景图片固定 | scroll(背景图片是随对象内容滚动) fixed(背景图片固定) | |
background | 背景属性符合写法 | 顺序:背景颜色 背景图片地址 背景平铺 背景图片固定或滚动 背景图片位置 |
背景透明色:background : rgba(0,0,0,0.3) 第四位代表透明度
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.balld1 {
width: 200px;
height: 100px;
/* 背景颜色 */
background-color: red;
}
.balld2 {
width: 200px;
height: 100px;
/* 背景图片 */
background-image: url("https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw");
}
.balld3 {
width: 200px;
height: 100px;
background-image: url("https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw");
/* 不平铺
background-repeat: no-repeat; */
/* 平铺
background-repeat: repeat; */
/* 沿X轴平铺
background-repeat: repeat-x; */
background-repeat: repeat-y;
}
.balld4 {
width: 300px;
height: 300px;
border: 1px solid red;
background-image: url("https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw");
background-repeat: no-repeat;/* 不平铺 */
/* background-position: right top; 右上方 right top和top right 是等价的 和顺序无关*/
/* background-position: right; 此时水平靠右,第二个参数省略Y轴 默认是垂直居住*/
/* background-position: top; 此时一个参数top一定是Y轴 顶部对齐,第二个参数省略x 轴是 水平居中显示的 */
/* background-position: 50% 50%; 图片在标签正中间 */
/* background-position: 10px 30px; 根据px值精确定位 */
/* background-position: right 20px; 混合定位 */
}
.balld5 {
width: 100%;
height: 300px;
border: 1px solid red;
background-image: url("https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw");
background-repeat: no-repeat;
background-position: 50% 50%;
/* 背景图片固定 */
background-attachment: scroll; /* scroll(背景图片是随对象内容滚动) fixed(背景图片固定)*/
}
body {
background: transparent url("https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw") no-repeat fixed top;
}
.balld6 {
width: 100%;
height: 300px;
background: rgba(0,0,0,0.3);
}
</style>
</head>
<body>
<div class="balld1">背景颜色</div>
<br />
<div class="balld2">背景图片</div>
<br />
<div class="balld3">背景平铺</div>
<br />
<div class="balld4">背景图片位置</div>
<br />
<div class="balld5">背景图片固定</div>
<br />
<div class="balld6">背景透明度</div>
</body>
</html>
CSS三大特性
层叠性
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)
另一个冲突的样式。层叠性主要解决样式冲突的问题
层叠性原则:
- 样式冲突,遵循原则就是就近原则,哪个样式离结构近,就执行哪个样式
- 样式不冲突,不会层叠
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div {
background-color: red;
}
/* 该样式生效 */
div {
background-color: pink;
}
</style>
</head>
<body>
<div>层叠性</div>
</body>
</html>
继承性
子标签会继承父标签的某些样式,如文本颜色和字号
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div {
color: red;
font-size: 30px;
height: 100px;
border: 1px solid black;
}
p {
border: 1px solid black;
}
</style>
</head>
<body>
<div>
<!-- p 标签会继承父标签div的样式,字体会为红色,字号50px
但并不是继承所有样式,父标签的高度就没继承
通常继承的是字体的样式 以及color-->
<p>继承性</p>
</div>
</body>
</html>
优先级
当同一个元素指定多个选择器,就会有优先级产生。
- 选择器相同,则执行层叠性
- 选择器不同,则根据选择器权重执行
继承或者 * < 元素选择器 < 类选择器,伪类寻找器 < ID选择器 < 行内样式 < !important重要的