浏览器解析html文档是自上而下的,如果将CSS放在底部,页面可以逐步呈现,但在CSS下载并解析完毕后,已经呈现的文字和图片就要需要根据新的样式重绘,这是一种不好的用户体验。
本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。
css文件应该放在HTML顶部的head中。
why?
link标签里面的href(HyperText reference)属性表示超文本引用,当CSS使用href引用,浏览器会识别该文档为CSS,并行下载,不会停止对当前文档的加载,在加载html生成DOM tree的时候,就可以同时对DOM tree进行渲染,这样可以防止闪跳,白屏或者布局混乱。
最理想的情况,大家希望浏览器逐渐的渲染下载好的CSS,将页面逐渐的展现给用户。但是浏览器为了避免样式变化时重新渲染绘制页面元素,会阻塞内容逐步呈现,浏览器等待所有样式加载完成之后才一次性渲染呈现页面。
CSS文件如果放置底部,浏览器阻止内容逐步呈现,浏览器在等待最后一个css文件下载完成的过程中,就出现了“白屏”(新打开连接时为白屏,尔后先出现文字,图片,样式最后出现)。这点非常严重,因为在网速非常慢的情况下,css下载时间比较长,这样就给用户带来“白屏”的时间自然也就很长了,用户体验非常差。
CSS文件放在顶部一方面是因为放置顺序决定了下载的优先级,更关键的是浏览器的渲染机制。
css在加载过程中不会影响到DOM树的生成,但是会影响到Render树的生成,进而影响到layout,所以一般来说,style的link标签需要尽量放在head里面,因为在解析DOM树的时候是自上而下的,而css样式又是通过异步加载的,这样的话,解析DOM树下的body节点和加载css样式能尽可能的并行,加快Render树的生成的速度。
将CSS放在底部,页面可以逐步呈现,但在CSS下载并解析完毕后,已经呈现的文字和图片就要需要根据新的样式重绘,这是一种不好的用户体验。
css 样式表分类
一,样式表分类
(1)内联样式【优先级最高】【常用】【代码重复使用性最差】
(当特殊的样式需要应用到个别元素时,就可以使用内联样式。 使用内联样式的方法是在相关的标签中使用样式属性。样式属性可以包含任何 CSS 属性。)
(2)内嵌样式表【优先级第二】【最不常用】【代码重复使用性一般】
(当单个文件需要特别样式时,就可以使用内嵌样式表。你可以在 head 部分通过 <style> 标签定义内部样式表。)
(3)外部样式表【优先级最低】【最常用】【代码重复使用性最好】
(当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观。)
I。先创建一个样式表
II。写入样式表内容,调整样式表位置
二。选择器
每一条css样式定义由两部分组成,形式如下:
选择器
{样式}
在{}之前的部分就是“选择器”。
“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素。
选择器是选择器,外部样式表只是代码位置
(1)类别选择器( class选择器)【第二优先级】【最常用】
前面以"." 来标志,如:
.d1
{
color:red;
}
在HTML页中:
【1】<div;>文字</div> 文字颜色为红色
【2】<p;>文字</p >文字颜色为红色
定义了一个class类,将样式应用到了元素中。
(2)id选择器【第一优先级】【最常用】
前面以"#"来标志,如:
#d2
{
color:blue;
}
在HTML页中:
<div>文字</div>文字颜色变为蓝色【id选择器优先级高于类别选择器】
(3)标签选择器(根据标签名选择)【第三优先级】【如果同时出现类别选择器和id选择器,按照优先级来及执行】【最不常用】
前面以"标签名"来标志,如:
div
{
color:red;
}
在HTML页中:
<div>文字<div>文字颜色变为红色
(4)复合选择器【有id第一优先级/都是类别选择器第二优先级】【最最常用】
[1]群组选择器
当几个元素样式属性一样时,可以共同调用一个声明,元素之间用逗号分隔。
.d1,#d2
{
color:red;
}
在HTML页中:
【1】<div;>文字</div> 文字颜色为红色
【2】<p;>文字</p >文字颜色为红色
使用群组选择器,将会大大的简化CSS代码,将具有多个相同属性的元素,合并群组进行选择,定义同样的CSS属性,这大大的提高了编码效率,同时也减少了CSS文件的体积。
[2]后代选择器
后代选择器也称为包含选择器,用来选择特定元素或元素组的后代,将对父元素的选择放在前面,对子元素的选择放在后面,中间加一个空格分开。
.d1 #d2
{
color:blue;
}
在HTML页中:
<div>文字</div>文字颜色变为蓝色
后代选择器是一种很有用的选择器,使用后代选择器可以更加精确的定位元素。
优先级:内联式 > 嵌入式 > 外部式
对于同一个元素大家同时用了三种方法设置css样式,那么哪种方法真正有效呢?在下面代码中就出现了这种情况
1、使用内联式CSS设置“超酷的互联网”文字为粉色。
2、然后使用嵌入式CSS来设置文字为红色。
3、最后又使用外部式设置文字为蓝色(style.css文件中设置)。