CSS基础(一):开篇
背景
HTML是一种超文本标记语言,用来定义文档的结构和内容,例如标题、段落和列表等等,而文档内容如何渲染、如何展示,这就需要样式来修饰了。CSS正是可以与HTML很好地结合。如果将HTML比作水,那么CSS就是水杯,用怎样形状的水杯来装水,水就显示不一样的形状。
什么是CSS?
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:; padding:; }
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:;
}
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:;
} /*** 所有的样式属性写在同一行 ***/
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:; }
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圆角边框、阴影、动画等,后面将会另有系列课程专门学习介绍。
CSS基础(一):开篇的更多相关文章
- 前端开发:css基础知识之盒模型以及浮动布局。
前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西? 为什么这个浮动没有效果? 这个问题楼主已经回答了n遍.今天则是把 ...
- CSS基础总结
CSS基础总结链接地址:http://segmentfault.com/a/1190000002773955
- CSS基础篇之了解CSS和它的基本属性
CSS是什么? CSS英文全名是Cascading Style Sheets翻译过来就是层叠样式表,它主是把网页表现与内容分离的一种样式设计语言.这种语言能优化我们编程,把东西简化和优化写法,而且不同 ...
- [.net 面向对象编程基础] (1) 开篇
[.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...
- HTML5 -入门 (---css样式-------------(css基础与css选择器)---------------------—)
---恢复内容开始--- 一css基础入门与css选择器 CSS英文全拼:cascading style sheet 层叠样式表. 在html中使用:要在head中写style标签,所有样式放在sty ...
- css 基础---选择器
1.css基础 selector {property: value} eg: h1 {color:red; font-size:14px;} p { text-align: center; color ...
- 妙味课堂——HTML+CSS基础笔记
妙味课堂的课程讲得非常的清楚,受益匪浅.先把HTML和CSS基础课程部分视频的学习笔记记录如下: padding #PS基础 ##前端需要的PS技能 - PS技能(前端需要):切图.修图.测量 - P ...
- WEB前端开发CSS基础样式全面总结
Web前端开发css基础样式全面总结 颜色和单位的使用 颜色 用颜色的名字表示颜色,比如:red 用16进制表示演示 比如:#FF0000 用rgb数值表示颜色,rgb(红,绿,蓝),每个值都在0-2 ...
- css基础不扎实
写了两周的网页,发现自己的css基础还是很差的,当时培训学习的时候就发现了,我做的页面都特别的别扭和丑吧,在班级上应该是垫底的: 原先只知道用float,不会使用定位,网页连固定定位也不会,现在发现, ...
- css基础总结一
最近在弄一个简单管理系统的前端,所以打算将做项目的一些个人感想以及总结简单罗列下,当然,主要针对前端的基础部分以及一些常用的前端个人简单技巧总结.主要分为js部分和css部分,下面是css的基础部分总 ...
随机推荐
- 尝试在mac上用dotnet cli运行asp.net core示例程序
自从知道微软用dotnet cli取代dnx之后,一直在等dotnet cli支持asp.net core... 昨天看到这篇新闻(ASP.NET Core 1.0 Hello World)后,才知道 ...
- C#中Encoding.Unicode与Encoding.UTF8的区别
今天在园子首页看到一篇博文-简单聊下Unicode和UTF-8,从中知道了UTF-8是Unicode的一种实现方式: Unicode只是给这世界上每个字符规定了一个统一的二进制编号,并没有规定程序该如 ...
- Salesforce 生成测试可用 Id
在写 Test Class 的时候,有时候需要一批有 Id 的数据或者把 Id 作为参数等情况,在数据关系比较复杂的情况下去造真实数据有些麻烦,于是找到这样一个可以生成 Id 的方法可以用来辅助测试! ...
- 你在用什么思想编码:事务脚本 OR 面向对象?
最近在公司内部做技术交流的时候,说起技能提升的问题,调研大家想要培训什么,结果大出我意料,很多人想要培训:面向对象编码.于是我抛出一个问题:你觉得我们现在的代码是面向对象的吗?有人回答:是,有人回答否 ...
- Nginx学习笔记(四) 源码分析&socket/UDP/shmem
源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_socket.h&Ngx_s ...
- SpringMVC实现一个controller写多个方法
MultiActionController与ParameterMethodNameResolver在一个Controller类中定义多个方法,并根据使用者的请求来执行当中的某个方法,相当于Struts ...
- 【转】The difference between categorical(Nominal ), ordinal and interval variables
What is the difference between categorical, ordinal and interval variables? In talking about variabl ...
- 常用linux命令索引
每天一个linux命令(61):wget命令 每天一个linux命令(60):scp命令 每天一个linux命令(59):rcp命令 每天一个linux命令(58):telnet命令 每天一个linu ...
- Leetcode 88 Merge Sorted Array STL
合并有序数组 时间复杂度O(m+n) 该算法来自各种算法与数据结构书,写得已经烂得不能再烂了,这个应该是最短的代码了吧,不知如何归类 class Solution { public: void mer ...
- CSS3参考手册
很好用的CSS3 API http://www.css88.com/book/css/