CSS核心样式2

156 阅读5分钟

清除默认样式

  • 大部分标签都有一个浏览器加载的默认样式,会对布局造成一些影响,为了避免默认样式对整体布局效果造成影响,一定要清楚默认样式
  • 盒模型属性中内外边距:大部分容器标签都有默认边距,要么用标签选择器的并集方式,要么通配符清除
  • ul和ol俩种列表有默认的列表前缀:清楚list-style属性
  • a标签的默认样式,顺带设置页面中常用的a的公共样式:设置color和text-decoration
  • 清楚默认加粗效果:font-weight属性

image.png

  • 还可以给body标签设置整体文字样式,让大部分后代标签全部去继承

image.png

height应用

  • 根据不同的需求,高度属性可以设置也可以不设置
  • 如果设置高度:盒子占有的高度位置就确定死了,后面的同级元素会紧挨着加载;

设计图中盒子高度占位是固定的,后面同级元素在高度下面加载,自身盒子内部内容过多会溢出盒子区域。

overflow属性

设置了高度的盒子,如果内部元素的加载高度超过父级,会出现溢出效果。可以通过一个溢出的属性overflow,进行溢出部分内容的显示效果设置。

image.png

  • 如果不设置高度:会根据标签内部内容高度自动撑开。

必须不设置高度:要求盒子高度必须自适应内部内容的高度,或者设置height的属性值是自动的。

居中

文本水平居中

水平居中:text-align属性

不论单行或者多行都可以设置

image.png

文本垂直居中

单行文本垂直居中:让文字行高line-height等于盒子高度height

多行文本垂直居中:让元素高度自适应或者正好等于多行文字的高度,设置元素内边距上下值相同

元素垂直居中

一个元素内部嵌套的子元素,在父元素中居中

垂直居中:多行文字类似,让父元素高度自适应,子元素高度自动撑开父级的高度,再给父元素设置相同的上下边距。

元素水平居中

如果子盒子宽度低于父盒子宽度,可以设置子盒子的margin值,水平方向的值都设置为auto。

  • 原因:auto只在水平方向有作用,水平方向的margin如果设置为auto,边距会自动无限增大,直到撑满整个父元素除了子元素宽度自外剩余的区域,如果俩个水平方向都是auto,两边都要无线大,只能达到一个平衡,两边距离相同,导致盒子居中。

父子盒模型

一般情况下,一个父元素内部可以放一个或多个子元素,而且多个子元素要排成一行显示,必须保证父元素的宽度一定足够(不考虑溢出情况),需要遵循一个设置尺寸的规律:所有子元素的宽度加在一起不能大于父元素的宽度width。

父元素的width≥所有子元素width+padding+border+margin

如果不满足条件:要么多余的子元素掉下来不能排成一行,要么溢出父元素 image.png

margin塌陷现象

margin塌陷现象:在垂直方向如果有俩个元素的外边距有相遇的,浏览器中加载的真正的外边距不是俩个间距的加和,而是两个边距中值最大的。边距值小的塌陷到了边距值大的值内部。

同级元素塌陷

上面的元素有下边距,下面的元素有上边距,俩个边距相遇,真正的盒子间距离是较大的那个值

image.png

父子元素塌陷

父子元素之间也会出现margin塌陷,父元素和子元素都设置了同方向的margin-top值,两个属性之间没有其他的内容进行隔离,导致俩个属性相遇,发生margin塌陷

image.png   image.png

解决方法

  1. 同级元素:如果俩个元素垂直方向有间距,只需要设置给一个元素,不要进行拆分。
  2. 父子元素:让俩个边距不要相遇,中间可以使用父元素border或padding将间距分隔开(不建议)。
  3. 为盒子附加bfc属性。

标准文档流

  • 标准文档流,指的是元素排版布局过程中,元素会默认自动从左往右,从上往下的流式排列方式,前面内容发生了变化,后面的内容位置也会随着发生变化
  • HTML就是一种标准文档流的文件
  • HTML中的标准文档流特点通过两种方式体现:微观现象和元素等级

微观现象

  1. 空白折叠现象
  2. 文字类的元素如果排在一行会出现一种高低不齐、底边对齐效果
  3. 自动换行,元素内一行内容写满元素的width时会自动进行换行

显示模式display

标准流中的元素有自己默认的浏览器加载模式,但是加载模式不是一成不变的,后期可以通过display属性更改一个标签的显示模式

属性值:元素根据属性值不同,可以加载对应元素等级的显示模式的特点

image.png

image.png