CSS:层叠样式表
16lz
2022-01-25
CSS:层叠样式表
CSS的功能
- 设定元素样式
- 设定元素布局
CSS的工作流
浏览器拉取到CSS之后会进行解析,浏览器基于选择器的不同类型找到不同的选择器,将不同的规则应用在对应的DOM节点中,并添加节点的依赖样式——渲染树。
元素样式来源
默认样式
由浏览器提供,例如h1、h2等
<h1>hello</h1>
自定义样式
- 行内样式(内联样式)通过style属性实现
<h1 style="color: red">hello</h1>
- 文档样式(内部样式)通过上style标签实现
<style>
h1 {
color: green;
}
</style>
- 外部样式通过引入外部CSS文件实现
先用link标签引入外部css
在外部css中设置h1的样式<link rel="stylesheet" href="demo.css" />
h1 {
color: blue;
}
- 行内样式(内联样式)通过style属性实现
可以看到样式的优先级是内联样式>内部样式>外部样式>默认样式
继承样式
继承规则
- 子级标签可以继承父级标签的颜色,字体,字号等样式
- 子级标签无法继承父级标签的盒模型样式,例如border等样式无法被继承
如<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<style>
div {
color: green;
border: 1px solid black;
}
</style>
<div>
hello
<h1>hello</h1>
</div>
</body>
</html>
此处h1继承的border与父级div是一个border。
基本选择器和上下文选择器
基本选择器
通过标签选择
在内部样式中直接写标签名即可<style>
h1 {
color: green;
}
</style>
通过class或id选择
<style>
#userid {
/* id选择 */
color: green;
}
.username {
/* class选择 */
color: black;
}
</style>
通过其他属性选择
id名前面添加“#”,class名前面加“.”
在标签名后加[属性=“属性名”]
得到<style>
h1[title="a"] {
color: red;
}
</style>
<h1 title="a">hello</h1>
<h1 title="b">hello</h1>
群组选择
通过“,”分割各元素,可实现群组选择<style>
h1[title="a"],
h1[title="b"] {
color: red;
}
</style>
<h1 title="a">hello</h1>
<h1 title="b">hello</h1>
上下文选择器
子元素选择
通过>来实现选择子元素<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul class="list">
<li class="item">item1</li>
<li class="item">item2</li>
<li class="item">item3</li>
<li class="item">item4</li>
<li class="item">item5</li>
</ul>
<style>
ul.list > li {
color: red;
}
</style>
</body>
</html>
后代元素选择
通过父元素后面加空格,来实现后代元素选择<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<ul class="list">
<li class="item">item1</li>
<li class="item">item2</li>
<ul class="item">
item3
<li class="chirld">name1</li>
<li class="chirld">name2</li>
<li class="chirld">name3</li>
<li class="chirld">name4</li>
<li class="chirld">name5</li>
</ul>
<li class="item">item4</li>
<li class="item">item5</li>
</ul>
<style>
ul.list li {
color: red;
}
</style>
</body>
</html>
相邻兄弟元素选择
通过父元素后加“+”,来实现相邻元素单个选择,父元素后加“~”实现该子元素后所有子元素选择<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul class="list">
<li class="item">item1</li>
<li class="item second">item2</li>
<li class="item">item3
<li class="chirld">name1</li>
<li class="chirld">name2</li>
<li class="chirld">name3</li>
<li class="chirld">name4</li>
<li class="chirld">name5</li>
</li>
<li class="item">item4</li>
<li class="item">item5</li>
</ul>
<style>
li.item.second + * {
color: red;
}
</style>
</body>
</html>
选择器权重
选择器权重的作用
权重的计算方式
css将 id,class,tag看成一个”三位整数”,id -> 百位, class -> 十位, tag -> 个位,选择器每有一个tag,那么该选择器权重+1,每有一个class权重+10,每有一个id权重+100,将三者结果相加得到最终的权重为什么不推荐用id和tag
更多相关文章
- android Widgets
- Android(安卓)仿微信Activity左右切换 【全局配置Activity显示动
- Android(安卓)对话框【Dialog】去除白色边框代码
- 关于CheckBox样式问题
- Android(安卓)对话框【Dialog】去除白色边框代码
- 转:Android(安卓)对话框【Dialog】去除白色边框代码
- android TextView自定义字体样式
- android 登陆、提交数据或加载数据时提示页面
- 剖析Android(安卓)线性布局中的权重(layout_weight)(解答疑惑)