学习前端-css第三天

117 阅读4分钟

css盒子模型

- 什么叫盒子模型

  • 浏览器在渲染网页时,把网页中的元素当做一个个矩形区域来显示,所以标签可以叫做元素也可以叫做盒子。

  • css中规定一个盒子分别由:内容区域(content),内边距区域(padding),边框区域(border),外边距区域(margin)构成。

- 内容区域的宽度和高度

  • 盒子内容(content):由width和heighht属性默认设置的是盒子的内容大小。

- 边框

  • 边框属性名:border(border是一个复合属性);
  • 一般书写方法:border:1px solid red;
  • solid属性一般能设置三种:solid(实线),dashed(虚线),dotted(点线);
  • border可以单独设置四边的样式。

- 内边距

  • 属性名:padding(上 右 下 左)。

- 外边距

  • 属性名:margin(上 右 下 左)。
  • {margin:0 auto}。auto可以居中,设置了宽度,auto会自动用父元素宽度-自身宽度/2设为左右间距。
  • 行内标签设置margin或padding垂直效果不生效(设置行高就行了)。

- 外边距折叠现象-合并现象

  • 块级元素垂直布局margin会合并取最大值(忽视就好)。

- 外边距折叠现象-塌陷问题

  • 块级元素嵌套,子元素margin-top会作用在父级元素上,导致父级元素一块下移。 解决办法:
  1. 给父元素设置border-top或者padding-top(分割父子元素的的margin-top);
  2. 给父元素设置overflow:hidden;
  3. 转成行内块元素;
  4. 设置浮动。

  • 设置了边框内外边距会自动加在盒子的宽高上
  • 解决办法:设置內减模式:box-sizing:border-box;
  • 一些标签自带默认的样式
  1. 清除默认内外边距可以用:
  • {padding:0;margin:0;}
  1. 清除a标签下划线:
  • a{text-decoration:none}
  1. 清除列表样式:
  • li{list-style:none;}

结构伪类选择器

  • 作用:根据元素在html中通过结构关系查找元素的选择器。
  • 优势:减少html中对类的依赖,有助于保持代码整洁。
  • 场景:常用与查找父级元素的子元素。
  1. 标签名:first-hild{} ——>查找父元素中第一个这个标签名的元素。
  2. 标签名:list-hild{} ——>查找父元素中最后一个这个标签名的元素。
  3. 标签名:nth-hild(n){} ——>查找父元素中第n个这个标签名的元素。
  4. 标签名:nth-list-hild(n){} ——>查找父元素中倒数第n个这个标签名的元素:
  • 设置相同样式的时候n可以写公式2n(所有的偶数项),2n+1(所有的奇数项),-n+5(前五项),n+5(第五项以后的)。。。<n取值从0,1,2,3...>

伪元素

  • 由css模拟的标签效果:一般页面中的非主题内容可以使用 ::before 在父元素内容的最前添加一个伪元素
    ::after 在父元素内容的最后添加一个伪元素
  • 伪元素必须设置congtent属性才能生效。
  • 伪元素默认是行内元素。

浮动

浮动的作用

  • 早期作用:图文环绕。
  • 现在的作用:网页布局。

浮动的特点

  • 浮动元素会脱离标准流,在标准流中不占位置。
  • 浮动元素比标准流高半个级别,可以覆盖标准流中的元素。
  • 浮动找浮动,浮动元素会在上一个浮动元素的后面显示(顶对齐)。
  • 浮动元素有特殊的显示效果:行内块的显示和效果。
  • 当宽度不够时浮动元素会自动换行。

清除浮动

  • 如果子元素浮动了,此时子元素不能撑开标准流的块级父元素。
  • 因为子元素浮动后脱离标准流,不占标准流的位置。
  • 清除浮动的目的:需要父元素有高度,从而不影响其他网页元素的布局。

清除浮动的方法:

  1. 直接设置父元素的高度(简单方便,但是有些布局不允许我们固定父元素的高度)。
  2. 额外标签法:在父元素内容的最后添加一个块级元素并设置clear:both(额外的标签,使代码复杂化)。
  3. 单伪元素清除法:用伪元素代替了额外标签法——>
  • .clearfix::after{content:'';display:block;clear:both;(height:0;visibility:hidden;这两个属性时候解决浏览器兼容性的)}
  1. 双伪元素清除法:
  • .clearfix::before,.clearfix::after{content:'';display:table;}(这个时是为了解决外边距塌陷问题)
  • .clearfix::after{clear:both;}
  1. 直接给父元素设置overflow:hidden;

css的书写顺序:先浮动/display——>盒子模式的属性:margin,padding,border,宽高背景——>文本属性

<css书写从外到内:先宽高背景——>放内容——>调节内容位置——>设置内容样式>.