层叠:对一个元素多次设置同一个样式,程序只会使用最后一次设置的属性值。
多个文档的样式可以通过使用一个站点来控制
多个html元素可以包含许多文档,可以在其中创建类
对样式进行分组,最好使用选择器和分组方法
无法通过选择器升序
垂直控制的局限性
没有表情
没有列声明
伪类不受动态行为的控制
规则、样式、无法定位特定文本
ID属性的值在整篇文档中必须是唯一的。ID属性可用于设置单个元素的样式规则。包含ID属性的选择器称为ID选择器。ID选择器的标志符是散列符号(#)
CLASS属性可声明一组在CLASS属性上具有相同值的元素。BODY内的所有元素都有CLASS属性。类选择器以标志符(.)开头。
属性:外边距(margin)、边框(border)、内边距(padding)以及实际的内容(content)。
标准盒子模型:宽度=内容的宽度(content);总宽度=内容的宽度(content)+ border + padding + margin
低版本IE盒子模型:宽度=border + padding + 内容(content);总宽度=内容宽度(content+border+padding)+ margin
z-index :设置元素的堆叠顺序。较高堆叠顺序的元素会处于堆叠顺序较低的元素的前面
值说明
auto——默认。堆叠顺序与父元素相等。
number——设置元素的堆叠顺序。
inherit——规定应该从父元素继承 z-index 属性的值。
作用:把网页中一些背景图片整合到一张图片文件中。
优点:减少网页的http请求,提高页面性能
CSS伪元素:添加到选择器的关键字,可用于设置所选元素的特定部分的样式。
“first-line” 伪元素用于向文本的首行设置特殊样式,只能用于块级元素!下面的属性可应用于 “first-line” 伪元素:font,color,background,word-space,letter-space,text-decoration,text-transform,line-height,clear。
通过用逗号(,)分隔符来定位多个元素
定义元素在哪个方向浮动
float: none;
float: left;
float: right;
background-repeat: none;
该对象将位于其父容器的中央
设置图像附着位置
值:
scroll:背景图片附着在背景容器上,它是相对于背景容器(元素)固定,它会随着背景容器的滚动,而不是随着它的内容滚动(也可以看成是对元素边框固定)。
fixed: 背景图片附着在浏览器的可视区域。因为浏览器的可视区域不具备滚动的性格,所以它是不滚动的
local:CSS3新增的属性值。背景图片附着在背景容器的内容区域。它会随着内容的滚动而滚动。
display:none 表示标签不会出现在页面上(可以通过DOM与之交互)。与其他标签之间将没有分配空间。
visibility:hidden 表示该标签不可见,但在页面上为其分配了空间。
context-box:W3C的标准盒子模型,设置元素的 height/width 属性指的是content部分的高/宽
border-box:IE传统盒子模型。设置元素的height/width属性指的是border + padding + content部分的高/宽
inline(默认)–内联
none–隐藏
block–块显示
table–表格显示
list-item–项目列表
inline-block
设置元素浮动后,display值为block
显示间隙
有空格时候会有间隙 解决:移除空格
margin正值的时候 解决:margin使用负值
使用font-size时候 解决:font-size:0、letter-spacing、word-spacing
static(默认):按照正常文档流进行排列;
relative(相对定位):不脱离文档流,参考自身静态位置通过 top, bottom, left, right 定位;
absolute(绝对定位):参考距其最近一个不为static的父级元素通过top, bottom, left, right 定位;
fixed(固定定位):所固定的参照对像是可视窗口。
display属性规定元素应该生成的框类型;position属性规定元素的定位类型;float属性是一种布局方式,定义元素在哪个方向浮动。
优先级机制:position:absolute/fixed优先级最高,有它们在时,float不起作用,display值需要调整。float 或者absolute定位的元素,只能是块元素或表格。
浮动
浮动元素碰到包含它的边框或者浮动元素的边框停留。浮动元素不在文档流中,会漂浮在文档流的块框上。
问题:1、父元素的高度无法被撑开,影响与父元素同级的元素;
2、与浮动元素同级的非浮动元素(内联元素)会跟随其后
3、除非第一个元素浮动,否则该元素之前的元素也需要浮动,否则会影响页面显示的结构
清除浮动
1、父级div定义height或者zoom(zoom的作用就是设置放大为原来的几倍,如:zoom:2)
2、最后一个浮动元素后加空div标签 并添加样式clear:both。
3、包含浮动元素的父标签添加样式overflow为hidden或auto。
避免过度约束
避免后代选择符
避免不必要的命名空间
避免!important,可以选择其他选择器
当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的,但是,对于一些表示竖向距离的属性,例如 padding-top , padding-bottom , margin-top , margin-bottom 等,当按百分比设定它们时,依据的也是父容器的宽度,而不是高度。
伪类:存在DOM文档中,逻辑上存在但在文档树中却无须标识的“幽灵”分类,用于向某些选择器添加特殊的效果,伪类的效果可以通过添加实际的类来实现。
伪元素/伪对象:在DOM文档中不存在,是虚拟的元素,是创建新元素。代表某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中,用于将特殊的效果添加到某些选择器。伪元素的效果可以通过添加实际的元素来实现。
单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。
::before就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素。并不存在于dom之中,只存在在页面之中。
line-height值设置为height一样大小的值可以实现单行文字的垂直居中
多行文本垂直居中:需要设置display属性为inline-block。
弹性盒子
.box{
display: flex;
justify-content: center;
align-items: center;
}
定位
.box{
position: relative;
}
.box .sub{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
/*margin-left: 负的宽度的一半*/
/*margin-top: 负的高度的一半*/
}
.triangle{
width: 0;
height: 0;
border: 100px solid transparent;
border-left-color: red;
}
id选择器(#myid)、类选择器(.myclassname)、标签选择器(div, h1, p)、相邻选择器(h1 + p)、子选择器(ul > li)、后代选择器(li a)、通配符选择器(*)、属性选择器(a[rel=“external”])、伪类选择器(a:hover, li:nth-child)
内嵌样式>内部样式>外部样式>导入式
!important > 内嵌 1000 >Id 100 > class=[]=伪类 10 > tag=伪元素 1 > ( * + > ~) 0
CSS预处理器是用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,以供项目使用。
优点
CSS变得更易于维护
易于编写嵌套选择器
用于一致主题的变量。可以跨不同项目共享主题文件
Mixins生成重复的CSS
诸如循环,列表和映射之类的Sass功能可以使配置更容易且更省力
将您的代码分成多个文件。CSS文件也可以拆分,但是这样做需要HTTP请求才能下载每个CSS文件。
缺点
需要进行预处理的工具。重新编译时间可能很慢。
不编写当前和潜在可用的CSS。例如,通过将诸如 postcss-loader之类的内容 与 webpack一起使用,可以编写可能与将来兼容的CSS,从而使您可以使用CSS变量(而不是Sass变量)之类的东西