概念:将多个小图片拼接到一个图片中。经过background-position
和元素尺寸调节须要显示的背景图案。css
优势:css3
HTTP
请求数,极大地提升页面加载速度缺点:web
display: none;
与visibility: hidden;
的区别联系:它们都能让元素不可见算法
区别:浏览器
display:none
;会让元素彻底从渲染树中消失,渲染的时候不占据任何空间;visibility: hidden
;不会让元素从渲染树消失,渲染师元素继续占据空间,只是内容不可见display: none
;是非继承属性,子孙节点消失因为元素从渲染树消失形成,经过修改子孙节点属性没法显示;visibility: hidden;
是继承属性,子孙节点消失因为继承了hidden
,经过设置visibility: visible;
可让子孙节点显式display
一般会形成文档重排。修改visibility
属性只会形成本元素的重绘。display: none
;元素内容;会读取visibility: hidden;
元素内容link
与@import
的区别link
是HTML
方式, @import
是CSS方式sass
link
最大限度支持并行下载,@import
过多嵌套致使串行下载,出现FOUC
性能优化
link
能够经过rel="alternate stylesheet"
指定候选样式less
浏览器对link
支持早于@import
,可使用@import
对老浏览器隐藏样式工具
@import
必须在样式规则以前,能够在css文件中引用其余文件布局
整体来讲:link
优于@import
Flash Of Unstyled Content
:用户定义样式表加载以前浏览器使用默认样式显示文档,用户样式加载渲染以后再重新显示文档,形成页面闪烁。
解决方法:把样式表放到文档的head
建立规则:
float
不是none
)position
取值为absolute
或fixed
)display
取值为inline-block
,table-cell
, table-caption
,flex
, inline-flex
之一的元素overflow
不是visible
的元素做用:
margin
折叠若是display
为none
,那么position
和float
都不起做用,这种状况下元素不产生框
不然,若是position
值为absolute
或者fixed
,框就是绝对定位的,float
的计算值为none
,display
根据下面的表格进行调整。
不然,若是float
不是none
,框是浮动的,display
根据下表进行调整
不然,若是元素是根元素,display
根据下表进行调整
其余状况下display
的值为指定值
总结起来:绝对定位、浮动、根元素都须要调整display
父级div
定义height
结尾处加空div
标签clear:both
父级div
定义伪类:after
和zoom
父级div
定义overflow:hidden
父级div
也浮动,须要定义宽度
结尾处加br
标签clear:both
比较好的是第3种方式,好多网站都这么用
由于浏览器的兼容问题,不一样浏览器对有些标签的默认值是不一样的,若是没对CSS
初始化每每会出现浏览器之间的页面显示差别。
固然,初始化样式会对SEO
有必定的影响,但鱼和熊掌不可兼得,但力求影响最小的状况下初始化
新增各类css
选择器
圆角 border-radius
多列布局
阴影和反射
文字特效text-shadow
线性渐变
旋转transform
CSS3新增伪类有那些?
p:first-of-type
选择属于其父元素的首个<p>
元素的每一个<p>
元素。
p:last-of-type
选择属于其父元素的最后 <p>
元素的每一个<p>
元素。
p:only-of-type
选择属于其父元素惟一的 <p>
元素的每一个 <p>
元素。
p:only-child
选择属于其父元素的惟一子元素的每一个 <p>
元素。
p:nth-child(2)
选择属于其父元素的第二个子元素的每一个 <p>
元素。
:after
在元素以前添加内容,也能够用来作清除浮动。
:before
在元素以后添加内容
:enabled
:disabled
控制表单控件的禁用状态。
:checked
单选框或复选框被选中
block
象块类型元素同样显示。
none
缺省值。象行内元素类型同样显示。
inline-block
象行内元素同样显示,但其内容象块类型元素同样显示。
list-item
象块类型元素同样显示,并添加样式列表标记。
table
此元素会做为块级表格来显示
inherit
规定应该从父元素继承 display
属性的值
有两种, IE
盒子模型、W3C
盒子模型;
盒模型: 内容(content)、填充(padding
)、边界(margin
)、 边框(border
);
区 别: IE
的content
部分把 border
和 padding
计算了进去;
优先级就近原则,同权重状况下样式定义最近者为准
载入样式以最后载入的定位为准
优先级为: !important > id > class > tag
important
比 内联优先级高
它决定了元素如何对其内容进行定位,以及与其余元素的关系和相互做用
浮动的框能够向左或向右移动,直到他的外边缘碰到包含框或另外一个浮动框的边框为止。因为浮动框不在文档的普通流中,因此文档的普通流的块框表现得就像浮动框不存在同样。浮动的块框会漂浮在文档普通流的块框上
absolute
:生成绝对定位的元素,相对于 static
定位之外的第一个父元素进行定位
fixed
:生成绝对定位的元素,相对于浏览器窗口进行定位
relative
:生成相对定位的元素,相对于其正常位置进行定位
static
默认值。没有定位,元素出如今正常的流中
inherit
规定从父元素继承 position
属性的值
移除空格
使用margin
负值
使用font-size:0
letter-spacing
word-spacing
GIF
8
位像素,256
色boolean
透明JPEG
256
PNG
PNG8
和truecolor PNG
PNG8
相似GIF
颜色上限为256
,文件小,支持alpha
透明度,无动画浮动后,行内元素不会成为块状元素,可是能够设置宽高。行内元素要想变成块状元素,占一行,直接设置display:block
;。但若是元素设置了浮动后再设置display:block
;那就不会占一行。
偶数字号相对更容易和 web 设计的其余部分构成比例关系
单冒号(:
)用于CSS3伪类,双冒号(::
)用于CSS3
伪元素
用于区分伪类和伪元素
多数显示器默认频率是60Hz
,即1
秒刷新60
次,因此理论上最小间隔为1/60*1000ms = 16.7ms
@import
引入多个css
文件,可使用CSS
工具将CSS
合并为一个CSS
文件,例如使用Sass\Compass
等!important
规则最重要,大于其它规则
行内样式规则,加1000
对于选择器中给定的各个ID
属性值,加100
对于选择器中给定的各个类属性、属性选择器或者伪类选择器,加10
对于选择其中给定的各个元素标签选择器,加1
若是权值同样,则按照样式规则的前后顺序来应用,顺序靠后的覆盖靠前的规则
position
、display
、float
、width
、heigh
t、margin
、padding
、top
、left
、right
、`
css
压缩与合并、Gzip
压缩
css
文件放在head
里、不要用@import
尽可能用缩写、避免用滤镜、合理使用选择器
依靠CSS3
中提出的三个属性:transition
、transform
、animation
transition
:定义了元素在变化过程当中是怎么样的,包含transition-property
、transition-duration
、transition-timing-function
、transition-delay
。
transform
:定义元素的变化结果,包含rotate
、scale
、skew
、translate
。
animation
:动画定义了动做的每一帧(@keyframes
)有什么效果,包括animation-name
,animation-duration
、animation-timing-function
、animation-delay
、animation-iteration-count
、animation-direction
优势能够加密,减小了http
请求
缺点是须要消耗CPU
进行编解码
.left { float: left; width: 100px; height: 200px; background: red; } .right { float: right; width: 200px; height: 200px; background: blue; } .main { margin-left: 120px; margin-right: 220px; height: 200px; background: green; }
<div class="container"> <div class="left"></div> <div class="right"></div> <div class="main"></div> </div>
.container { margin-left: 120px; margin-right: 220px; } .main { float: left; width: 100%; height:300px; background: green; } .left { position: relative; left: -120px; float: left; height: 300px; width: 100px; margin-left: -100%; background: red; } .right { position: relative; right: -220px; float: right; height: 300px; width: 200px; margin-left: -200px; background: blue; }
<div class="container"> <div class="main"></div> <div class="left"></div> <div class="right"></div> </div>
.content { float: left; width: 100%; } .main { height: 200px; margin-left: 110px; margin-right: 220px; background: green; } .main::after { content: ''; display: block; font-size:0; height: 0; zoom: 1; clear: both; } .left { float:left; height: 200px; width: 100px; margin-left: -100%; background: red; } .right { float: right; height: 200px; width: 200px; margin-left: -200px; background: blue; }
<div class="content"> <div class="main"></div> </div> <div class="left"></div> <div class="right"></div>
均具备“变量”、“混合”、“嵌套”、“继承”、“颜色混合”五大基本特性
Scss
和LESS
语法较为严谨,LESS
要求必定要使用大括号“{}”,Scss
和Stylus
能够经过缩进表示层次与嵌套关系
Scss
无全局变量的概念,LESS
和Stylus
有相似于其它语言的做用域概念
Sass
是基于Ruby
语言的,而LESS
和Stylus
能够基于NodeJS
NPM
下载相应库后进行编译;
PostCSS
提供了一个解析器,它可以将 CSS
解析成抽象语法树PostCSS
这个平台上,咱们可以开发一些插件,来处理咱们的CSS
,好比热门的:autoprefixer
postcss
能够对sass处理事后的css
再处理 最多见的就是autoprefixer