一、CSS三大特性
1、层叠性
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题
层叠性原则:
样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式;当然样式不冲突,不会层叠
2、继承性
CSS中的继承: 子标签会继承父标签的某些样式,如文本颜色和字号。
元素可以继承父元素的样式:text-,font-,line-这些元素开头的可以继承,以及color属性。
行高的继承:
例:body {
font:12px/1.5 Microsoft YaHei;
}
1.行高可以跟单位也可以不跟单位
2.如果子元素没有设置行高,则会继承父元素的行高为 1.5
3。此时子元素的行高是:当前子元素的文字大小 * 1.5
4.body 行高 1.5 这样写法最大的优势就是里面子元素可以根据自己文字大小自动调整行高
3、优先级
当同一个元素指定多个选择器,就会有优先级的产生。
1.选择器相同,则执行层叠性
2.选择器不同,则根据选择器权重执行
选择器 选择器权重
继承或* 0,0,0,0
元素选择器 0,0,0,1
类选择器或伪类选择器 0,0,1,0
id选择器 0,1,0,0
行内样式style=“” 1,0,0,0
!important 无穷大
优先级注意点:
- 权重是有4组数字组成,但是不会有进位。
- 可以理解为类选择器永远大于元素选择器, id选择器永远大于类选择器,以此类推…
- 等级判断从左向右,如果某一位数值相同,则判断下一位数值。
权重叠加:如果是复合选择器,则会有权重叠加,需要计算权重。
- div ul li------>0,0,0,3
- .nav ul li------>0,0,1,2
- a:hover ------>0,0,1,1
- .nav a ------>0,0,1,1
二、盒子模型
网页布局的核心本质: 就是利用 CSS 摆盒子;
CSS 盒子模型本质上是一个盒子,它包括:边框、外边距、内边距、和 实际内容
1、边框(border)
border可以设置元素的边框。边框有三部分组成:边框宽度(粗细) 边框样式 边框颜色;
属性 作用
border-width 定义边框粗细,单位是px
border-style 边框的样式(实线、虚线等)
border-color 边框的颜色
边框样式 border-style 可以设置如下值:
- none:没有边框即忽略所有边框的宽度(默认值)
- solid:边框为单实线(最为常用的)
- dashed:边框为虚线
- dotted:边框为点线
边框可以合写:border:1px solid red;中间用空格分开,可以打乱顺序。
border-top: 1px solid red; 是只设置上边框,其余同理。
表格的细线边框:border-collapse: collapse; 表示相邻边框合并在一起。
边框会额外增加盒子的实际大小。
2、内边距(padding)
padding 属性用于设置内边距,即边框与内容之间的距离。
语法:
分写
属性 作用
padding-left 左边边距
padding-right 右内边距
padding-top 上内边距
padding-bottom 下内边距
合写
值得个数 表达意思
padding:5px; 1个值代表上下左右都有5像素的内边距
padding:5px 10px; 2个值代表上下内边距是5px,左右内边距是10px
padding:5px 10px 15px; 3个值代表上内边距是5px,左右内边距是10px,下内边距是15px
padding:5px 10px 15px 20px ; 4个值代表上是5px,右是10px,下是15px,左是20px,顺时针
内边距会影响盒子实际大小
1、当我们给盒子指定 padding 值之后,发生了 2 件事情:
- 内容和边框有了距离,添加了内边距。
- padding影响了盒子实际大小。
内边距对盒子大小的影响:
- 如果盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子。
- 如何盒子本身没有指定width/height属性, 则此时padding不会撑开盒子大小。
3、外边距
margin 属性用于设置外边距,即控制盒子和盒子之间的距离。
属性 作用
margin-left 左外距离
margin-right 右外边距
margin-top 上外边距
margin-bottom 下外边距
外边距可以让块级盒子水平居中的两个条件:
- 盒子必须指定了宽度(width)。
- 盒子左右的外边距都设置为 auto 。
三种写法
1.margin-left:auto;margin-right:auto;
2.margin:auto;
3.margin:0 auto;
注意:以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可
外边距合并;
使用 margin 定义块元素的垂直外边距时,可能会出现外边距的合并。
主要有两种情况:
1、相邻块元素垂直外边距的合并
当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距 margin-bottom,下面的元素有上外边距 margin-top ,则他们之间的垂直间距不是 margin-bottom 与 margin-top 之和。取两个值中的较大者这种现象被称为相邻块元素垂直外边距的合并。
解决方案:尽量只给一个盒子添加 margin 值。
2、嵌套块元素垂直外边距的塌陷
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
解决方案:
- 可以为父元素定义上边框。
- 可以为父元素定义上内边距。
- 可以为父元素添加 overflow:hidden。