CSS 知识总结

一、层叠样式表( CCS)

发明人:李爵士的挪威同事---赖先生。

层叠的含义:样式层叠、选择器层叠、文件层叠。

使用最广泛的版本(IE支持):CSS2.1(2004~2011)。

现代版本(分模块,IE8部分支持):CSS3(1999年开始起草)。

CSS特性浏览器支持查询网站:Can I use... Support tables for HTML5, CSS3, etc

CSS学习方法:

1.CSS是一门艺术,学好需要想象力。

2.不要问【为什么会这样】,只管做,记住【原来是这样】。

3.只要效果好,代码烂一些无所谓。

4.COPY+RUN+MODIFY -----CRM (抄、运行、修改)

语法一:样式语法

选择器 {

属性名:属性值;

/*注释*/

}

语法二:@语法

@charset "UTF-8"

@import url(2.css);

@media (min-width:100px) and (max-width:200px){}


二、浏览器渲染原理

“三棵树”:DOM(HTML)、CSSOM(CSS)、Render tree(渲染树)

渲染流程:

1.根据HTML构建HTML树(DOM);

2.根据CSS构建CSS树(CSSDOM);

3.将两棵树合并成一颗渲染树(render tree);

4.Layout布局(文档流、盒模型、计算大小和位置);

5.Paint 绘制(将边框颜色、文字颜色、阴影等画出来);

6.Compese合成(根据层叠关系展示画面);

三种更新方式:

更新流程触发检测:CSS Triggers


三、CSS 动画的两种做法(transition 和 animation)

transition(过渡)

*作用:补充中间帧

*语法:

transition:属性名 时长 过渡方式 延迟

transition:left 200ms linear

可用逗号分隔两个不同属性:    transition: left 200ms,top 400ms

可用all代表所有属性:    transition: all 200ms

过渡方式有:linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier | step-start | step-end | steps

*注意

#并非所有属性都能过渡,例如:

display:none => block 无法过渡

一般需改成visibility:hidden=>visible

background颜色可以过渡,opacity透明度也可以过渡


【display: none与visibility: hidden的区别】

display与元素的隐藏

如果给一个元素设置了display: none,那么该元素以及它的所有后代元素都会隐藏,它是前端开发人员使用频率最高的一种隐藏方式。隐藏后的元素无法点击,无法使用屏幕阅读器等辅助设备访问,占据的空间消失。

visibility与元素的隐藏

给元素设置visibility: hidden也可以隐藏这个元素,但是隐藏元素仍需占用与未隐藏时一样的空间,也就是说虽然元素不可见了,但是仍然会影响页面布局。

很多前端的同学认为visibility: hidden和display: none的区别仅仅在于display: none隐藏后的元素不占据任何空间,而visibility: hidden隐藏后的元素空间依旧保留 ,实际上没那么简单,visibility是一个非常有故事性的属性

1、visibility具有继承性,给父元素设置visibility:hidden;子元素也会继承这个属性。但是如果重新给子元素设置visibility: visible,则子元素又会显示出来。这个和display: none有着质的区别;

2、visibility: hidden不会影响计数器的计数,如图所示,visibility: hidden虽然让一个元素不见了,但是其计数器仍在运行。这和display: none完全不一样;

3、CSS3的transition支持visibility属性,但是并不支持display,由于transition可以延迟执行,因此可以配合visibility使用纯css实现hover延时显示效果。提高用户体验。


*过渡必须要有起始,一般只有一次动画或者两次,比如hover和非hover状态的过渡。如果除了起始,还有中间,怎么办?

*两种方法:

1.使用两次transform 

.a===transform===>.b

.b===transform===>.c

*如何知道中间点呢?用setTimeout或者监听transitionend事件。


animation的使用

*声明关键帧

  @keyframes XXX { 

form{

       transform:translateX(0%);

}

to{

    transform:translateX(100%)

}

}

@keyframes YYY{

0%{}

30%{}

68%,72%{}

100%{}

}

*添加动画 {animation xxx 1s;}

*让动画停在最后一帧,加上"forward"。

你可能感兴趣的:(CSS 知识总结)