CSS基础(一):开篇

背景php

HTML是一种超文本标记语言,用来定义文档的结构和内容,例如标题、段落和列表等等,而文档内容如何渲染、如何展现,这就须要样式来修饰了。CSS正是能够与HTML很好地结合。若是将HTML比做水,那么CSS就是水杯,用怎样形状的水杯来装水,水就显示不同的形状。css

 

什么是CSS?html

CSS 指层叠样式表 (Cascading Style Sheets),定义如何显示 HTML 元素,是为了解决文档内容与表现分离的问题,一般是统一存储在样式表中,使用外部样式表能够方便管理,提升工做的效率,具备继承性和层叠性的特色。浏览器

 

CSS继承性缓存

它是依赖于祖先-后代的关系的。继承是一种机制,它容许样式不只能够应用于某个特定的元素,还能够应用于它的后代。可是,并非全部的属性都会自动传给它的后代,例如边框Border,边距Margin,补白Padding等等。网络

例如定义了body的样式工具

<!DOCTYPE HTML>
<html>
<head>
<title>开篇一 | CSS继承</title>
</head>
<style type="text/css">
    body{height:100px;color:red;border: 1px solid #CCC;}
</style>
<body>
<p>
    字体颜色显示为红色,可是没有边框
</p>
</body>
</html>

能够获得的效果是body有1px的灰色实线边框,p标签里面的字体为红色,可是没有边框,因此border属性没有被继承。性能

 

CSS层叠性学习

CSS样式在针对同一元素配置同一属性时,依据层叠规则(权重)来处理冲突,选择应用权重高的CSS选择器所指定的属性,通常也被描述为权重高的覆盖权重低的,所以也称做层叠。字体

例如定义了样式

<!DOCTYPE HTML>
<html>
<head>
<title>开篇一 | CSS层叠</title>
</head>
<style type="text/css">
    body{height:100px;border: 1px solid #CCC;}
    .main{color:red;font-size: 18px;}
    .main p{color:#000;font-weight: bold;}
</style>
<body>
<div class="main">
<p>
    字体颜色显示为黑色,字号为加粗18px
</p>
</div>
</body>
</html>

能够获得的效果是p标签里面的字体为黑色,字号为加粗18px,.main选择器中的color属性被.main p中的color属性覆盖。

实际上由CSS的继承性和层叠性,是能够获得p标签组合的css样式为

p{color:#000;font-size: 18px;font-weight: bold;}

更多关于权重高低请参考

 

CSS代码规范

1.使用Reset但并不是全局Reset

全局Reset不只仅由于它是缓慢和低效率的方法,并且还会致使一些没必要要的元素也重置了外边距和内边距。

*{ margin:0; padding:0; }

 

2.良好的命名规范

ID和class的命名尽量短,并符合语义。多个单词的拼接用 '-' 符号连接,尽可能使用小写字母。

 

3.代码缩写

CSS代码缩写能够提升你写代码的速度,精简你的代码量。

 

li{
    font-family:Arial, Helvetica, sans-serif;
    font-size: 1.2em;
    line-height: 1.4em;
    padding-top:5px;
    padding-bottom:10px;
    padding-left:5px;
}

能够缩写成

li{
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    padding:5px 0 10px 5px;
}

 

4.利用CSS继承

若是页面中父元素的多个子元素使用相同的样式,那最好把他们相同的样式定义在其父元素上,让它们继承这些CSS样式。这样你能够很好的维护你的代码,而且还能够减小代码量。那么原本这样的代码:

#container li{ font-family:Georgia, serif; }
#container p{ font-family:Georgia, serif; }
#container h1{font-family:Georgia, serif; }

就能够简写成:

#container{ font-family:Georgia, serif; }

 

5.使用多重选择器

你能够合并多个CSS选择器为一个,若是他们有共同的样式的话。这样作不但代码简洁且可为你节省时间和空间。如:

h1{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h2{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

能够合并为

h1, h2, h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

 

6.适当的代码注释

代码注释可让别人更容易读懂你的代码,且合理的组织代码注释,可以使得结构更加清晰。

 

7.给你的CSS代码排序

若是代码中的属性都能按照字母排序,那查找修改的时候就能更加快速。

/*** 样式属性按字母排序 ***/
div{
    background-color:#3399cc;
    color:#666;
    font:1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}

 

8.保持CSS的可读性

书写可读的CSS将会使得更容易查找和修改样式。

/*** 每一个样式属性写一行 ***/
div{
    background-color:#3399cc;
    color:#666;
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}
 
/*** 全部的样式属性写在同一行 ***/
div{ background-color:#3399cc; color:#666; font: 1.2em/1.4em Arial, Helvetica, sans-serif;  height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; }

 

9.选择更优的样式属性值

CSS中有些属性采用不一样的属性值,虽然达到的效果差很少,当性能上却存在着差别,如:

区别在于border:0把border设为0px,虽然在页面上看不见,但按border默认值理解,浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值。

而border:none把border设为“none”即没有,浏览器解析“none”时将不做出渲染动做,即不会消耗内存值。因此建议使用border:none;

一样的,display:none隐藏对象浏览器不做渲染,不占用内存。而visibility:hidden则会。

 

10.<link>代替@import

@import不属于XHTML标签,也不是Web标准的一部分,它对于较早期的浏览器兼容也不高,而且对于网站的性能有某些负面的影响。因此,请避免使用@import

 

11.使用外部样式表使用

这个原则始终是一个很好的设计实践。不单能够更易于维护修改,更重要的是使用外部文件能够提升页面速度,由于CSS文件都能在浏览器中产生缓存。内置在HTML文档中的CSS则会在每次请求中随HTML文档从新下载。因此,在实际应用中,没有必要把CSS代码内置在HTML文档中。

 

12.代码压缩

当你决定把网站项目部署到网络上,那你就要考虑对CSS进行压缩,出去注释和空格,以使得网页加载得更快。压缩您的代码,能够采用一些工具,如YUI Compressor 利用它可精简CSS代码,减小文件大小,以得到更高的加载速度。

 

13.避免使用css hack

 

14.代码格式

(1)每一个css属性声明后都要使用一个分号,即便是最后的那个。

(2)在紧跟属性名的冒号后使用一个空格。

(3)每个css选择器或是属性声明都要新起一行。

(4)在每个css规则之间应该空一行。

 

15.若是css属性的值为0,则后面不要带上单位。除非真的是须要。

 

规范参考

 

CSS3.0新特性

目前CSS已经发展到3.0的版本,可是3.0的属性大多不支持低版本的浏览器。

新特性如CSS圆角边框、阴影、动画等,后面将会另有系列课程专门学习介绍。

 

 

做者: ForEvErNoME
出处: http://www.cnblogs.com/ForEvErNoME/
欢迎转载或分享,但请务必声明文章出处。若是文章对您有帮助,但愿你能 推荐关注
相关文章
相关标签/搜索