博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

CSS使用技巧

Posted on 2009-06-15 14:09  .NET酷  阅读(348)  评论(1编辑  收藏  举报

.使用css缩写... 1

二.明确定义单位,除非值为0. 2

三.区分大小写... 2

四.取消class和id前的元素限定... 3

五.默认值... 3

六.不需要重复定义可继承的值... 3

七.最近优先原则... 3

八.多重class定义... 4

九.使用子选择器(descendant selectors). 4

十.不需要给背景图片路径加引号... 5

十一.组选择器(Group selectors). 5

十二.用正确的顺序指定链接的样式... 5

 

.使用css缩写

使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。

css缩写的主要规则如下:

 颜色

 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如:

#000000可以缩写为#000;#336699可以缩写为#369;

 盒尺寸

通常有下面四种书写方法:

property:value1; 表示所有边都是一个值value1

property:value1 value2; 表示topbottom的值是value1,rightleft的值是value2

property:value1 value2 value3; 表示top的值是value1rightleft的值是value2bottom的值是value3

property:value1 value2 value3 value4; 四个值依次表示top,right,bottom,left

方便的记忆方法是顺时针,上右下左。具体应用在marginpadding的例子如下:

margin:1em 0 2em 0.5em;

 

边框(border)

边框的属性如下:

 

border-width:1px;

border-style:solid;

border-color:#000;

可以缩写为一句:border:1px solid #000;

语法是border:width style color;

背景(Backgrounds)

背景的属性如下:

background-color:#f00;

background-image:url(background.gif);

background-repeat:no-repeat;

background-attachment:fixed;

background-position:0 0;

可以缩写为一句:background:#f00 url(background.gif) no-repeat fixed 0 0;

语法是background:color image repeat attachment position;

你可以省略其中一个或多个属性值,如果省略,该属性值将用浏览器默认值,默认值为:

color: transparent

image: none

repeat: repeat

attachment: scroll

position: 0% 0%

字体(fonts)

字体的属性如下:

font-style:italic;

font-variant:small-caps;

font-weight:bold;

font-size:1em;

line-height:140%;

font-family:"Lucida Grande",sans-serif;

可以缩写为一句:font:italic small-caps bold 1em/140% "Lucida Grande",sans-serif;

注意,如果你缩写字体定义,至少要定义font-sizefont-family两个值。

列表(lists)

取消默认的圆点和序号可以这样写list-style:none;,

list的属性如下:

list-style-type:square;

list-style-position:inside;

list-style-image:url(image.gif);

可以缩写为一句:list-style:square inside url(image.gif);

.明确定义单位,除非值为0

HTML中你可以只写width="100",但是在CSS中,你必须给一个准确的单位,比如:width:100px width:100em。只有两个例外情况可以不定义单位:行高和0值。除此以外,其他值都必须紧跟单位,不要在数值和单位之间加空格。

.区分大小写

当在XHTML中使用CSSCSS里定义的元素名称是区分大小写的。为了避免这种错误,我建议所有的定义名称都采用小写。

classid的值在HTMLXHTML中也是区分大小写的,如果你一定要大小写混合写,请仔细确认你在CSS的定义和XHTML里的标签是一致的。

.取消classid前的元素限定

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

div#content { /* declarations */ }

fieldset.details { /* declarations */ }

可以写成

#content { /* declarations */ }

.details { /* declarations */ }

这样可以节省一些字节。

.默认值

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

* {

margin:0;

padding:0;

}

.不需要重复定义可继承的值

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

.最近优先原则

如果对同一个元素的定义有多种,以最接近(最小一级)的定义为最优先,例如

CSS文件中,你已经定义了元素p,又定义了一个class"update"

p {

margin:1em 0;

font-size:1em;

color:#333;

}

.update {

font-weight:bold;

color:#600;

}

 这两个定义中,class="update"将被使用

FF:   ID选择器(形如#divMain{}) > (形如.divSpecial{}) > 标签(形如body{})

IE:    > ID选择器 > 标签。

.多重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后面。