如何用CSS进行开发
很多web开发人员都知道CSS,但是他们很可能认为使用CSS的应用代码就是这样的:
<p>
<span style="font-weight:bold;font-family:Arial">Welcome!</span>
</p>
或者是这样的:
<table class="middle grey"><tr>
<td class="darkTopHeader">Item #</td>
<td class="darkTopHeader">Qty</td>
<td class="darkTopHeader">Cost</td>
</tr><tr>
<td class="rowHeaderDrk">1341</td>
<td class="cellFieldDrk">3</td>
<td class="cellFieldDrk">$15</td>
</tr><tr>
<td class="rowHeaderLt">1913</td>
<td class="cellFieldLt">2</td>
<td class="cellFieldLt">$17</td>
</tr><tr>
<td class="rowHeaderDrk">1231</td>
<td class="cellFieldDrk">1</td>
<td class="cellFieldDrk">$5</td>
</tr></table>
然而,上面的代码不过是“技术上”的CSS,如果仅是这么使用CSS,那么就失去了相当多的用好的机会。(如果上面的代码对你而言是ok的,那么请继续阅读下去,看看怎么能让你写代码更容易,写出的代码更优秀)
这篇文章是关于什么的
本文不依赖于高级的CSS3选择器(selector,或者不标准或者在写作本文时还不被所有浏览器很好地支持)。本文也不讨论高级CSS2选择器,那些已经标准化了但是有时也不被主流浏览器支持的selector。
本文不是关于如何格式化你的CSS或者HTML的参考手册,也不试图告诉你怎样用CSS实现切边布局。(关于布局的例子请参考Glish或者css/edge)
本文假定你了解基本的CSS1(什么是选择器,什么是复合选择与后代选择,值如何传递,等等),并提供一系列的指导帮你更恰当地使用CSS进行开发。
内容
1. 让你的站点更容易开发
1.1 格式与内容分离
1.2 使用语义(semantic)选择器
2. 尽可能减少HTML标签
2.1 语义(semantic)HTML
2.2 上下文选择器
3. 尽可能减少CSS
3.1 合理利用格式继承
3.2 合并逻辑相关的格式
3.3 页面间格式重用
4. 锦囊
4.1 用em或者%指定font-size
4.2 用em指定距离
4.3 不要再使用切片的GIF图
4.4 把CSS放在单独的文件中
4.5 IDs必须唯一
4.6 <br>标签不是你的朋友
4.7 不要用table进行布局
让你的站点更容易开发
格式与内容分离
CSS的一大好处就是,它能让你编辑一小处就可以改变web页面多处内容的显示方式,或者不用更改每个页面就可以改变全站的格式。把格式代码放在HTML页面里的方式是在绝大多数情况下应当避免的,因为他们总是会覆盖样式表中定义的格式,这样你就需要去直接修改HTML页面的代码来达到目的。
<p style="margin-top:1em">
CSS applied through the style tag
should be strongly avoided
</p>
<style type="text/css">
p.introParagraph { margin-top:1em }
</style>
...
<p class="introParagraph">
When it must be applied directly, style should
be specified through class or id attributes
</p>
如果你不是特意要通过style=”…”指定布局,请考虑是不是有一种更好的方式可以把style抽象成一个selector。
(内嵌的style在测试布局的时候是非常有用的……比如把style=”border:1px solid red”放在一个特定元素上以在页面上高亮显示它所在的位置)
使用语义(semantic)选择器
“语义”的大致的意思是“传达的含义和信息”。
在上面的例子中,初学者可能会取像spaceAbove这样的class名字。这样的对内嵌style的替换方式,实际上起不到内容和显示分离的效果。
试想,如果有开发人员已经这么做了。但是他之后觉得段落的第一行不应该往下,而应该缩进并用斜体表示,所以把CSS改成这样:
<style type="text/css">
p.spaceAbove { margin-left:2em; font-style:italic }
</style>
...
<p class="spaceAbove">
This paragraph doesn't actually have any
space above it at all...but it is italic
and indented!
</p>
这就会导致class名字令人费解——名字是这样,实际是另外的情况——并且无法提供文档应该用那个class的信息。
不要基于你假定的显示方式来命名一个class。总是用class名来指代内容(译者注:比如 class的名字取为buttonSubmit,来表示Submit按钮的style)。
尽可能减少HTML标签
代码越多,要维护的代码也就越多。下面介绍的方式会帮你减少添加style所需的工作。
未完待续。For more please go to : http://phrogz.net/CSS/HowToDevelopWithCSS.html
如何用CSS进行开发的更多相关文章
- CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(1)设定背景图
技术的新发展,除计算机可以接入互联网之外,平板电脑.智能手机.智能电视等其他设备均可访问互联网.在多设备时代,构建多屏体验也不是听说的那么难. 但是这也增加了学习CSS的难度?不知道如何上手,只懂一点 ...
- 如何用CSS实现在新窗口打开链接?
*如何用CSS实现在新窗口打开链接? <style type="text/css"> <!-- .target2 a:active {test:expressio ...
- 如何用css画出三角形
看到有面试题里会有问到如何用css画出三角形 众所周知好多图形都可以拆分成三角形,所以说会了画三角形就可以画出很多有意思的形状 画出三角形的原理是调整border(边框)的四个方向的宽度,线条样式以及 ...
- 一张png图片 上面有多个图标,如何用CSS准确的知道其中某个图片的坐标
一张png图片 上面有多个图标,如何用CSS准确的知道其中某个图片的坐标 ,如下图 可以使用 background background:url(images/xx.png) 40px 10px n ...
- 【CSS】如何用css做一个爱心
摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...
- 如何用css实现一个三角形?
昨天被人问到说如何用css实现一个三角形?em.... 当时被问到了,汗颜,今天找了一些帖子看了一下,也算是记录一下吧 代码如下: 实现效果:
- HTML+CSS网站开发兵书
<HTML+CSS网站开发兵书> 基本信息 作者: 高洪涛 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121212369 上架时间:2013-8-26 出版日期:2 ...
- css重修之书(一):如何用css制作比1px更细的边框
如何用css制作比1px更细的边框 在项目的开发过程中,我们常常会使用到border:1px solid xxx,来对元素添加边框: 可是1px的border看起来还是粗了一些粗,不美观,那么有什么方 ...
- 如何用css做一个爱心
摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...
随机推荐
- LinearLayout和RelativeLayout 区别
LinearLayout和RelativeLayout转自:http://blog.csdn.net/w176236767/article/details/6605848共有属性:java代码中通过b ...
- 使用Cyclone IV控制DDR2
根据你的DDR2手册配置好megacore,megacore会生成一个example top: 在quartus中运行megacore生成的xxx_pin_assignments.tcl,指定DDR2 ...
- UDP socket 设置为的非阻塞模式
UDP socket 设置为的非阻塞模式 Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), MSG_DONTWAIT, (struct so ...
- JS截取后缀名,文件全名,非后缀名的方法---收藏(冷饭_)
<script language="javascript" type="text/javascript"> //取整个文件的路径并且把文件名赋给文件 ...
- POJ题目分类
POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期: 一 ...
- MarkDowdPad 破解
一部小心把markdown破解了,把破解后的主程序发出来吧,放到安装根目录即可.点击升级到专业,随意输入邮箱和8位注册码,确定后会显示失败,返回即可,然后你就会发现已经变成专业版了. 不知道博客园怎么 ...
- PLSQL_低效SQL的识别和查询汇总(案例)
2014-12-18 Created By BaoXinjian
- PLSQL_基础系列01_正则表达REGEXP_LIKE / SUBSTR / INSTR / REPLACE(案例)
2014-11-30 Created By BaoXinjian
- IDC机房网络测试要求
IDC机房网络质量要求: 我司项目目前覆盖目标机房是国内BGP机房.三线机房.电信机房.联通机房. 要求XXXX IDC机房到目标机房的网络质量,平均丢包≤0.5%,网络延迟≤50ms;高峰期平均丢包 ...
- silverlight 报 System.NullReferenceException 未将对象引用设置到对象的实例。
在 Microsoft.Windows.Design.Platform.SilverlightMetadataContext.SilverlightXamlExtensionImplementatio ...