我一直在阅读有关css的一些教程,我看到了两种不同的方法来说明应该使用哪个css文件来设置页面样式:
<style type="text/css">@import url("style.css");</style>
Run Code Online (Sandbox Code Playgroud)
和
<link rel="stylesheet" type="text/css" href="style.css" />
Run Code Online (Sandbox Code Playgroud)
他们之间有什么区别?我应该使用哪一个?
Bla*_*laM 13
根据雅虎的"加速你的网站的最佳实践",使用@include就像在Internet Explorer中将<link>放在页面底部一样.
在页面末尾加载CSS会导致页面被重新呈现.这意味着,页面首先显示没有CSS,然后用CSS重绘.这会减慢页面加载速度.
它归结为CSS特性和CSS级联.仔细踩踏,知道你在做什么,CSS特异性可以成为你的朋友.
// bring CSS into the Page
<style type="text/css">@import url("importedStyles.css");</style>
/// Link to CSS Style Sheet
<link rel="stylesheet" type="text/css" href="linkedStyles.css" />
Run Code Online (Sandbox Code Playgroud)
由于@import将样式带入该页面,因此这些规则将覆盖外部或"链接"样式表.由于更高的CSS特异性,内联 CSS胜出:
<span style="color: red;">I am DEFINITELY RED</span>
Run Code Online (Sandbox Code Playgroud)
但是,这仅在规则具有相同特异性时才有效
请考虑以下事项:
<div class="error">I am an error message</div>
Run Code Online (Sandbox Code Playgroud)
如果我在importedStyles.css中有一条规则:
.error { color: blue; } /* specificity = 10 */
Run Code Online (Sandbox Code Playgroud)
"externalStyles.css"中的规则如下:
div.error { color: red; } /* specificity = 11 */
Run Code Online (Sandbox Code Playgroud)
它将采用externalStyles版本
注意:内联样式的CSS特性是1000,所以除了!important标签10000之外,它胜过所有事情.另一个CSS特性文章
规则中的每个#id = 100 -eg,这是200:
#content #footer {color:red; }/*200*/
每个班级= 10
每个html元素= 1
所以,举一些例子:
body .selected { color: red; } /* 11 */
ul li { color: red; } /* 2 */
ul li.selected { color: blue; } /* 12 */
#content ul li.selected a { color: red; } /* 113 */
/* Careful, can't override this, ever */
a { color: blue; !important } /* 10,000 - Override everything */
Run Code Online (Sandbox Code Playgroud)
所以...... Cascade仅适用于具有相同特异性的元素.在应用特异性规则后应用级联.