浏览器解析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、然后使用嵌入式CSS来设置文字为红色。
3、最后又使用外部式设置文字为蓝色(style.css文件中设置)。
有4种方式,行内方式、内嵌方式、链接方式、导入方式
1、行内方式
行内方式是4种样式中最直接最简单的一种,直接对HTML标签适用style="",例如:
<p style="color:#F00; background:#CCC; font-size:12px;"></p>
虽然这种方法比较直接,在制作页面的时候需要为很多的标签设置style属性,所以会导致HTML页面不够纯净,文件体积过大,不利于搜索蜘蛛爬行,从而导致后期维护成本高。
2、内嵌方式
内嵌方式就是将CSS代码写在<head></head>之间,并且用<style></style>进行声明,例如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
#div1{width:64px; height:64px; float:left;}
#div1 img{width:64px; height:64px;}
-->
</style>
</head>
<body>
<div id="div1"><img src="https://www.jb51.net/images/logo.gif" /></div>
</body>
</html>
运行代码 复制代码 另存代码 <script language="JavaScript">ffcod = delpost.runcode7 .value; ffcod = ffcod.replace(/
/g,''); delpost.runcode7 .value = ffcod;</script> 提示:您可以先修改部分代码再运行
内嵌方式,大家应该也能意识到,即使有公共CSS代码,也是每个页面都要定义的,如果一个网站有很多页面,每个文件都会变大,后期维护也大,如果文件很少,CSS代码也不多,这种方式还是很不错的。
3、链接方式
链接方式是使用频率最高,最实用的方式,只需要在<head></head>之间加上
复制代码
代码如下:
<link href="style.css" type="text/css" rel="stylesheet" />
,就可以了,这种方式将HTML文件和CSS文件彻底分成两个
或者多个文件,实现了页面框架HTML代码与美工CSS代码的完全分离,使得前期制作和后期维护都十分方便,并且如果要保持页面风格统一,只需要把这些公共的CSS文件单独保存成一个文件,其他的页
面就可以分别调用自身的CSS文件,如果需要改变网站风格,只需要修改公共CSS文件就OK了,相当的方便,这才是我们xHTML+CSS制作页面提倡的方式。
HTML代码
复制代码
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div id="div1"><img src="https://www.jb51.net/images/logo.gif" /></div>
</body>
</html>
CSS代码
复制代码
代码如下:
#div1{width:64px; height:64px; float:left;}
#div1 img{width:64px; height:64px;}
4、导入方式
导入样式和链接样式比较相似,采用import方式导入CSS样式表,在HTML初始化时,会被导入到HTML文件中,成为文件的一部分,类似第二种内嵌方式。
具体导入样式和链接样式有什么区别,可以参看这篇文章《CSS:@import与link的具体区别》,不过我还是建议大家用链接方式!
四种样式的优先级 :
如果这上面的四种方式中的两种用于同一个页面后,就会出现优先级的问题,这里我就不再举例子来说明了,大家在下面自己证明一下下面的结论
四种样式的优先级别是(从高至低):行内样式、内嵌样式、链接样式、导入样式。
拓展资料
css是层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS在Web设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。
1. 内联样式表的权值最高 1000 2. ID 选择器的权值为 100 3. Class 类选择器的权值为 10 4. HTML 标签选择器的权值为 1 CSS 优先级法则: A 选择器都有一个权值,权值越大越优先 B 当权值相等时,后出现的样式表设置要优于先出现的样式表设置 C 创作者的规则高于浏览者:即网页编写者设置的CSS 样式的优先权高于浏览器所设置的样式 D 继承的CSS 样式不如后来指定的CSS 样式 E 在同一组属性设置中标有“!important”规则的优先级最大 这是规定好的,自然不能打破
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有