所有 HTML 元素都可以看作盒子
box-sizing: content-box
element width(元素实际宽度) = width + border + padding
box-sizing: border-box
element width (元素实际宽度) = width
!important > 行内样式 > ID 选择器 > 类选择器 > 标签选择器 > 通配符 > 继承
行内样式:1,0,0,0
ID选择器:0,1,0,0
类选择器、属性选择器或伪类:0,0,1,0
元素和伪元素:0,0,0,1
!important优先级最高
权重相同时,后面的样式优先级高
伪选择器专门用来选择特殊区域或者特殊状态下的元素或者对象,这些特殊区域或者特殊状态是无法通过标签选择器,ID选择器或者类选择器进行精确控制的
块级元素:div、p、h1~h6、ul、ol、dl、li、dd、table、hr、blockquote、address、table、menu、pre,HTML5新增的header、section、aside、footer等
行内元素:span、img、a、lable、input、abbr(缩写)、em(强调)、big、cite(引用)、i(斜体)、q(短引用)、textarea、select、small、sub、sup,strong、u(下划线)、button
块级元素会独占一行,默认情况下,其宽度自动填满其父元素宽度
行内元素不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化
块级元素width、height、margin的四个方向、 padding的四个方向都正常显示,遵循标准的css盒模型,例如:div
行内替换元素 width、height、margin 的四个方向、 padding 的四个方向都正常显示,遵循标准的 css 盒模型,例如:img
行内非替换元素 width、height 不起作用,padding 左右起作用,上下不会影响行高,但是对于有背景色和内边距的行内非替换元素,背景可以向元素上下延伸,但是行高没有改变,margin 左右作用起作用,上下不起作用
无论 position 和 float 谁写在前面或后面,都是 position 先起作用。
- 当 position 为 absolute/fixed 时,元素已脱离文档流,再对元素应用 float 失效
- 当 position 为 static/relative 时,元素依旧处于普通流中,再对元素应用 float 起作用
- 浮动元素自动变成块级元素
- 浮动元素会对非浮动元素的布局产生影响
浮动元素脱离文档流,父元素的高度无法自适应
比如父元素的高度小于浮动元素的时候,此时就会出现“高度塌陷”
rem (font size of the root element) 指相对于HTML根元素的字体大小的单位
- 使用媒体查询控制不同分辨率下的根元素字体大小
- 通过JavaScript动态获取屏幕的宽度来设置根元素的字体大小
Flex(Flexible Box)意为弹性布局
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex 项目(flex item),简称”项目”
.box{
display: flex;
}
容器属性:flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content
项目属性:order、flex-grow、flex-shrink、flex-basis、flex、align-self
flex 属性是 flex-grow, flex-shrink 和 flex-basis 的简写
flex: initial
元素会根据自身宽高设置尺寸。它会缩短自身以适应 flex 容器,但不会伸长并吸收 flex 容器中的额外自由空间来适应 flex 容器 。相当于将属性设置为 flex: 0 1 auto
。
flex: auto
元素会根据自身的宽度与高度来确定尺寸,但是会伸长并吸收 flex 容器中额外的自由空间,也会缩短自身来适应 flex 容器。这相当于将属性设置为 flex: 1 1 auto
。
flex: none
元素会根据自身宽高来设置尺寸。它是完全非弹性的:既不会缩短,也不会伸长来适应 flex 容器。相当于将属性设置为 flex: 0 0 auto
。
/* One value, unitless number: flex-grow */
flex: 2;
/* One value, width/height: flex-basis */
flex: 30px;
/* Two values: flex-grow | flex-basis */
flex: 1 30px;
/* Two values: flex-grow | flex-shrink */
flex: 2 2;
/* Three values: flex-grow | flex-shrink | flex-basis */
flex: 2 2 10%;
less、sass、scss
CSS 预处理器用一种专门的编程语言,进行Web页面样式的设计,然后再编译成正常的 CSS 文件,以供项目使用。
我的理解就是:css 预处理器可以让你用编程的方式来设计样式,也就是说为 css 加入了编程的特性
translate(x, y) 的百分比数据,会以本身的长宽做参考。比如,本身的长为100px,高为100px。那 (50%, 50%) 就是向右,向下移动50px,添加负号就是向着相反的方向移动。