`
mtou
  • 浏览: 157109 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CSS2.0中最常用的18条技巧

    博客分类:
  • js
阅读更多

一、使用css缩写
  使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。 
  具体内容请浏览:CSS常用缩写语法 

二、明确定义单位,除非值为0。
  忘记定义尺寸的单位是CSS新手普遍的错误。在HTML中你可以只写width="100",但是在CSS中,你必须给一个准确的单位,比如:width:100px width:100em。只有两个例外情况可以不定义单位:0值。除此以外,其他值都必须紧跟单位,注意,不要在数值和单位之间加空格。 

三、区分大小写
  当在XHTML中使用CSS,CSS里定义的元素名称是区分大小写的。为了避免这种错误,建议所有的定义名称都采用小写。 
  class和id的值在HTML和XHTML中也是区分大小写的,如果你一定要大小写混合写,请仔细确认你在CSS的定义和XHTML里的标签是一致的。 

四、取消class和id前的元素限定
  当你写给一个元素定义class或者id,你可以省略前面的元素限定,因为ID在一个页面里是唯一的,而class可以在页面中多次使用。你限定某个元素毫无意义。例如: 

div#content { /* declarations */ }  
fieldset.details { /* declarations */ }  

可以写成 

#content { /* declarations */ }  
.details { /* declarations */ }  

这样可以节省一些字节。 

五、默认值
  通常padding的默认值为0,background-color的默认值是transparent。但是在不同的浏览器默认值可能不同。如果怕有冲突,可以在样式表一开始就先定义所有元素的margin和padding值都为0,象这样: 

* {  
margin:0;  
padding:0;  
}  

六、不需要重复定义可继承的值
  CSS中,子元素自动继承父元素的属性值,象颜色、字体等,已经在父元素中定义过的,在子元素中可以直接继承,不需要重复定义。但是要注意,浏览器可能用一些默认值覆盖你的定义。 

七、最近优先原则
  如果对同一个元素的定义有多种,以最接近(最小一级)的定义为最优先,例如有这么一段代码 
Update: Lorem ipsum dolor set 
  在CSS文件中,你已经定义了元素p,又定义了一个class="update" 

p {  
margin:1em 0;  
font-size:1em;  
color:#333;  
}  
.update {  
font-weight:bold;  
color:#600;  
}  

这两个定义中,class="update"将被使用,因为class比p更近。你可以查阅W3C的《 Calculating a selector’s specificity》 了解更多。 

八、多重class定义
  一个标签可以同时定义多个class。例如:我们先定义两个样式,第一个样式背景为#666;第二个样式有10 px的边框。 

.one{width:200px;background:#666;} 
.two{border:10px solid #F00;}  

在页面代码中,我们可以这样调用 
  <div class="one two"></div>  
  这样最终的显示效果是这个div既有#666的背景,也有10px的边框。是的,这样做是可以的,你可以尝试一下。 

九、使用子选择器(descendant selectors)
  CSS初学者不知道使用子选择器是影响他们效率的原因之一。子选择器可以帮助你节约大量的class定义。我们来看下面这段代码: 

<div id="subnav">  
<ul>  
<li class="subnavitem"><a href="#" class="subnavitem">Item 1</a></li>>  
<li class="subnavitemselected">
<a href="#" class="subnavitemselected">Item 1</a></li>  
<li class="subnavitem"> <a href="#" class="subnavitem"> Item 1</a> </li> 
</ul>  
</div>  

这段代码的CSS定义是: 

div#subnav ul { /* Some styling */ }  
div#subnav ul li.subnavitem { /* Some styling */ }  
div#subnav ul li.subnavitem a.subnavitem { /* Some styling */ }  
div#subnav ul li.subnavitemselected { /* Some styling */ }  
div#subnav ul li.subnavitemselected a.subnavitemselected { /* Some styling */ }  

你可以用下面的方法替代上面的代码 

<ul id="subnav">  
<li> <a href="#"> Item 1</a> </li>  
<li class="sel"> <a href="#"> Item 1</a> </li>  
<li> <a href="#"> Item 1</a> </li>  
</ul>  

样式定义是: 

#subnav { /* Some styling */ }  
#subnav li { /* Some styling */ }  
#subnav a { /* Some styling */ }  
#subnav .sel { /* Some styling */ }  
#subnav .sel a { /* Some styling */ }  

用子选择器可以使你的代码和CSS更加简洁、更加容易阅读。 

十、不需要给背景图片路径加引号
  为了节省字节,我建议不要给背景图片路径加引号,因为引号不是必须的。例如: 
  background:url("images/***.gif") #333;  
  可以写为 
  background:url(images/***.gif) #333;  
  如果你加了引号,反而会引起一些浏览器的错误。 

十一、组选择器(Group selectors)
  当一些元素类型、class或者id都有共同的一些属性,你就可以使用组选择器来避免多次的重复定义。这可以节省不少字节。  
  例如:定义所有标题的字体、颜色和margin,你可以这样写: 

h1,h2,h3,h4,h5,h6 {  
font-family:"Lucida Grande",Lucida,Arial,Helvetica,sans-serif;  
color:#333;  
margin:1em 0;  
}  

  如果在使用时,有个别元素需要定义独立样式,你可以再加上新的定义,可以覆盖老的定义,例如: 

h1 { font-size:2em; }  
h2 { font-size:1.6em; }  

十二、用正确的顺序指定链接的样式
  当你用CSS来定义链接的多个状态样式时,要注意它们书写的顺序,正确的顺序是: 
  :link :visited :hover :active。抽取第一个字母是"LVHA",你可以记忆成"LoVe HAte"(喜欢讨厌)。为什么这么定义,可以参考Eric Meyer的《Link Specificity》。 
  如果你的用户需要用键盘来控制,需要知道当前链接的焦点,你还可以定义:focus属性。:focus属性的效果也取决与你书写的位置,如果你希望聚焦元素显示:hover效果,你就把:focus写在:hover前面;如果你希望聚焦效果替代:hover效果,你就把:focus放在:hover后面。 

十三、清除浮动
  一个非常常见的CSS问题,定位使用浮动的时候,下面的层被浮动的层所覆盖,或者层里嵌套的子层超出了外层的范围。 
  通常的解决办法是在浮动层后面添加一个额外元素,例如一个div或者一个br,并且定义它的样式为clear: both。这个办法有一点牵强,幸运的是还有一个好办法可以解决,参看这篇文章《How To Clear Floats Without Structural Markup》 
  上面2种方法可以很好解决浮动超出的问题,但是如果当你真的需要对层或者层里的对象进行clear的时候怎么办?一种简单的方法就是用overflow属性,这个方法最初的发表在《Simple Clearing of Floats》,又在《Clearance》和《Super simple clearing floats》中被广泛讨论。 
  上面那一种clear方法更适合你,要看具体的情况,这里不再展开论述。另外关于float的应用,一些优秀的文章已经说得很清楚,推荐你阅读:《Floatutorial》、《Containing Floats》和《Float Layouts》 

十四、横向居中(centering)
  这是一个简单的技巧,但是值得再说一遍,因为我看见太多的新手问题都是问这个:CSS如何横向居中?你需要定义元素的宽,并且定义横向的margin,如果你的布局包含在一个层(容器)中,你可以这样定义使它横向居中: 

#wrap {  
width:760px; /* 修改为你的层的宽度 */  
margin:0 auto;  
}  

  但是IE5/Win不能正确显示这个定义,我们采用一个非常有用的技巧来解决:用text-align属性。就象这样: 

body {  
text-align:center;  
}  
#wrap {  
width:760px; /* 修改为你的层的宽度 */  
margin:0 auto;  
text-align:left;  
}  

  第一个body的text-align:center; 规则定义IE5/Win中body的所有元素居中(其他浏览器只是将文字居中) ,第二个text-align:left;是将#warp中的文字居左。 

十五、导入(Import)和隐藏CSS
  因为老版本浏览器不支持CSS,一个通常的做法是使用@import技巧来把CSS隐藏起来。例如: 
  @import url("main.css");  
  然而,这个方法对IE4不起作用,这让我很是头疼了一阵子。后来我用这样的写法: 
  @import "main.css";  
  这样就可以在IE4中也隐藏CSS了,呵呵,还节省了5个字节呢。想了解@import语法的详细说明,可以看这里《centricle’s css filter chart》 

十六、针对IE的优化
  有些时候,你需要对IE浏览器的bug定义一些特别的规则,这里有太多的CSS技巧(hacks),我只使用其中的两种方法,不管微软在即将发布的IE7 beta版里是否更好的支持CSS,这两种方法都是最安全的。 

  1.注释的方法  

  (a)在IE中隐藏一个CSS定义,你可以使用子选择器(child selector): 
  html>body p {  
  /* 定义内容 */  
  }  
  (b)下面这个写法只有IE浏览器可以理解(对其他浏览器都隐藏)  
  * html p {  
  /* declarations */  
  }  
  (c)还有些时候,你希望IE/Win有效而IE/Mac隐藏,你可以使用"反斜线"技巧: 
  /* \*/  
  * html p {  
  declarations  
  }  
  /* */  

  2.条件注释(conditional comments)的方法  
  另外一种方法,我认为比CSS Hacks更加经得起考验就是采用微软的私有属性条件注释(conditional comments)。用这个方法你可以给IE单独定义一些样式,而不影响主样式表的定义。就象这样: 

<!--[if IE]>  
<link rel="stylesheet" type="text/css" href="ie.css" />  
<![endif]-->  

十七、调试技巧:层有多大?
  当调试CSS发生错误,你就要象排版工人,逐行分析CSS代码。我通常在出问题的层上定义一个背景颜色,这样就能很明显看到层占据多大空间。有些人建议用border,一般情况也是可以的,但问题是,有时候border 会增加元素的尺寸,border-top和boeder-bottom会破坏纵向margin的值,所以使用background更加安全些。  
  另外一个经常出问题的属性是outline。outline看起来象boeder,但不会影响元素的尺寸或者位置。只有少数浏览器支持outline属性,我所知道的只有Safari、OmniWeb、和Opera。 

十八、CSS代码书写样式
  在写CSS代码的时候,对于缩进、断行、空格,每个人有每个人的书写习惯。在经过不断实践后,我决定采用下面这样的书写样式: 

selector1,  
selector2 {  
property:value;  
}  

  当使用联合定义时,我通常将每个选择器单独写一行,这样方便在CSS文件中找到它们。在最后一个选择器和大括号{之间加一个空格,每个定义也单独写一行,分号直接在属性值后,不要加空格。 

 

 

 

5
1
分享到:
评论
3 楼 soartju 2008-06-29  
学习。。。
2 楼 小甜甜弟弟 2008-06-29  
喜欢
1 楼 yf1975 2008-06-28  
总结的不错

相关推荐

    css2.0高级技巧

    各种不同类型网站的样式大集合,前台设计的好帮手

    css相关资料汇总------总有你需要的

    behavior55.chm CSS 2.0 中文手册.chm CSS 2.0中文手册(含索引).chm ... web标准化设计:常用的CSS命名规范.mht 学习网页技术CSS样式表整理的20个技巧.txt 样式表滤镜中文手册.chm 样式表中文手册.chm

    CSS那些事儿.pdf

    全书以传达CSS布局思维为中心,通过页面中的文字、图片、表格、表单等常见元素的处理及各种页面布局方式的使用,使读者能深入了解到如何在页面中更好 地运用CSS布局。尤其是在页面布局的部分中,全面分析了多种布局...

    CSS网站布局实录 (第二版)PDF版

    7.1.2 常用CSS hack使用方法 7.1.3 CSS hack管理 7.2 IE条件注释功能 7.3 盒模型问题 7.3.1 盒模型hack 7.3.2 简单盒模型hack方法 7.4 IE捉迷藏 7.5 ul的不同表现 7.6 IE 3px问题 7.7 高度不适应 7.8 IE6断头台问题 ...

    精通CSS DIV网页样式与布局.part1.rar

    真正的网页除了外观表现之外,还需要结构标准语言和行为标准的结合,因此本书还特别讲解了CSS与JavaScript、Ajax和XML的混合应用,这些都是Web 2.0网站中的主要技术,使读者掌握高级的网页制作技术。 5. 精选的网页...

    精通CSS DIV网页样式与布局.part2.rar

    真正的网页除了外观表现之外,还需要结构标准语言和行为标准的结合,因此本书还特别讲解了CSS与JavaScript、Ajax和XML的混合应用,这些都是Web 2.0网站中的主要技术,使读者掌握高级的网页制作技术。 5. 精选的网页...

    精通CSS DIV网页样式与布局.part3.rar

    真正的网页除了外观表现之外,还需要结构标准语言和行为标准的结合,因此本书还特别讲解了CSS与JavaScript、Ajax和XML的混合应用,这些都是Web 2.0网站中的主要技术,使读者掌握高级的网页制作技术。 5. 精选的网页...

    ASP.NET学习笔记

    一、ASP.NET 2.0中CSS失效的问题总结 二、CSS制作圆角边框 三、常用的CSS BUG解决方法与技巧 四、CSS常用的一些小技巧 五、firefox无法显示背景图片:解决方案 ASP.NET 一、 控件连接数据库 二. 从excel导入...

    网页设计相关资料

    CSS兼容IE和Firefox的技巧集合.doc CSS设计彻底研究.ppt DHTML 手册.chm DIV+CSS 网页布局常用基础知识.doc DIV+CSS完美布局.pdf ExtJS 2.0实用简明教程.chm page_skill.chm 色彩搭配在网站中的运用.pdf 网页设计...

    asp.net知识库

    2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0) Server Side ViewState 在服务器端存贮ViewState (ASP.NET 2.0) VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step ...

    挑战Dreamweaver CS3网页设计与Web 2.0开发 (邓文渊)【PDF】

    向下扎根”的理念,将概念和实际操作讲解与一个“吴哥窟之旅”动态网站的开发细节相结合,并以图示化教学方式引领您全程体验Dreamweaver CS3在网页设计和Web 2.0动态网站开发中各个方面的强大功能及实际应用技巧。...

    3.ASP.NET 2.0 入门经典(第4版) [压缩包1/10]

    ● 利用ASP.NET 2.0的内置数据处理功能安全地更新数据的技巧 ● 轻松设计集中式站点的特性 ● 向站点添加电子商务功能的技术 ● 增强应用程序性能的方法... 目录回到顶部↑ 第1章 ASP.NET 2.0和Wrox United 应用...

    说明文档7 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

    说明文档2 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

    说明文档8 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

    说明文档4 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

    说明文档1 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

    说明文档6 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

    说明文档3 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

    说明文档5 ASP Java C#

    C#常见25问.chm CSS2中文参考手册.chm CSS浮动.chm DOS经典命令.chm DWR写AJAX例子.chm hibernate一对多.chm HTML+4.0+Reference-chm.chm IntelliJ IDEA 里面的快捷键.txt J2EE_API.chm Java API及工具说明.chm Java...

Global site tag (gtag.js) - Google Analytics