`
isiqi
  • 浏览: 16752822 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

CSS的超级技巧大放送(转)

阅读更多

一.使用css缩写

使用缩写可以帮助减少你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在一个页面里是唯一的,鴆las s可以在页面中多次使用。你限定某个元素毫无意义。例如:

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,又定义了一个classupdate

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文件中找到它们。在最后一个选择器和大括号{之间加一个空格,每个定义也单独写一行,分号直接在属性值后,不要加空格。

我习惯在每个属性值后面都加分号,虽然规则上允许最后一个属性值后面可以不写分号,但是如果你要加新样式时容易忘记补上分号而产生错误,所以还是都加比较好。

最后,关闭的大括号}单独写一行。

空格和换行有助与阅读。

<!-- <p class="post-info"> <?php wp_link_pages(); ?> </p> --><!-- <?php trackback_rdf(); ?> -->
分享到:
评论

相关推荐

    CSS的超级技巧大放送

    在描述部分提到的“CSS的超级技巧大放送”中,我们首先要明确的是CSS(层叠样式表)在网页布局中的核心作用。CSS负责定义网页元素的外观属性,如颜色、字体大小、间距等,同时也决定了元素如何在页面上布局。对于...

    svg转css,css转svg,svg与css互相转换并压缩

    在实际开发中,了解SVG和CSS之间的转换技巧对于优化Web应用的性能和用户体验至关重要。开发者应该熟悉如何在两者之间灵活切换,并利用自动化工具来提高效率。同时,理解文件压缩原理和方法,如Base64编码和CSS ...

    设计技巧大放送 (1).pdf

    设计技巧大放送 (1) 本篇幅中,我们将讨论设计技巧大放送 (1) 中的一些重要知识点,包括 HTML、CSS、JavaScript 和 Photoshop 等技术。 HTML * HTML 的 LINK 元素可以用来连接外部的样式表,例如 `...

    CSS超级压缩工具

    **CSS超级压缩工具详解** 在网页开发中,CSS(Cascading Style Sheets)是用于定义网页元素样式的重要语言。为了提升网页加载速度和优化用户体验,开发者通常会采用各种技术来减小CSS文件的大小,其中一种高效的...

    纯css3-球形3d旋转-多图3d球形旋转

    在这个项目中,"球形3d旋转"是通过一系列的CSS3技巧实现的,包括: 1. **透视(perspective)**:这是创建3D效果的基础,它决定了观察者距离3D元素的距离,影响了元素的近大远小的透视感。通过设置perspective属性...

    CSS设计彻底研究详细介绍了css 设计技巧 (ppt)

    书中首先介绍了(X)HTML和CSS的基础知识,包括它们之间的关系、HTML与XHTML的区别,如标记名称的大小写规则、嵌套规则等。DOCTYPE的选择对于理解文档类型和浏览器解析方式非常重要。 接着,书中的第2章展示了CSS如何...

    css9种设计技巧

    本文将详细介绍9种实用的CSS设计技巧,帮助提升网页的视觉效果和用户体验。 1. 取消下划线:在现代网页设计中,为了使链接看起来更简洁,常常会去除文本链接的下划线。这可以通过在CSS中设置`text-decoration`属性...

    css超级编辑器css

    【标题】:“CSS超级编辑器CSS” 【描述】:“编程最好的助手,每个人必须要用的使用软件。” 这个描述提及的“CSS超级编辑器CSS”显然是一款专为CSS(Cascading Style Sheets)编程设计的强大工具,它被赞誉为编程...

    《CSS3技巧大揭秘:打造精美的爱心SVG动画特效》.rar

    本资源是一份名为《CSS3技巧大揭秘:打造精美的爱心SVG动画特效》的RAR压缩包,其中包含了一份详细的教程和相关的代码示例,旨在帮助读者学习如何使用CSS3技术打造出精美的爱心SVG动画特效。 适用人群:本资源适用...

    CSS3图片3D旋转相册

    在本文中,我们将深入探讨如何使用CSS3创建一个具有3D旋转和动感抖动效果的图片相册。这种效果能够为网页增添互动性和视觉吸引力,让用户...通过学习和实践这些技巧,开发者可以创建出更具吸引力和创新性的网页应用。

    纯CSS游戏,超级玛丽

    《纯CSS游戏,超级玛丽》是一款利用HTML5和CSS3技术实现的经典游戏——超级玛丽的重制版。在这个项目中,开发者充分利用了CSS3的新特性,如选择器、动画、变换等,为玩家呈现了一个无需JavaScript即可运行的游戏环境...

    25个高级CSS技巧教程

    在深入探讨这25个高级CSS技巧之前,我们先来理解一下CSS本身及其在现代网页设计中的重要性。CSS,即层叠样式表(Cascading Style Sheets),是一种用来描述HTML或XML文档如何呈现的样式语言。随着互联网的发展,CSS...

    svg代码与css代码互相转换,并压缩

    总结起来,SVG和CSS之间的转换是Web开发中的一个重要技巧,它涉及到SVG的解析、CSS的构造以及数据URI的应用。"svg2css-master"作为一个工具,旨在简化这个过程,使开发者能够更轻松地在SVG和CSS之间切换,以适应不同...

    div css 超级讲义电子书

    《Div+CSS超级讲义》是一本专注于网页布局与样式设计的专业书籍,主要针对Web前端开发者和设计师。Div和CSS是构建现代网页布局的核心技术,它们的结合使用能够实现复杂而美观的页面设计。以下是对这个主题的详细阐述...

    css面试技巧课程中 PostCSS.zip

    面试时,掌握CSS不仅意味着了解基本语法,还包括性能优化、浏览器兼容性处理、响应式设计以及现代化工作流程等高级技巧。PostCSS是一个JavaScript工具,它允许开发者通过编写插件来转换CSS,使其适应新的语法或进行...

    css书写技巧来兼容不同的浏览器

    标题:“CSS书写技巧来兼容不同的浏览器” 描述:“解决不同浏览器样式(CSS)兼容问题,符合W3C标准。” 本文旨在探讨如何通过运用特定的CSS书写技巧来确保网站或应用程序能在不同浏览器中保持一致的视觉效果,...

    CSS3实现头像旋转功能

    CSS3中的transform:rotate()可以实现旋转功能 transition: all 2.0s;表示所有的属性变换在2秒内完成; transform: rotate(360deg);表示图片旋转360度。 参考文档: ...

    CSS经典技巧,学习CSS更轻松

    ### CSS经典技巧详解 #### 一、CSS字体属性简写规则 在CSS中,我们可以将多个字体相关的属性合并成一行来书写,以提高代码的简洁性和可读性。例如: - **常规方式**:分别设置字体粗细、斜体、小写字母大写等属性...

    css-protips, 帮助你掌握CSS技巧的技巧集合.zip

    css-protips, 帮助你掌握CSS技巧的技巧集合 CSS Protips 帮助你掌握CSS技巧的技巧集合。对于其他优秀列表,请查看 @sindresorhus curated curated列表awesome列表。 table-内容Protips支持插件翻译工具

    CSS禅意花园-css的超级精典实例

    这个项目由上百位国内外顶尖的CSS设计师参与,他们通过自己的创意和技巧,构建出一系列独特的网页设计实例,以此来探索和推动CSS的边界。下面,我们将深入探讨《CSS禅意花园》中的核心知识点。 1. **CSS选择器**:...

Global site tag (gtag.js) - Google Analytics