CSS全称Cascading Style Sheet 层叠样式表,层叠的概念和PS中的图层类似,样式表一层一层覆盖着,效果叠加在一起。
书写方式
CSS有三种书写方式,分别是内联样式(行内样式)、内部样式表,外部样式表。
内联样式是在指定标签内部通过style属性设置元素的样式,多个样式采用分号;分隔。一般不常用,因为这种方式只会对当前元素生效,无法对多个元素同时生效。并且不利于样式的维护。
<p style="color: green; font-size: 30px;">HelloWorld</p>
内部样式表是在<head>标签中插入一个<style>标签,书写元素的样式,可以对多个元素设置样式,方便维护。
<head>
<style>
p {
color: green;
font-size: 30px;
}
</style>
</head>
外部样式表是将CSS样式编写到一个外部的CSS后缀名的文件中,然后通过<link>标签引入。可以使用浏览器的缓存机制,从而加快网页的加载速度,提高用户体验。
<link rel="stylesheet" href="./index.css">
样式继承
我们为一个元素设置的样式同时也会应用到它的后代元素上,继承的设计是为了方便我们的开发。但并不是所有的样式都会被继承,比如背景相关的、布局相关等样式都不会继承。
单位
长度单位分为像素和百分比以及em,rem。
-
像素 屏幕(显示器)实际上是由一个一个的点构成的,像素点越小的屏幕显示的效果越清晰。
-
百分比 可以设置子元素的长度属性值单位为相对于父元素属性的百分比。
<head>
<style>
.box1 {
width: 200px;
height: 200px;
background-color: orange;
}
.box2 {
width: 50%;
height: 50%;
background-color: green;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2"></div>
</div>
</body>
- em是相对于元素的字体大小计算的(1em = 1 * font-size),em会根据字体大小改变而改变,浏览器默认字体大小
16px,所以这里box3的宽高相当于160px。
.box3 {
width: 10em;
height: 10em;
background-color: pink;
}
- rem 是相对于根元素(html)的字体大小计算。
颜色单位有RGB、RGBA、16进制和HSL,或者直接用颜色名表示。
- 用颜色名设置各种颜色,比如red green blue(不常用)。
div {
color: red;
}
- 用RGB(red green blue)值的不同浓度表示不同的颜色,基于光的三原色。颜色浓度范围可以用 0 - 255表示,也可以用百分比(0% - 100%)表示。
div {
color: rgb(255, 0 ,0);
}
div {
color: rgb(100%, 0 ,0);
}
- RGBA 在RGB的基础上增加了一个A(alpha)表示不透明度。A的取值范围是(1 - 0),1表示完全不透明,0表示完全透明,0.5表示半透明。
div {
color: rgba(255, 0 ,0, .5);
}
- 用16进制设置颜色,#00-ff,本质上依旧是用RGB方式表示。
div {
color: #fffff;
}
- HSL H 色相 0 - 360 | S 饱和度 0% - 100% | L 亮度 0% - 100%
浏览器的默认样式
通常情况下,浏览器会为元素设置一些默认样式,默认样式会影响页面的布局,所以通常情况下需要去除浏览器的默认样式。
行内块元素和行内元素换行/空格都有文本分隔符问题, 比如多个图片之间有间隙,多个a标签之间也有间隙。
- 去除换行
<img src="./img/1.jpg" alt=""
><img src="./img/1.jpg" alt=""
><img src="./img/1.jpg" alt=""
><img src="./img/1.jpg" alt="">
当子元素没设置宽度,则会继承父元素的宽度,该状态下若给子元素添加padding,盒子大小不会发生改变,而是通过减少content的大小达到平衡。
常用的CSS属性
轮廓线阴影圆角
outline 用来设置元素的轮廓线,用法和边框一样,区别在于不会影响可见框的大小。
box-shadow 用来设置元素的阴影效果,不会影响页面布局,它有四个值需要设定。
.box1 {
width: 200px;
height: 200px;
background-color: #bfa;
box-shadow: 10px 10px 50px orange;
}
- 第一个值 水平偏移量 设置阴影的水平位置,正值向右移动,负值向左移动。
- 第二个值 垂直偏移量 设置阴影的垂直位置,正值向下移动,负值向上移动。
- 第三个值 阴影的模糊半径
- 第四个值 阴影的颜色。
字体
font-size属性 字体框是字体存在的格子,设置font-size实际上就是在设置字体框的高度。宽度是自动缩放的,默认字体大小 16px。
font-family属性 用于设置字体风格(字体的格式),可以同时指定多个字体,多个字体间使用逗号,隔开,字体生效时优先使用第一个,第一个无法使用则使用第二个,以此类推。注意有空格的字体标识/中文字体标识需要加引号""。
还有有三种不同的兜底字体,兜底字体用于之前定义的其它字体都无法使用时所采用的备用字体。
- serif 衬线字体
- sans-serif 非衬线字体
- monospace 等宽字体
p {
color: red;
font-size: 40px;
font-family: tahoma,arial,Microsoft YaHei,Hiragino Sans GB,"\u5b8b\u4f53",sans-serif;
}
@font-face属性 可以将服务器中的字体直接提供给用户去使用,加载速度较慢,还会涉及版权问题。
@font-face {
/* 指定字体的名字 */
font-family: 'myfont';
/* 服务器中字体的路径 */
src: url('');
}
iconfont(图标字体),在网页中经常需要使用一些图标,可以通过图片引入图标,但是图片相对于字体文件而言是比较大的,非常不灵活。所以使用图标时可以将图标直接设置为字体,通过font-face属性对字体进行引入。
可以去fontAwesome网站下载图标字体,使用方法有三种,通过类/伪元素/实体字符设置。
通过类设置图标字体, 比如fas是固定的类名,后面的fa-bell是根据需求选择不同的类名。
<i class="fas fa-bell"></i>
通过伪元素设置图标字体
- 找到要设置图标的元素通过before和after选中
- 在content中设置字体的编码
- 通过font-family设置字体的样式
li::before {
content: "\f1b0";
font-family: "Font Awesome 5 Free";
font-weight: 900;
}
<li>HelloWorld!</li>
<li>HelloWorld!</li>
<li>HelloWorld!</li>
通过实体字符使用
<span class="fas"></span>
line-height属性 可以通过设置行高,行高指的是单行文字占有的实际高度。
- 默认行高是字体大小的1.33倍。
- 行高可以直接指定一个大小,单位是px或em。
- 行高也可以设置为一个整数,表示当前字体大小的指定倍数。
行高会在字体框的上下平均分配,所以可以将行高设置为高度一样的值,使单行文字在一个元素中垂直居中。
行间距 = 行高 - 字体大小
font属性 字体简写,通过font属性设置字体的所有属性,字体大小和字体组是必写项。
- font: font-weight font-style font-size/line-height font-family;
- 行高可以不写,如果不写则使用默认值。
font-weight属性 设置字重
font-style属性 字体风格 是否斜体
文本
text-align属性 设置文本的水平对齐
- left
- right
- center
- justify 两端对齐
vertical-align属性 设置文本的垂直对齐
- baseline 默认值 基线对齐
- top 顶部对齐
- bottom 底部对齐
- middle 居中对齐
- 指定数值
容器内多行文本居中,以下方法是根据表格设置vertical-align具有特性,所有内容都会居中。
- 将容器的display设置成table
- 将容器内的文本的display设置为table-cell(表格单元格属性)
- 将容器内的文本的vertical-align设置为middle
div {
display: table;
width: 100px;
height: 100px;
border: 1px solid #000;
}
span {
display: table-cell;
vertical-align: middle;
}
图片的垂直方向会有个距离,这个距离是图片的基线,图片默认对齐方式是基线对齐。取消这个距离的方法就是给图片的vertical-align设置其它值。
text-indent属性 设置缩进,默认1em = 16px
text-decoration 文本修饰属性,和border有点类似,设置类型、样式(solid、dotted等)和颜色,类型可以设置以下值:
- none
- underline 下划线
- line-through 删除线
- overline 上划线
white-space属性 设置网页如何处理空白, 可以设置以下值:
- normal 正常
- nowrap 不换行
- pre 保留
text-overflow属性 设置网页文本溢出,以下代码可以做出单行文本溢出省略号的效果
div {
width: 200px;
height: 22px;
border: 1px solid #000;
white-space: nowrap; /* 不换行 */
overflow: hidden; /* 溢出隐藏 */
text-overflow: ellipsis; /* 隐藏部分加省略号 */
}
表格
border-collapse属性 设置单元格边框是否合并
- separate (默认值)边框独立
- collapse 相邻边框合并
border-spacing属性 设置边框之间的距离
table-layout属性 设置单元格宽度
- fixed 基于表格宽度固定单元格宽度
- auto 基于单元格内容自动设置宽度
text-align 单元格内容对齐方式
书写顺序
显示属性
displaypositionfloatclear
自身属性
widthheightmarginpaddingborderbackground
文本属性
colorfonttext-alignverticalalignwhitespace