CSS 重要知识点精结(一)

112 阅读3分钟

display 有哪些值? 以及他们的具体使用场景。

  • block 块类型,默认宽度为父元素宽度,可设置宽高,换行显示。
  • none 元素不显示,并从文档流中移除。
  • inline 行内元素类型,默认宽度为内容宽度,不可设置宽高,同行显示。
  • inline-block 默认宽度为内容宽度,可设置宽高,同行显示。
  • list-item 像块类型元素一样显示,并添加样式列表标记。
  • table 此元素会作为块级表格来显示。
  • inherit 规定应该从父元素继承display属性的值。

CSS盒模型

CSS 盒模型包含两种盒子模型

  • IE盒模型 (class标识符:border-box)
  • W3C 标准盒模型(class标识符:content-box)

一个盒子的模型包含以下四个部分

  • 内容(content)
  • 填充(padding)
  • 边界(margin)
  • 边框(border)

那么究竟标准盒模型和W3C盒模型有什么区别呢?

  1. W3C标准盒模型:属性widthheight只包含内容content,不包含borderpadding
  2. IE盒模型:属性widthheight包含contentborderpadding,指的是content +padding+border

在浏览器中使用哪个盒模型可以由box-sizing(CSS新增的属性)控制,默认值为content-box,即标准盒模型;

如果将box-sizing设为border-box则用的是IE盒模型。

在页面中声明了DOCTYPE类型,所有的浏览器都会把盒模型解释为W3C盒模型。

清除浮动

  1. 使用带 clear 属性的空元素在浮动元素后使用一个空元素,如<div class="clear"></div>, 并在 CSS 中赋予 .clear{ clear:both; } 属性, 即可清理浮动。亦可使用<br class="clear"/> 或 <hr class="clear"/> 来进行清理。

  2. 使用 CSS 的 overflow 属性 给浮动元素的容器添加 overflow: hidden;overflow: auto; 可以清除浮动,另外在IE6中还需要出发 hasLayout, 例如为父元素设置容器宽高或设置 zoom: 1

    在添加 overflow 属性后,浮动元素又回到了容器层,把容器高度撑起, 达到了清理浮动的效果。

  3. 给浮动的元素的容器添加浮动 给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使 其整体浮动,影响布局,不推荐使用。

  4. 使用邻接元素处理 什么都不做,给浮动元素后面的元素添加 clear 属性。

  5. 使用 CSS 的 :after 伪元素 结合 :after 伪元素(注意这不是伪类,而是伪元素,代表一个元素之后 最近的元素)和 IEhack ,可以完美兼容当前主流的各大浏览器,这里 的 IEhack 指的是触发 hasLayout。给浮动元素的容器添加一个 clearfix 的 class,然后给这个 class 添加一个:after 伪元素实现元素末 尾添加一个看不见的块元素(Block element)清理浮动。

子元素如何在父元素中居中

  1. 水平居中
  • 子父元素宽度固定,子元素设置 margin:auto,并且子元素不能设置 浮动,否则居中失效
  • 子父元素宽度固定,父元素设置 text-align:center,子元素设置 display:inline-block,并且子元素不能设置浮动,否则居中失效
  1. 水平垂直居中
  • 子元素相对于父元素绝对定位,子元素 top,left 设置 50%,子元素 margin-top 和 margin-left 减去各自宽高的一半

  • 子元素相对于父元素绝对定位,子元素上下左右全为 0,然后设置子元素 margin:auto

  • 父元素设置 display:table-cell vertical-align:middle,子元素设置 margin:auto

  • 子元素相对定位,子元素 top,left 值为 50%,transform:translate (-50%,-50%)

  • 子元素相对父元素绝对定位,子元素 top,left 值为 50%,transform: translate(-50%,-50%)

  • 父元素设置弹性盒子, display:flex; justfy-content:center ;align-items:center; justfy-content:center