一、基础选择器
- 标签选择器:标签名 { css属性名:属性值; }
- 类选择器:.类名 { css属性名:属性值; }
- id选择器:#id属性值 { css属性名:属性值; }
- 通配符选择器:* { css属性名:属性值; }
二、字体和文本样式
字体样式
Ø 字体大小: font-size
•数字+px
Ø 字体粗细:font-weight
•正常:normal 或 400
• 加粗:bold 或 700
Ø 字体样式:font-style
• 正常:normal • 倾斜:italic
Ø 字体系列:font-family
• 具体字体1,具体字体2,具体字体3,具体字体4,...,字体系列
Ø 字体连写:font
• font : style weight size family;(顺序不能错,省略只能省略前两个)
文本样式
text-align : center 能让那些元素水平居中?
- 文本
- span标签、a标签
- input标签、img标签
Ø 注意点: 1. 如果需要让以上元素水平居中, text-align : center 需要给以上元素的 父元素 设置
如果需要让div、p、h(大盒子)水平居中?
可以给大盒子本身设置margin : 0 auto ; 实现
行高
属性名:line-height 作用:控制一行的上下行间距
取值:line-height :数字+px/倍数(当前标签font-size的倍数)
应用:
- 让单行文本垂直居中可以设置 line-height : 文字父元素高度
- 网页精准布局时,会设置 line-height : 1 可以取消上下间距
三、选择器进阶
1.后代选择器:空格
作用:根据 HTML 标签的嵌套关系,选择父元素 后代中 满足条件的元素
选择器语法:选择器1 选择器2 { css }
2 .子代选择器:>
作用:根据 HTML 标签的嵌套关系,选择父元素 子代中 满足条件的元素
选择器语法:选择器1 > 选择器2 { css }
3.并集选择器:,
作用:同时选择多组标签,设置相同的样式
选择器语法:选择器1 , 选择器2 { css }
4.交集选择器:紧挨着
作用:选中页面中 同时满足 多个选择器的标签
选择器语法:选择器1选择器2 { css }
5.emmet语法
作用:通过简写语法,快速生成代码
总结:
6.hover伪类选择器
作用:选中鼠标悬停在元素上的状态,设置样式
选择器语法:选择器:hover { css }
6.1 链接伪类选择器
场景:常用于选中超链接的不同状态
选择器语法:
如果需要同时实现以上四种伪类状态效果,需要按照 LVHA 顺序书写
6.2焦点伪类选择器
场景:用于选中元素获取焦点时状态,常用于表单控件
选择器语法:
input:focus {
background-color:blue;
效果: • 表单控件获取焦点时默认会显示外部轮廓线
7.属性选择器
场景:通过元素上的HTML属性来选择元素,常用于选择 input 标签
选择器语法:
四、背景相关
1.背景颜色
属性名:background-color(bgc)
2.背景图片
属性名:background-image(bgi):url('图片路径')
3.背景平铺
属性名:background-repeat(bgr)
4.背景位置
属性名:background-position(bgp): 水平方向位置 垂直方向位置
注意:如果背景图的宽没有盒子宽,在设置水平方向为center的时候会将背景图水平居中放置,如果背景图的宽比盒子宽时,会将背景图水平方向的中心位置放置在盒子水平放心的中心位置,此时背景图的左右两边就会有一部分看不见。
垂直方向同理。
5.背景图片大小
background-size:宽度 高度;
完整连写:
< br >
五、元素显示模式
1 块级元素
属性:display:block
显示特点:
- 独占一行(一行只能显示一个)
- 宽度默认是父元素的宽度,高度默认由内容撑开
- 可以设置宽高
Ø 代表标签: • div、p、h系列、ul、li、dl、dt、dd、form、header、nav、footer……
2.行内元素
属性:display:inline
显示特点:
- 一行可以显示多个
- 宽度和高度默认由内容撑开
- 不可以设置宽高
Ø 代表标签: • a、span 、b、u、i、s、strong、ins、em、del……
3.行内块元素
属性:display:inline-block
显示特点:
- 一行可以显示多个
- 可以设置宽高
Ø 代表标签: • input、textarea、button、select……
特殊情况:img标签有行内块元素特点,但是Chrome调试工具中显示结果是inline
六、CSS 三大特性
继承性、层叠性、优先级
继承性
特性:子元素有默认继承父元素样式的特点(子承父业)
可以继承的常见属性:
- color
- font-style、font-weight、font-size、font-family
- text-indent、text-align
- line-height
- ……
层叠性
特性: 1. 给同一个标签设置不同的样式 → 此时样式会层叠叠加 → 会共同作用在标签上 2. 给同一个标签设置相同的样式 → 此时样式会层叠覆盖 → 最终写在最后的样式会生效
优先级
特性:不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低选择器样式
优先级公式: 继承 < 通配符选择器 < 标签选择器 < 类选择器 < id选择器 <行内样式 < !important
注意点: 1. !important写在属性值的后面,分号的前面!
- !important不能提升继承的优先级,只要是继承优先级最低!
- 实际开发中不建议使用 !important 。
权重叠加计算
七、盒子模型
CSS 中规定每个盒子分别由:内容区域(content)、内边距区域(padding)、边框区域(border)、外边距区域(margin )构成,这就是 盒子模型
边框(border)- 单个属性
边框(border)- 连写形式:
border : 10px solid red;
内边距(padding)- 取值
注意:
在给盒子设置边框和内边距的时候会撑大盒子,如果不想撑大盒子,可以采用以下方法:
1.手动内减
2.自动内减 :给盒子设置属性 box-sizing : border-box ; 即可,浏览器会自动计算多余大小,自动在内容中减去
外边距(margin)- 取值
行内元素的margin和padding无效情况
场景:给行内元素设置margin和padding时
结果:
- 水平方向的margin和padding布局中有效!
- 垂直方向的margin和padding布局中无效!
八、结构伪类选择器
1-作用与优势:
- 作用:根据元素在HTML中的结构关系查找元素
- 优势:减少对于HTML中类的依赖,有利于保持代码整洁
- 场景:常用于查找某父级选择器中的子元素
2- 选择器
注意点
九、伪元素
元素:HTML 设置的标签
伪元素:由 CSS 模拟出的标签效果
- 必须设置content属性才能生效
- 伪元素默认是行内元素
十、浮动
属性名:float 属性值:left(左浮动) right(右浮动)
作用:早期作用:图文环绕。 现在作用:用于布局,让垂直布局的盒子变成水平布局,如:一个在左,一个在右
特点:
- 浮动元素会脱离标准流(简称:脱标),在标准流中不占位置 • 相当于从地面飘到了空中
- 浮动元素比标准流高半个级别,可以覆盖标准流中的元素
- 浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动
- 浮动元素会受到上面元素边界的影响
- 浮动元素有特殊的显示效果 • 一行可以显示多个 • 可以设置宽高
注意点: • 浮动的元素不能通过text-align:center或者margin:0 auto,让浮动元素本身水平居中
十一、清除浮动
为什么要清除浮动:如果子元素浮动了,此时子元素不能撑开标准流的块级父元素(子元素浮动后脱标 → 不占位置),清除浮动可以使父元素有高度,从而不影响其他网页元素的布局。
清除浮动的方法
1.直接设置父元素高度
• 优点:简单粗暴,方便
• 缺点:有些布局中不能固定父元素高度。如:新闻列表、京东推荐模块
2.额外标签法
先在父元素内容的最后添加一个块级元素,然后给添加的块级元素设置 clear:both
• 缺点:会在页面中添加额外的标签,会让页面的HTML结构变得复杂
3.单伪元素清除法
操作:用伪元素替代了额外标签
.clearfix::after {
content: '';
display: block;
clear: both;
/* 补充代码:在网页中看不到伪元素 */
height: 0;
visibility: hidden;
}
优点:项目中使用,直接给标签加类即可清除浮动
4.双伪元素清除法
.clearfix::before,
.clearfix::after {
content: '';
display: table;
}
.clearfix::after {
clear: both;
}
优点:项目中使用,直接给标签加类即可清除浮动
5.给父元素设置overflow : hidden
直接给父元素设置 overflow : hidden
优点:方便
十二、定位
定位的作用:
- 可以让元素自由的摆放在网页的任意位置
- 一般用于 盒子之间的层叠情况
1.静态定位
介绍:静态定位是默认值,就是之前认识的标准流。
代码:position:static
2.相对定位
介绍:自恋型定位,相对于自己之前的位置进行移动
代码:position:relative
特点:
- 需要配合方位属性实现移动
- 相对于自己原来位置进行移动
- 在页面中占位置 → 没有脱标
应用场景: - 配合绝对定位组CP(子绝父相)
- 用于小范围的移动
3.绝对定位
介绍:拼爹型定位,相对于非静态定位的父元素进行定位移动
代码:position:absolute
特点:
- 需要配合方位属性实现移动
- 默认相对于浏览器可视区域进行移动
- 在页面中不占位置 → 已经脱标
应用场景: - 配合绝对定位组CP(子绝父相)
4.固定定位
介绍:死心眼型定位,相对于浏览器进行定位移动
代码:position:fixed
特点:
- 需要配合方位属性实现移动
- 相对于浏览器可视区域进行移动
- 在页面中不占位置 → 已经脱标
应用场景: - 让盒子固定在屏幕中的某个位置
5.定位总结:
绝对定位相对于谁移动?
- 祖先元素中没有定位 → 默认相对于浏览器进行移动
- 祖先元素中有定位 → 相对于 最近的 有定位 的祖先元素进行移动
子绝父相水平垂直居中操作:
- 子绝父相
- left:50%;
- top:50%;
- transform:translate(-50%,-50%);
元素层级问题
不同布局方式元素的层级关系:
•标准流 < 浮动 < 定位
不同定位之间的层级关系:
•相对、绝对、固定默认层级相同
• 此时HTML中写在下面的元素层级更高,会覆盖上面的元素
更改定位元素的层级
属性名:z-index
属性值:数字
• 数字越大,层级越高
十三、装饰
1.垂直对齐方式
作用:解决行内/行内块元素垂直对齐问题
例如:当图片和文字在一行中显示时,其实底部不是对齐的
垂直对齐方法:
属性名:vertical-align
属性值:
(拓展)项目中 vertical-align 可以解决的问题
- 文本框和表单按钮无法对齐问题
- input和img无法对齐问题
- div中的文本框,文本框无法贴顶问题
- div不设高度由img标签撑开,此时img标签下面会存在额外间隙问题
- 使用line-height让img标签垂直居中问题
注意点:
• 学习浮动之后,不推荐使用行内块元素让div一行中显示,因为可能会出现垂直对齐问题
• 推荐优先使用浮动完成效果
2.光标类型
场景:设置鼠标光标在元素上时显示的样式
属性名:cursor
常见属性值:
3.边框圆角
场景:让盒子四个角变得圆润,增加页面细节,提升用户体验
属性名:border-radius
常见取值:数字+px 、百分比
赋值规则:从左上角开始赋值,然后顺时针赋值,没有赋值的看对角!
4.overflow溢出部分显示效果
溢出部分:指的是盒子 内容部分 所超出盒子范围的区域
场景:控制内容溢出部分的显示效果,如:显示、隐藏、滚动条……
属性名:overflow
常见属性值:
5.元素本身隐藏
场景:让某元素本身在屏幕中不可见。如:鼠标:hover之后元素隐藏
常见属性:
- visibility:hidden
- display:none
区别:
- visibility:hidden 隐藏元素本身,并且在网页中 占位置
- display:none 隐藏元素本身,并且在网页中 不占位置
注意点:
• 开发中经常会通过 display属性完成元素的显示隐藏切换
• display:none;(隐藏)、 display:block;(显示)
(拓展)元素整体透明度
场景:让某元素整体(包括内容)一起变透明
属性名:opacity
属性值:0~1之间的数字
• 1:表示完全不透明
• 0:表示完全透明
注意点: • opacity会让元素整体透明,包括里面的内容,如:文字、子元素等……
(拓展)边框合并
场景:让相邻表格边框进行合并,得到细线边框效果
代码:border-collapse:collapse;
用CSS画三角形技巧(面试题)
场景:在网页中展示出小三角形时,除了可以使用图片外,还可以使用代码完成。
实现原理: • 利用盒子边框完成
实现步骤:
- 设置一个盒子
- 设置四周不同颜色的边框
- 将盒子宽高设置为0,仅保留边框
-
得到四个三角形,选择其中一个后,其他三角形(边框)设置颜色为透明
image.png
拓展:通过调整不同边框的宽度,可以调整三角形的形态
利用此原理还可作出类似效果
十四.样式补充
1.精灵图
场景:项目中将多张小图片,合并成一张大图片,这张大图片称之为精灵图
优点:减少服务器发送次数,减轻服务器的压力,提高页面加载速度
精灵图的使用步骤 :
- 创建一个盒子
- 通过PxCook量取小图片大小,将小图片的宽高设置给盒子
- 将精灵图设置为盒子的背景图片
- 通过PxCook测量小图片左上角坐标,分别取负值设置给盒子的background-position:x y
3.文字阴影
作用:给文字添加阴影效果,吸引用户注意
属性名:text-shadow
阴影可以叠加设置,每组阴影取值之间以逗号隔开
4.盒子阴影
作用:给盒子添加阴影效果,吸引用户注意,体现页面的制作细节
属性名:box-shadow
5.过渡
作用:让元素的样式慢慢的变化,常配合hover使用,增强网页交互体验
属性名:transition
注意点:
- 过渡需要:默认状态 和 hover状态样式不同,才能有过渡效果
- transition属性给需要过渡的元素本身加
- transition属性设置在不同状态中,效果不同的 ① 给默认状态设置,鼠标移入移出都有过渡效果 ② 给hover状态设置,鼠标移入有过渡效果,移出没有过渡效果
过度属性也是可以叠加设置,每组过度取值之间以逗号隔开
6.轮廓线outline
给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。
input {outline: none; }
7.防止拖拽文本域 resize
实际开发中,我们文本域右下角是不可以拖拽的
textarea{ resize: none;}
文本域也可以设置outline:none;
8.溢出的文字省略号显示\
- 单行文本溢出显示省略号--必须满足三个条件
/*1. 先强制一行内显示文本*/
white-space: nowrap; ( 默认 normal 自动换行)
/*2. 超出的部分隐藏*/
overflow: hidden;
/*3. 文字用省略号替代超出的部分*/
text-overflow: ellipsis;
- 多行文本溢出显示省略号
多行文本溢出显示省略号,有较大兼容性问题, 适合于webKit浏览器或移动端(移动端大部分是webkit内核)
`overflow: hidden;
text-overflow: ellipsis;
/* 弹性伸缩盒子模型显示 */
display: -webkit-box;
/* 限制在一个块元素显示的文本的行数 */
-webkit-line-clamp: 2;
/* 设置或检索伸缩盒对象的子元素的排列方式 */
-webkit-box-orient: vertical;