Skip to content

Latest commit

 

History

History
71 lines (60 loc) · 3.69 KB

其他.md

File metadata and controls

71 lines (60 loc) · 3.69 KB

CSS盒模型有哪几种,区别,如何设置

  • IE盒子模型:设置的宽高值包括content,padding和border值。设置box-sizing:border-box。
  • 标准的W3C盒子模型:设置的宽高值只包括content。设置box-sizing:content-box。

BFC

  • 定义:BFC是块级格式化上下文,一个独立的渲染区域,只有块级元素参与,规定了内部块级元素的布局方式,且该区域与外部无关。
  • 原理:
    1. 内部的box会在垂直方向,一个接一个的放置
    2. 每个元素的margin box的左边,与包含块的左边相接触(对于从左往右的格式化,否则相反)
    3. box垂直方向的距离由margin决定,属于同一个BFC的两个相邻box的margin会发生重叠
    4. BFC的区域不会与浮动区域的box重叠
    5. BFC是一个页面上的独立的容器,外面的元素不会影响BFC里的元素,反过来,里面的也不会影响外面的
    6. 计算BFC高度的时候,浮动元素也会参与计算
  • 创建BFC的方法
    • float属性不为none(脱离文档流)
    • position为absolute或fixed
    • display为inline-block,table-cell,table-caption,flex,inline-flex
    • overflow不为visible
    • 根元素
  • 应用场景
    • 自适应两栏布局
    • 清除内部浮动
    • 防止垂直margin重叠

CSS样式在哪里设置,区别

  • 外部样式表: link标签引入一个外部css文件,或@import引入
    • link和页面同步加载,@import会等到页面加载完再加载
    • link是XHTML标签,可以定义rss其他事务,@import只能加载css
    • link无兼容问题,@import在ie5以下不兼容
  • 内部样式表:将css代码放在标签内部
  • 内联样式:将css样式直接定义在HTML元素内部

选择器的权重

id>class/attr>tag

css哪些属性可以继承

  • 字体系列:font,font-family,font-weight,font-size,font-style
  • 文本系列:text-align,line-height,direction(字体书写方向),color(除了a标签)
  • 其他:visibility,opacity,cursor

DTD,怪异模式&标准模式

DTD声明定义了标准文档的类型,会使浏览器使用相应的方式加载网页并显示,决定浏览器解析CSS解析模式。忽略DTD声明,将使网页进入怪异模式。 浏览器解析CSS的两种模式:

  • 标准模式(strict mode):浏览器按W3C标准解析执行代码
  • 怪异模式(quirks mode):使用浏览器自己的方式解析执行代码

隐藏页面中的元素方法

  • 完全隐藏:元素从渲染树中消失,不占据空间
    1. display: none
    2. <div hidden></div>:hidden是HTML5新增属性,相当display:none
  • 视觉上的隐藏:屏幕中不可见,占据空间
    1. 移出可视区域:position设置为absolute或fixed,修改top和left;设置margin为超小负数,并且元素高度为0
    2. 缩放:transform:translate(-99999px);height:0;
    3. 设置宽高、字体大小为0
    4. opacity:0;:设置透明度为0
    5. visibility:hidden;
    6. z-index:-9999;position:relative;
    7. clip-path: polygon(0 0, 0 0, 0 0, 0 0);
  • 语义上的隐藏:读屏软件不可读,但正常占据空间,可见
    • <div aria-hidden="true"></div>

伪类和伪元素

  • 伪类与伪元素都是用于向选择器加特殊效果
  • 伪类与伪元素的本质区别就是是否抽象创造了新元素
  • 伪类只要不是互斥可以叠加使用;伪元素在一个选择器中只能出现一次,并且只能出现在末尾
  • 伪类与伪元素优先级分别与类、标签优先级相同
  • 伪类表示的是一种“状态”比如hover,active等等,而伪元素表示文档的某个确定部分的表现,比如::first-line 伪元素只作用于你前面元素选择器确定的一个元素的第一行。