返回课程

1.CSS阴影详解

设计师常常使用一些独特的字体效果和页面效果,阴影是其中一个,它可以让页面中的文字和元素具有立体的效果,从而被突出出来。比如对于文字阴影,传统的方法可能需要将文字切出来,直接使用图片,如果考虑SEO和网站性能,还可能会使用CSS Sprites等技术将图片整合:

2.CSS选择符详解

一、类型选择符

 

什么是类型选择符?指以网页中已有的标签类型作为名称的行径符。body是网页中的一个标签类型,div,p,span都是。
如下:

body {}
div {}
p {}
span {}

 

二、群组选择符

 

对于XHMTL对象,可以对一组同时进行了相同的样式指派。
使用逗号对选择符进行了分隔,这样书写的优点在于同样的样式只需要书写一次即可,减少代码量,改善CSS代码结构。
使用时应该注意"逗号"是在半角模式下,并非中文全角模式。
如下:

h1,h2,h6,p,span
{
font-size:12px;
color:#FF0000;
font-family: arial;
}

 

三、包含选择符


对某对象中的子对象进行样式指点定,这样选择方式就发挥了作用。
需要注意的是,仅对此对象的子对象标签有效,对于其它单独存在或位于此对象以外的子对象,不应用此样式设置。
这样做的优点在于,帮我们避免过多的id、class设置,直接对所需的元素进行定义。
如下:

h2 span
{
color:red;
}
如下:
body h1 span strong
{
font-weight:bold;
}

 

四、id选择符

 

根据DOM文档对象模型原理所出现的选择符,对于一个XHTML文件,其中的每一个标签都可以使用一个id=""的形式进行一个名称指派,但需要注意,在一个XHTML文件中id是具有唯一性而不可以重复的。
在div css布局的网页中,可以针对不同的用途进行命名,如头部为header、底部为footer。
XHTML如下:

<div id="content"></div>


CSS如下:

#content
{
font-size:14px;
line-height:120%;
}

 

五、class选择符

 

其实id是对于XHTML标签的扩展,而class是对SHTML多个标签的一种组合,class直译的意思是类或类别。
对于XHTML标签使用class=""进行名称指派。与id不同,class可以重复使用,对于多个样式相同的元素,可以直接定义为一个class。
使用class的优点已不言自明,它对CSS代码重用性有良好的体现,众多的标签均可以使用一个样式来定义而不需要每一个编写一个样式代码。
XHTML如下:

<p class="he"></p>
<span class="he"></span>
<h5 class="he"></h5>

 

CSS如下:

.he
{
margin:10px;
background-color:red;
}

 

六、标签指定式的选择符

 

如果想同时使用id和class,也想同时使用标签选择符,可以使用如下的方式:

h1#content {}
/*表示所有id为content的h1标签*/
h1.p1 {}
/*表示所有class为p1的h1标签*/

标签指定式选择符的精度介于标签选择符及id/class选择符之间,是常用的选择符之一。

 

七、组合选择符

 

对于上面的所有选择符而言,进行组合使用。如下:

h1 .p1 {}
/*表示h1下的所有class为p1的标签*/
#content h1 {}
表示id为content的标签下的所有h1标签
h1 .p1,#content h1 {}
/*表示h1下的所有class为p1的标签以及id为content的标签下的所有h1标签*/
h1#content h2{}
/*id为content的h1标签下的h2标签*/

CSS选择符是非常自由与灵活的,可以根据页面的需要,使用各种选择符,尽量结构化与优化CSS文件.

3.网页制作技巧

  我们在进行DivCSS布局的时候,非常关注CSS技巧的学习,今天向大家推荐3个所谓的 “顶级”CSS技巧!虽然没有什么新意,但对新手而言却非常重要!

 

  一、在一行内声明CSS

 

4.CSS网页制作技巧


  本篇总结了一些css常用技巧,为网站重构打下基础,但愿您能学到一点有用的东西。

 

  一.使用css缩写

 

  使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。css缩写的主要规则请参看《css基本语法》。

 

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

 

  忘记定义尺寸的单位是CSS新手普遍的错误。在HTML中你可以只写;100,但是在CSS中,你必须给一个准确的单位,比如:" 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{;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更加简洁、更加容易阅读。

5.表单布局的五个小技巧

div css表单布局的五个小技巧可以帮助你更灵活的控制表单,使页面更加满意。

 

1、表单文本输入的移动选择:

 

在文本输入栏中,如果加入了提示,来访者往往要用鼠标选取后删除,再输入有用的信息。其实只要加入onMouseOver="this.focus()" onFocus="this.select()" 代码到 <textarea> 中,一切就会变得简单多了,如:

<textarea name=textarea wrap=virtual rows=2 cols=22 onMouseOver="this.focus()" onFocus="this.select()">Input English..</textarea>
类似的,可以加入代码到<input>。

 

2、表单输入单元点击删除:


本列同上则作用类似,只是使用鼠标上略有变化,需要点击而不像上则的只要鼠标覆盖。如:

<input type=text name="address" size=19 value="Enter,e-mail..."onFocus="this.value=''">
点击输入单元后,提示信息会删除,是不是很方便。

 

3、表单输入单元的边框设置:

 

更改传统的表单单元边框,会让你的主页生色不少。如:

 

<input type=radio name=action value=subscribe checked style="BORDER-BOTTOM: dashed 1px; BORDER-LEFT: dashed 1px; BORDER-RIGHT: dashed 1px; BORDER-TOP: dashed 1px;background-color: #FEF5C8">
其中"style=***"为左右上下和背景色设置,适用于其它单元,请读者亲自试试。

 

4、表单输入单元的文字设置:

 

表单中单元的字体是可以修改的,如:

 

<input type=text name="address" size=19 value="Enter,e-mail..." style=font-family:"verdana";font-size:10px >

 

其中"style=***"为字体和字大小设置。

 

5、修改表单属性为弹出窗口:

 

大多数表单激活后,会在当前页面中打开,影响正常浏览。不如修改一下,如:

<form method=POST action=url target=_blank>
其中"target=_blank"为控制在弹出窗口打开。

6.代码编写隔行换色的技巧

  网页设计中我们经常会碰到用CSS(层叠样式表)实现隔行换色的需求,您可以根据您的需要,采用下面的任何一种方法,当然要注意适合你的具体编码与需求情况。

 

  一、使用background背景图片

 

  如果行高固定的话,推荐使用隔行换色的背景图,也推荐将行高固定,这样可以兼容一切浏览器。

 

  二、CSS Expression

 

  文字:color:expression(this.sourceIndex%2 ? '#ff0000':'#000000');
  背景:background-color:expression(this.sourceIndex%2 ? '#ff0000':'#000000');
  注意:本方法浏览器兼容度不够,不支持FF3。

  三、class分别定义

 

  <ul>
  <li class="bgcolor">...
  <li>...
  <li class="bgcolor">...
  <li>...
  </ul>

  实实在在的写法。

 

  四、通过JS


  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
  <html xmlns="">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>www.devdao.com - 四种实现CSS隔行换色的方法</title>
  <link href="index.css" rel="stylesheet" type="text/css" />
  <script type="text/javascript">
  function bgChange(){
  if(!document.getElementsByTagName) return false;
  var tables = document.getElementsByTagName("table");
  for(var i=0; i<tables.length; i++){
  var odd = false;
  trs = tables[i].getElementsByTagName("tr");
  for(var j=0; j<trs.length; j++){
  if(odd==true){
  trs[j].style.background = "#ccc";
  odd = false;
  }else{
  odd = true;
  }
  }
  }
  }
  window.onload = bgChange;
  </script>
  </head>
  <body   >
  <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  <tr>
  <td>测试文字</td>
  <td>测试文字</td>
  <td>测试文字</td>
  </tr>
  </table>
  <script type=’text/javascript’>
  //<![CDATA[
  if (document.getElementById(’processtime’)) document.getElementById(’processtime’).innerHTML="<span class=’runtimedisplay’>Run in 184 ms, 9 Queries.</span>";
  //]]>
  </script></body>
  </html>

7.编写CSS需要掌握的技巧

  由于“可视化”和操作简便,在DreamWeaver中编写CSS的朋友很多,今天我们介绍一些在Dreamweaver中编写CSS的“最佳习惯”,希望对大家有所帮助。

  CSS正在改变网站设计的进程。为迎合不断增长的倾向于CSS的设计人员的需求,Macromedia DW MX引进了一些新的及改善过的CSS相关的特性。有了这些新的特性,你可以为未来的更新作好计划,开发与W3C标准更加兼容的站点。本文讨论在DW MX中使用CSS以及突出某一特定CSS特性时的一些建议。

  一般地讲,样式表(style sheet)就是控制网页内容外观的格式化的规则的集合。可以以三种不同的方式在你的页面中使用CSS:

  代码式(Inline):写入到代码中的一次性的样式。
  内嵌式(Embedded):可控制一个页面中所有元素的样式表
  外联式(External):可控制许多页面中的元素的样式表

  事实上,许多站点都根据需要把这三种方式结合起来使用。

  在使用CSS时一个需要重点考虑的事实是不同的浏览器以及同一浏览器的不同版本以不同的方式来解析CSS。除了网络浏览器的差异之外,你还要意识到还有很多其他的浏览器,比如听力浏览器,基于电视的浏览器以及Palm pilot和TTY(teletypewriter,远程打字机)一类的手持设备。

  最佳习惯是指什么?

  大多数技术都有自己约定俗成的标准。CSS也不例外。虽然并非网络上存在的所有CSS都很规范,但按照现有标准来使用CSS却还是不无裨益的。一般来说,开发人员应尽可能将内容与报告分离开来。这样做的好处在于:

  1、增加站点的寿命
  不规范的样式表可能在当时觉得很方便,但新版本的浏览器出来以后,很可能就会出现兼容性问题。到时逐页修改站点就是一项非常费时的工作同时也使使用CSS失去了意义。

  2、让你的站点对所有的用户以及浏览器都适用
  有些地方的政府已经立法要求网站必须让残障人士也同样可以浏览。为残障认识设计的浏览设备,比如听力浏览器,对CSS规范性要求极其严格。

  3、让站点更新和维护更加轻松
  使用方式得当的话,CSS可让你在一个页面中的调整快速应用到所有页面中去。

  你首先要做的选择是使用哪一种样式表。当涉及到最佳习惯时,对不同样式表的分析如下:

  Inline CSS:简单地说,你应该尽量避免使用。除了一些其他的缺点之外,使用Inline CSS意味着你并没有利用到CSS的真正优点,即你并没有将内容与格式分离开。DW MX使用Inline CSS主要是为了定位页面元素(这些元素在DW MX的用户界面中称为“层(layer)”),或者为了使用某个DHTML特效,它需要使用Inline 样式的javascript来改变一个对象的属性。

  Embedded CSS:它也不是最理想的,因为它只能对当前页面施加影响。在更新的过程中,如果某一个页面丢失,将会使站点的风格不一致;另外,当用户浏览你的站点时,每一页都要下载一次样式表信息。

  External CSS:这是你的第一选择。External CSS可以让所有连接到它的页面保持一致的外观风格;提纲挈领,更改一次,轻松更新所有相关页面;让你的页面体积更小,浏览速度更快。其他的一些最佳习惯将在下文分析具体的CSS特性时提及。

  在DW MX中创建CSS样式表

  在DW MX中创建CSS样式表时(Text 》CSS Style 》New style sheet),在弹出的对话框中,你有两个选择:新样式表文档(New Style Sheet File) 和只用于当前页(This Document Only)。选中“New Style Sheet File ”你就开始了创建External CSS的过程。这个选项要求你在真正的创建过程之前先命名样式表并为它选定一个保存位置;另外一个选项,This Document Only,则会直接把相关代码写入到页面的部分。

  你也可以在“新样式(New style)”对话框中选择一个现存的样式表来编辑或添加新的定义。

  应该连接到External CSS还是导入?

  创建外部样式表以后,你需要把它附加在每个页面上(或是模板)。要这样做,可以在CSS面板上淡季“附加样式表(Attach Style Sheet)”按纽,此时会弹出连接外部样式表 (Link External Style Sheet)对话框,在上面可以浏览到你的目标样式表的名字,找到以后,你可以选择连接(link) 或者导入(import )此外部样式表。

  连接是最常用的方式,选择“link”即可把样式表连接到页面。它会在你的页面中加入下面的标记:

  所有支持CSS的浏览器都支持连接选项。如果你想一些比较旧的浏览器(比如Netscape 4.x)也能“看到”这个样式表的话,就要采用下面的方法。

  如果你选择“导入”选项,所用的标记为:

  NetSscape4会完全忽略导入的CSS,而按照连接的CSS来解释页面。这样我们就可以放心使用CSS中的新功能,不必担心浏览器的兼容性问题了。

  CSS属性检查器

  在DW MX的属性检查器中可以轻易切换到CSS模式。缺省情况下,属性检查器会显示原始的HTML模式下字体标签。点击字体下拉菜单旁边的小“A”,你就可以看到目前可用的CSS样式表,而不是字体标签列表。

  同时,你也可以轻松切回到HTML模式。

  现成的CSS样式表

  DW MX中一个令人激动的CSS特性就是它包含了已制作好的CSS样式表。CSS的新用户可以先体验一下。选择File > New,在弹出的新文档对话框中选择选中CSS style sheets,在右边的方框中会出现所有可用的CSS列表。为了实践我们所说的最佳习惯,选择一个标记为“Accessible”的。

  将文档保存在站点文件夹内,然后就可以用上述的方法来把CSS附加在你的文档中了。

  设计时间样式表(Design Time style sheets)

  DW MX的这一特性可以让你在设计视图下工作时将样式表应用到页面,让你对站点的外观有一个更直观的认识。设计时间样式表将不会出现在站点内。从我们的最佳习惯的观点来讲,这一特性是非常有用的。如果你使用同时导入和连接两种方式(如上所述),附加设计时间样式表可以让你使用其中的任何一个来开发站点。当你想看在另一个样式表下页面外观如何时,你可以轻松更改为另一个样式表。

  对于要将CSS应用于服务器端(比如ASP, PHP, or ColdFusion)或是要在客户端通过javascript来存取的开发者来说,设计时间样式表同样有用。服务器端样式表也是处理客户端浏览器对CSS支持不好的又一种方式。但在以前版本的DW中,这种方式却不能让你在设计阶段查看CSS的实际效果。设计时间样式表让你实时查看样式表效果,所以你可在DW MX中以可视界面工作。另外一个好处就是当你上传站点文件时,你不必再检查整个站点寻找冗余的样式表了。

  验证

  无论你是自己创建样式表还是编辑现有的样式表,验证可以确保你不会误用不标准的标签或错误的代码。DW MX本身不包含CSS验证程序,你可以使用W3C站点提供的验证服务。在DW MX内你可以验证HTML 或DHTML标签( File > Check Page > Validate Markup (for HTML) 或 File > Check Page > Validate as XML for XHTML.)。在开发基于CSS的站点时,DW MX提供了很多辅助工具。有了MW MX的帮助,再加上对CSS良好的理解,你就可以开发出能经受时间考验的站点了。

8.需要引起重视的10个问题与技巧

  DIVcss初学者往往感觉自己遇到很多莫明其妙的问题,其实只是一些小细节没有引起重视,有多篇文章提醒大家经引起重视,下面罗列了10个问题与技巧,温故而知新。

  一、检查HTML元素是否有拼写错误、是否忘记结束标记 
  即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。 

  二、检查CSS是否正确 
  检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。 

  三、确定错误发生的位置 
  假如错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。 

  四、利用border属性确定出错元素的布局特性 
  使用float属性布局一不小心就会出错。这时为元素添加border属性确定元素边界,错误原因即水落石出。 

  五、float元素的父元素不能指定clear属性 
  MacIE下假如对float的元素的父元素使用clear属性,四周的float元素布局就会混乱。这是MacIE的闻名的bug,倘若不知道就会走弯路。 

  六、float元素务必指定width属性 
  很多浏览器在显示未指定width的float元素时会有bug。所以不管float元素的内容如何,一定要为其指定width属性。

  七、float元素不能指定margin和padding等属性 
  IE在显示指定了margin和padding的float元素时有bug。因此不要对float元素指定margin和padding属性(可以在float元素内部嵌套一个div来设置margin和padding)。也可以使用hack方法为IE指定非凡的值。 

  八、float元素的宽度之和要小于100% 
  假如float元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。因此请保证宽度之和小于99%。 

  九、是否重设了默认的样式? 
  某些属性如margin、padding等,不同浏览器会有不同的解释。因此最好在开发前首先将全体的margin、padding设置为0、列表样式设置为none等。 

  十、是否忘记了写DTD? 
  假如无论怎样调整不同浏览器显示结果还是不一样,那么可以检查一下页面开头是不是忘了写DTD。

9.Dreamweaver编写CSS要掌握的技巧

  在DreamWeaver中编写CSS,这种编写习惯并不提倡,不过由于“可视化”和操作简便,使用的朋友依然很多,今天罗列一些“最佳习惯”,希望对这些朋友有所帮助。

  CSS正在改变网站设计的进程。为迎合不断增长的倾向于CSS的设计人员的需求,Macromedia DW MX引进了一些新的及改善过的CSS相关的特性。有了这些新的特性,你可以为未来的更新作好计划,开发与W3C标准更加兼容的站点。本文讨论在DW MX中使用CSS以及突出某一特定CSS特性时的一些建议。

  一般地讲,样式表(style sheet)就是控制网页内容外观的格式化的规则的集合。可以以三种不同的方式在你的页面中使用CSS:

  代码式(Inline):写入到代码中的一次性的样式。

  内嵌式(Embedded):可控制一个页面中所有元素的样式表

  外联式(External):可控制许多页面中的元素的样式表

  事实上,许多站点都根据需要把这三种方式结合起来使用。

  在使用CSS时一个需要重点考虑的事实是不同的浏览器以及同一浏览器的不同版本以不同的方式来解析CSS。除了网络浏览器的差异之外,你还要意识到还有很多其他的浏览器,比如听力浏览器,基于电视的浏览器以及Palm pilot和TTY(teletypewriter,远程打字机)一类的手持设备。

  最佳习惯是指什么?

  大多数技术都有自己约定俗成的标准。CSS也不例外。虽然并非网络上存在的所有CSS都很规范,但按照现有标准来使用CSS却还是不无裨益的。一般来说,开发人员应尽可能将内容与报告分离开来。这样做的好处在于:

  1:增加站点的寿命

  不规范的样式表可能在当时觉得很方便,但新版本的浏览器出来以后,很可能就会出现兼容性问题。到时逐页修改站点就是一项非常费时的工作同时也使使用CSS失去了意义。

  2:让你的站点对所有的用户以及浏览器都适用。

  有些地方的政府已经立法要求网站必须让残障人士也同样可以浏览。为残障认识设计的浏览设备,比如听力浏览器,对CSS规范性要求极其严格。

  3:让站点更新和维护更加轻松。

  使用方式得当的话,CSS可让你在一个页面中的调整快速应用到所有页面中去。

  你首先要做的选择是使用哪一种样式表。当涉及到最佳习惯时,对不同样式表的分析如下:

  Inline CSS;简单地说,你应该尽量避免使用。除了一些其他的缺点之外,使用Inline CSS意味着你并没有利用到CSS的真正优点,即你并没有将内容与格式分离开。DW MX使用Inline CSS主要是为了定位页面元素(这些元素在DW MX的用户界面中称为“层(layer)”),或者为了使用某个DHTML特效,它需要使用Inline 样式的&#106avascript来改变一个对象的属性。

  Embedded CSS:它也不是最理想的,因为它只能对当前页面施加影响。在更新的过程中,如果某一个页面丢失,将会使站点的风格不一致;另外,当用户浏览你的站点时,每一页都要下载一次样式表信息。

  External CSS:这是你的第一选择。External CSS可以让所有连接到它的页面保持一致的外观风格;提纲挈领,更改一次,轻松更新所有相关页面;让你的页面体积更小,浏览速度更快。其他的一些最佳习惯将在下文分析具体的CSS特性时提及。

  在DW MX中创建CSS样式表

  在DW MX中创建CSS样式表时(Text 》CSS Style 》New style sheet),在弹出的对话框中,你有两个选择:新样式表文档(New Style Sheet File) 和只用于当前页(This Document Only)。选中“New Style Sheet File ”你就开始了创建External CSS的过程。这个选项要求你在真正的创建过程之前先命名样式表并为它选定一个保存位置;另外一个选项,This Document Only,则会直接把相关代码写入到页面的部分。

  你也可以在“新样式(New style)”对话框中选择一个现存的样式表来编辑或添加新的定义。

  应该连接到External CSS还是导入?

  创建外部样式表以后,你需要把它附加在每个页面上(或是模板)。要这样做,可以在CSS面板上淡季“附加样式表(Attach Style Sheet)”按纽,此时会弹出连接外部样式表 (Link External Style Sheet)对话框,在上面可以浏览到你的目标样式表的名字,找到以后,你可以选择连接(link) 或者导入(import )此外部样式表。

  连接是最常用的方式,选择“link”即可把样式表连接到页面。它会在你的页面中加入下面的标记:

  所有支持CSS的浏览器都支持连接选项。如果你想一些比较旧的浏览器(比如Netscape 4.x)也能“看到”这个样式表的话,就要采用下面的方法。

  如果你选择“导入”选项,所用的标记为:

  NetSscape4会完全忽略导入的CSS,而按照连接的CSS来解释页面。这样我们就可以放心使用CSS中的新功能,不必担心浏览器的兼容性问题了。

  CSS属性检查器

  在DW MX的属性检查器中可以轻易切换到CSS模式。缺省情况下,属性检查器会显示原始的HTML模式下字体标签。点击字体下拉菜单旁边的小“A”,你就可以看到目前可用的CSS样式表,而不是字体标签列表。

  同时,你也可以轻松切回到HTML模式。

  现成的CSS样式表

  DW MX中一个令人激动的CSS特性就是它包含了已制作好的CSS样式表。CSS的新用户可以先体验一下。选择File > New,在弹出的新文档对话框中选择选中CSS style sheets,在右边的方框中会出现所有可用的CSS列表。为了实践我们所说的最佳习惯,选择一个标记为“Accessible”的。

  将文档保存在站点文件夹内,然后就可以用上述的方法来把CSS附加在你的文档中了。

  设计时间样式表(Design Time style sheets)

  DW MX的这一特性可以让你在设计视图下工作时将样式表应用到页面,让你对站点的外观有一个更直观的认识。设计时间样式表将不会出现在站点内。从我们的最佳习惯的观点来讲,这一特性是非常有用的。如果你使用同时导入和连接两种方式(如上所述),附加设计时间样式表可以让你使用其中的任何一个来开发站点。当你想看在另一个样式表下页面外观如何时,你可以轻松更改为另一个样式表。

  对于要将CSS应用于服务器端(比如ASP, PHP, or ColdFusion)或是要在客户端通过&#106avascript来存取的开发者来说,设计时间样式表同样有用。服务器端样式表也是处理客户端浏览器对CSS支持不好的又一种方式。但在以前版本的DW中,这种方式却不能让你在设计阶段查看CSS的实际效果。设计时间样式表让你实时查看样式表效果,所以你可在DW MX中以可视界面工作。另外一个好处就是当你上传站点文件时,你不必再检查整个站点寻找冗余的样式表了。

  验证

  无论你是自己创建样式表还是编辑现有的样式表,验证可以确保你不会误用不标准的标签或错误的代码。DW MX本身不包含CSS验证程序,你可以使用W3C站点提供的验证服务。在DW MX内你可以验证HTML 或DHTML标签( File > Check Page > Validate Markup (for HTML) 或 File > Check Page > Validate as XML for XHTML.)。在开发基于CSS的站点时,DW MX提供了很多辅助工具。有了MW MX的帮助,再加上对CSS良好的理解,你就可以开发出能经受时间考验的站点了。

10.关于字体大小的设计


  在设计网络应用时,您必须决定如何编辑字体。使用CSS时存在大量选项,每个开发者都有自己的喜好。本文主要讨论字体大小和网络应用内的操作。在开发网络应用时,没有比外观更重要的事情了。所以,如果发现设计人员十分关注字体及字体大小,我不会感到奇怪!

 

  字体大小

 

  CSS2规范根据长度——水平和垂直尺寸——来定义字体。这个长度为一个数值,前面可能带一个可选的加(+)或减(-)标记符。另外,该数值后可能有一个可选的单位标识符。

 

  另外,CSS2规范定义了两个单位类型:绝对单位和相对单位。绝对值指定单位,而相对单位指定一个与另一个值成比例的值。下面的列表列出了相对单位标识符:

 

  em:元素字体的高度。它与使用该字体的元素的字体大小属性计算值相等。当它出现在字体大小属性值本身中时,会出现异常,这时它指母元素的字体大小。

 

  ex(x-高度):CSS2规范将它描述为小写字母x的高度。

 

  px(像素):它与背景或屏幕的分辨率有关。根据显示器分辨率输出不同像素,由于用户的喜好不同,显示器的分辨率可能会有很大差异。

 

  下面是有效的绝对单位标识符:

 

  in(英寸)
  cm(厘米)
  mm(毫米)
  pt(点,1点=1/72英寸)
  pc(12点活字,1pc=12点)

 

  测量绝对大小的另一种方法是使用衡量一个值的比例因数,应用以下关键字:最小、较小、小、中、大、较大和最小。中为基值,变小就减去一个因数,变大就增加一个因数,等等。CSS2规范定义的比例因数为1.2,这个值也可能依浏览器而变化。

 

  还可以应用百分比值来格式化文本。百分比值是一个可选的标记符,即数字后带有一个百分比符号(%)。百分比值总是与另一个值成比例。就字体而言,它与网页的基本字体大小成一定比例。

 

  如您所见,有许多方法可完成呈现文本这个看似简单的任务。下面的HTML格式文本(在段落元素中)应用了各种单位标识符。其中所有的值都相等,并假定以72dpi进行显示。

 

<html>
<head>
<title>Font Sizing - equal values</title>
</head><body>
<p style="font-size: 36pt;">Point</p>
<p style="font-size: 3pc;">Pica</p>
<p style="font-size: 0.5in;">Inches</p>
<p style="font-size: 1.27cm;">Centimeters</p>
<p style="font-size: 12.7mm;">Millimeters</p>
<p style="font-size: 300%;">Percentage</p>
</body>
</html>

 

  您可以在这个列表中增加像素值,但它的值要依环境而定。例如,我的分辨率为1280X1024的手提电脑将显示与在上表中使用50像素值一致的文本。

 

  仔细阅读前面提到的CSS2规范,可以获得更多字体大小方面的知识。现在我将讨论如何决定在网络应用中使用哪种方法。

 

  选择哪一种方法

 

  在CSS中有许多和字体有关的选项,但哪一种最适合在您的网络应用中使用呢?绝对大小有许多缺陷,特别是在一致性、灵活性与访问性方面存在问题。与绝对字体大小相比,任何视力有缺陷的用户可使用相对字体大小来扩大页面中的文字,这样更便于阅读。因此,开发者经常使用相对大小。

 

  让我们来详细了解一下相对大小:

 

  像素是最通用的大小值。多数浏览器都支持它,但也并非总是如此。浏览器常常将像素当作屏幕像素而非CSS像素来处理。像素的一个缺点在于,它忽略或否定用户的喜好,且不能在IE中调整大小。

 

  许多开发者偏爱用点来衡量字体大小,但点主要用于桌面印刷系统,不方便移植到网络中。在呈现文本时,操作系统或浏览器默认使用像素。

 

  最常用的方法是使用em或百分比大小。EM可在所有支持调整尺寸的浏览器中进行调整。Em还与用户偏爱的默认大小有关。在IE中应用em的结果难以预料。在IE中最好使用百分比来设定文本大小。

 

  下面的例子结合使用em和百分比值来对文本进行格式化。基本文本用百分比值来设置,然后用em来进行调整。

 

<html>
<head>
<title>Display Test</title>
<style type="text/css">
body {font: Sans Serif, Arial; font-size: 110 %}
</style></head><body>
<p style="font-size: 1.0em;">Basic text.</p>
<p style="font-size: 1.5em;">Larger text.</p>
<p style="font-size: 0.5em;">smaller text.</p>
</body>
</html>

 

  全都与外观有关

 

  现有的标准提供许多格式化并呈现网络应用中的文本的方法。开发者可以很方便地将文本分解成相对和绝对标识符。关键在于保持一致,并彻底检测解决方案。

11.编写CSS的“最佳习惯”

  由于“可视化”和操作简便,在DreamWeaver中编写CSS的朋友很多,今天我们介绍一些在Dreamweaver中编写CSS的“最佳习惯”,希望对大家有所帮助。

  CSS正在改变网站设计的进程。为迎合不断增长的倾向于CSS的设计人员的需求,Macromedia DW MX引进了一些新的及改善过的CSS相关的特性。有了这些新的特性,你可以为未来的更新作好计划,开发与W3C标准更加兼容的站点。本文讨论在DreamWeaver中使用CSS以及突出某一特定CSS特性时的一些建议。

  一般地讲,样式表(style sheet)就是控制网页内容外观的格式化的规则的集合。可以以三种不同的方式在你的页面中使用CSS:

  代码式(Inline):写入到代码中的一次性的样式。
  内嵌式(Embedded):可控制一个页面中所有元素的样式表
  外联式(External):可控制许多页面中的元素的样式表

  事实上,许多站点都根据需要把这三种方式结合起来使用。

  在使用CSS时一个需要重点考虑的事实是不同的浏览器以及同一浏览器的不同版本以不同的方式来解析CSS。除了网络浏览器的差异之外,你还要意识到还有很多其他的浏览器,比如听力浏览器,基于电视的浏览器以及Palm pilot和TTY(teletypewriter,远程打字机)一类的手持设备。

  最佳习惯是指什么?

  大多数技术都有自己约定俗成的标准。CSS也不例外。虽然并非网络上存在的所有CSS都很规范,但按照现有标准来使用CSS却还是不无裨益的。一般来说,开发人员应尽可能将内容与报告分离开来。这样做的好处在于:

  1、增加站点的寿命

  不规范的样式表可能在当时觉得很方便,但新版本的浏览器出来以后,很可能就会出现兼容性问题。到时逐页修改站点就是一项非常费时的工作同时也使使用CSS失去了意义。

  2、让你的站点对所有的用户以及浏览器都适用

  有些地方的政府已经立法要求网站必须让残障人士也同样可以浏览。为残障认识设计的浏览设备,比如听力浏览器,对CSS规范性要求极其严格。

  3、让站点更新和维护更加轻松

  使用方式得当的话,CSS可让你在一个页面中的调整快速应用到所有页面中去。

  你首先要做的选择是使用哪一种样式表。当涉及到最佳习惯时,对不同样式表的分析如下:

  Inline CSS:简单地说,你应该尽量避免使用。除了一些其他的缺点之外,使用Inline CSS意味着你并没有利用到CSS的真正优点,即你并没有将内容与格式分离开。DW MX使用Inline CSS主要是为了定位页面元素(这些元素在DW MX的用户界面中称为“层(layer)”),或者为了使用某个DHTML特效,它需要使用Inline 样式的javascript来改变一个对象的属性。

  Embedded CSS:它也不是最理想的,因为它只能对当前页面施加影响。在更新的过程中,如果某一个页面丢失,将会使站点的风格不一致;另外,当用户浏览你的站点时,每一页都要下载一次样式表信息。

  External CSS:这是你的第一选择。External CSS可以让所有连接到它的页面保持一致的外观风格;提纲挈领,更改一次,轻松更新所有相关页面;让你的页面体积更小,浏览速度更快。其他的一些最佳习惯将在下文分析具体的CSS特性时提及。

  在DW MX中创建CSS样式表

  在DW MX中创建CSS样式表时(Text-CSS Style -New style sheet),在弹出的对话框中,你有两个选择:新样式表文档(New Style Sheet File) 和只用于当前页(This Document Only)。选中“New Style Sheet File ”你就开始了创建External CSS的过程。这个选项要求你在真正的创建过程之前先命名样式表并为它选定一个保存位置;另外一个选项,This Document Only,则会直接把相关代码写入到页面的部分。

  你也可以在“新样式(New style)”对话框中选择一个现存的样式表来编辑或添加新的定义。

  应该连接到External CSS还是导入?

  创建外部样式表以后,你需要把它附加在每个页面上(或是模板)。要这样做,可以在CSS面板上淡季“附加样式表  

  (Attach Style Sheet)”按纽,此时会弹出连接外部样式表 (Link External Style Sheet)对话框,在上面可以浏览到你的目标样式表的名字,找到以后,你可以选择连接(link) 或者导入(import )此外部样式表。

  连接是最常用的方式,选择“link”即可把样式表连接到页面。它会在你的页面中加入下面的标记:

  所有支持CSS的浏览器都支持连接选项。如果你想一些比较旧的浏览器(比如Netscape 4.x)也能“看到”这个样式表的话,就要采用下面的方法。

  如果你选择“导入”选项,所用的标记为:

  NetSscape4会完全忽略导入的CSS,而按照连接的CSS来解释页面。这样我们就可以放心使用CSS中的新功能,不必担心浏览器的兼容性问题了。

  CSS属性检查器

  在DW MX的属性检查器中可以轻易切换到CSS模式。缺省情况下,属性检查器会显示原始的HTML模式下字体标签。点击字体下拉菜单旁边的小“A”,你就可以看到目前可用的CSS样式表,而不是字体标签列表。

  同时,你也可以轻松切回到HTML模式。

  现成的CSS样式表

  DW MX中一个令人激动的CSS特性就是它包含了已制作好的CSS样式表。CSS的新用户可以先体验一下。选择File > New,在弹出的新文档对话框中选择选中CSS style sheets,在右边的方框中会出现所有可用的CSS列表。为了实践我们所说的最佳习惯,选择一个标记为“Accessible”的。

  将文档保存在站点文件夹内,然后就可以用上述的方法来把CSS附加在你的文档中了。

  设计时间样式表(Design Time style sheets)

  DW MX的这一特性可以让你在设计视图下工作时将样式表应用到页面,让你对站点的外观有一个更直观的认识。设计时间样式表将不会出现在站点内。从我们的最佳习惯的观点来讲,这一特性是非常有用的。如果你使用同时导入和连接两种方式(如上所述),附加设计时间样式表可以让你使用其中的任何一个来开发站点。当你想看在另一个样式表下页面外观如何时,你可以轻松更改为另一个样式表。

  对于要将CSS应用于服务器端(比如ASP, PHP, or ColdFusion)或是要在客户端通过javascript来存取的开发者来说,设计时间样式表同样有用。服务器端样式表也是处理客户端浏览器对CSS支持不好的又一种方式。但在以前版本的DW中,这种方式却不能让你在设计阶段查看CSS的实际效果。设计时间样式表让你实时查看样式表效果,所以你可在DW MX中以可视界面工作。另外一个好处就是当你上传站点文件时,你不必再检查整个站点寻找冗余的样式表了。

  验证

  无论你是自己创建样式表还是编辑现有的样式表,验证可以确保你不会误用不标准的标签或错误的代码。DW MX本身不包含CSS验证程序,你可以使用W3C站点提供的验证服务。在DW MX内你可以验证HTML 或DHTML标签( File > Check Page > Validate Markup (for HTML) 或 File > Check Page > Validate as XML for XHTML.)。在开发基于CSS的站点时,DW MX提供了很多辅助工具。有了MW MX的帮助,再加上对CSS良好的理解,你就可以开发出能经受时间考验的站点了。

12.执行顺序与优先权的问题

  CSS执行顺序与优先权的问题其实就是一个冲突解决的问题,当同一个元素(或内容)被CSS选择符选中时,就要按照优先权取舍不同的CSS规则,这其中涉及到的问题其实很多。


  首先就是CSS规则的specificity(特殊性),CSS2.1有一套关于specificity的计算方式,用一个四位的数字串(CSS2是三位)来表示,最终specificity越高的规则越特殊,在优先级判定时也就越有优势。关于specificity的具体计算在各种情况下的数字加成有如下一般规则:


  每个ID选择符(#someid),加 0,1,0,0。


  每个class选择符(.someclass)、每个属性选择符(形如[attr=”"]等)、每个伪类(形如:hover等)加0,0,1,0


  每个元素或伪元素(:firstchild)等,加0,0,0,1


  其他选择符包括全局选择符*,加0,0,0,0。相当于没加,不过这也是一种specificity,后面会解释。
  按这些规则将数字串逐位相加,就得到最终计算得的specificity,然后在比较取舍时按照从左到右的顺序逐位比较。

  举一些例子吧:

 

h1 {color: red;} 
/* 只有一个普通元素加成,结果是 0,0,0,1 */
body h1 {color: green;} 
/* 两个普通元素加成,结果是 0,0,0,2 */ ——后者胜出       
h2.grape {color: purple;}
/* 一个普通元素、一个class选择符加成,结果是 0,0,1,1*/
h2 {color: silver;} 
/*一个普通元素,结果是 0,0,0,1 */ ——前者胜出       
html > body table tr[id=”totals”] td ul > li {color: maroon;} 
/* 7个普通元素、一个属性选择符、两个其他选择符,结果是0,0,1,7 */
li#answer {color: navy;} 


/* 一个ID选择符,一个普通选择符,结果是0,1,0,1 */ ——后者胜出 
除了specificity还有一些其他规则

 

  文内的样式优先级为1,0,0,0,所以始终高于外部定义。这里文内样式指形如<div style=”color: red”>blah</div>的样式,而外部定义指经由<link>或<style>标签定义的规则。


  有!important声明的规则高于一切。
  如果!important声明冲突,则比较优先权。


  如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。


  由继承而得到的样式没有specificity的计算,它低于一切其他规则(比如全局选择符*定义的规则)。


关于经由@import载入的外部样式,由于@import必须出现在所有其他规则定义之前(如不是,则浏览器应该忽略之),所以按照后来居上原则,一般优先权冲突时是占下风的。


  这里需要提一下IE,IE是可以识别位置错误的@import的,但无论@import在什么地方,它都认为是位于所有其他规则定义之前的,这可能会引发一些误会。
  所以优先权问题虽然看起来简单,但其背后还是有蛮复杂的机制的,需要多多留意。

13.CSS无效的十个常见原因

  我们学习Div+CSS网页布局的知识,可是W3C validation有时难以操作,但用它你可以查看由版面设计引起的差错。验证程序抛出大量差错和警告,说明你的XHTML尚未完善,可能无法在不同浏览器上保持一致功能。下面十个细微的失效问题难住了大批程序员,本文就告诉你如何解决。在本文开始前介绍一些使用W3C验证程序时需要注意的问题。 

  1、不要担心验证程序的警告:如果验证程序说发现12处错误以及83处警告,不要理它,继续进行下一步。 
  2、一次更正一个错误:按顺序进展工作,从上到下,一次修正一个错误。HTML用浏览器从上到下浏览,这些错误也是按同样顺序显示。 
  3、每次修正代码后要刷新代码,使它们重新生效:一个小错误常常会引发之后整页的连串错误。因此如果操作不当,“修正错误”也可能引发更多错误。每次修正后使代码重新生效,这样就可以确保完全解决问题。
  知道了上面这些基本的异常情况,下面我们就来看看版面设计无效的几个原因。

  一、div 标签未关闭
  这是版面设计失效的最常见原因之一。当我们了解到这是多少精致的版块设计失效的罪魁祸首时,总会大吃一惊。开启的div标签是最普遍的版块设计失误之一,也是最难诊断的失误之一。验证程序有时会指向错误的开启div标签,诊断时就像大海捞针一样麻烦。

  二、麻烦的embed标签
  九十年代早期,Microsoft和Netscape的浏览器开始能够辨认非标准的独有字体。遗憾的是这意味着W3C验证程序还不能识别某些关键HTML 标签,如“embed”,即使这些标签已经被广泛使用。如果确实希望得到严格的DOCTYPE(文档类型)验证,就只能放弃嵌套。
  如果同时想要生效的版面设计和嵌入式媒体,可以试试Flash Satay方法。

  三、不当的DOCTYPE声明
  不声明DOCTYPE,或者在文件开始错误声明DOCTYPE,也是一个常见错误。根据一般经验,Strict DOCTYPE是大家追求的最高级验证。Strict validation表明你的网页能够在所有浏览器上都得到最佳展示。关于DTD文档类型的声明,您可以参考52CSS.com的相关文章。

  四、结尾斜线
  如果你的网站不能验证,很有可能是在代码的某个地方漏写了结尾斜线。我们很容易忽略结尾斜线之类的东西,特别是在image标签等元素中。
  在严格的DOCTYPE中这是无效的。要在img标签结尾处加上“/”以解决此问题。

  五、Align标签
  如果DOCTYPE被设为Transitional,你就会使用“align”标签,但如果要求更高一点希望得到Strict验证,你会看到很多错误。 Align是另一个不可用于版面设计的标签。可以尝试用“float”或者“text-align”来代替align转换元素。

  六、JavaScript
  如果已经声明Strict DOCTYPE,就需要在JavaScript中覆盖CDATA标签。验证程序的这一方面难倒了很多程序员,因为网站倾向于为广告和追踪脚本使用嵌入的 JavaScript。如果必须用到JavaScript,可以在其前后加上如下标签:

  七、图像需要“alt”属性
  你可能还没有注意到,图像也是高级验证的潜在绊脚石。除了结尾斜线,高级验证也要求用alt标签来描述图像,如alt= ”Scary vampire picture”。
  搜索引擎也靠alt标签来识别网页上的图像,所以无论怎样加上alt标签总是好的。

  八、未知实体数据
  实体数据是又一个影响验证的易犯错误。我们可以考虑用适当的编码字符来代替“&”等符号。entire list中列出在XHTML版块设计中可用的适当的编码字符实体数据。

  九、不良嵌套
  嵌套就是元素里又包括元素,我们容易混淆嵌套元素的顺序。例如在div标签前启动strong标签,但又先关闭div标签。这可能不会改变版块布局,但却会使你的版块设计失效。

  十、缺少“title”标签
  尽管这看上去是一个很明显的错误,很多程序员(包括我自己)还是经常会在“head”版块中遗漏title标签。当你看到“missing a required sub-element of HEAD”(缺少HEAD的必要子元素)时,才会发现自己忘记添加title标签了。

14.设计网页头部的优化写法

      在div+css布局中,一般都这样来整体构架的:


<div id="header"></div>


<div id="center"></div>


<div id="footer"></div>

 

      而对于header部分,肯定要显示网站标题,除了显示网站标题外,还可能要显示其他比较重要的对象,比如网站的导航栏:

 

<div id="header"><BR><div id="title">这里是网站的标题</div>


<div id="nav">这里是网站导航栏</div><BR></div>

 

      很多人一般都这样写的,当然这样写并没有什么语法错误。但对于div来说有个原则,那就是尽少的使用div的嵌套(和table一样的缺点:1、对于用户:浏览器要消耗资源对嵌套的关系进行解析,影响速度;2、对于搜索:搜索引擎对嵌套的层数可能有所限制)。而且这样写带给我们的可读性也不算太高。

 

      那如何才是最优化,最科学的写法呢?

      我们选用其他的Xhtml代码来取代上面的div,那又如何选择呢??

      首先标题的选择——我们知道在xhtml中h1-h6是表示标题的,而header里的标题在全页来看是最重要的,我们选择h1来表示标题是顺其自然的。

      其次导航栏的选择——导航栏是由多个小块内容组成,我们选择无序列表

 

<ul><li></li></ul>

 

      来表示菜单最合适不过了!

      最后以上的内容可以优化成:

 

<div id="header"><BR><h1>这里是网站的标题</h1>

<ul><BR><li>这里是网站导航栏</li>

</ul><BR></div>

15.DIV+CSS的命名规则小结

一、CSS文件及样式命名


1、CSS文件命名规范
全局样式:global.css;
框架布局:layout.css;
字体样式:font.css;
链接样式:link.css;
打印样式:print.css;


2、CSS样式命名规范


本人建议:用字母、_号工、-号、数字组成,必须以字母开头,不能为纯数字。为了开发后样式名管理方便,大家请用有意义的单词或缩写组合来命名,让同事一看就明白这样式大概是哪一块的,这样就节省了查找样式的时间,例如:
头部样式用header,头部左边,可以用header_left或header_l,还有如果是列结构的可以这样——box _1of3 (三列中的第一列),box_2of3 (三列中的第二列)、box _3of3 (三列中的第三列),其它的我就不一一举例了,大家按以上规律去命名就好。
下面列出一些常用的命名单词方便大家使用:(以后大家工作过程中慢慢把自己积累的单词都共享出来,那大家的命就会更加统一了,就不会有一义多词的情况了。)


容 器:container/box
头 部:header
主 导 航:mainNav
子 导 航:subNav
顶 导 航:topNav
网站标志:logo
大 广 告:banner
页面中部:mainBody
底 部:footer
菜 单:menu
菜单内容:menuContent
子 菜 单:subMenu
子菜单内容:subMenuContent
搜 索:search
搜索关键字:keyword
搜索范围:range
标签文字:tagTitle
标签内容:tagContent
当前标签:tagCurrent/currentTag
标  题:title
内 容:content
列 表:list
当前位置:currentPath
侧 边 栏:sidebar
图 标:icon
注 释:note
登 录:login
注 册:register
列 定 义:column_1of3 (三列中的第一列)
column_2of3 (三列中的第二列)
column_3of3 (三列中的第三列)


二、id和class的使用及区别


我们知道在样式表定义一个样式的时候,可以定义id也可以定义class,例如:
ID方法:#test{color:#333333},在页面中调用<div>内容<div>
CLASS方法:.test{color:#333333},在页面中调用<div class="test">内容<div>
id一个页面只可以使用一次,class可以多次引用。
我在页面中用了多个相同id在IE中显示也正常,id和class好象没什么区别,用多个相同id有什么影响吗?
页面存在多个相同的ID影响就是不能通过W3的校验。
在页面显示上,目前的浏览器还都允许你犯这个错误,用多个相同ID“一般情况下”也能正常显示。但是当你需要用JavaScript通过id来控制这个div,那就会出现错误。
id是一个标签,用于区分不同的结构和内容,就象你的名字,如果一个屋子有2个人同名,就会出现混淆;
class是一个样式,可以套在任何结构和内容上,就象一件衣服;
概念上说就是不一样的:
id是先找到结构/内容,再给它定义样式;class是先定义好一种样式,再套给多个结构/内容。
也就是说建议大家在写XHML+CSS时如果是维一的结构定位的就用id,否则就用class吧(这样让出非结构定位的div块的id让程序员自己定义使用)
web标准希望大家用严格的习惯来写代码。


三.使用css缩写


使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。常用的css缩写的主要规则:
颜色
16进制的色彩值,如果每两位的值相同,可以缩写一半,例如:
#000000可以缩写为#000;#336699可以缩写为#369;
盒尺寸
通常有下面四种书写方法:
property:value1; 表示所有边都是一个值value1;
property:value1 value2; 表示top和bottom的值是value1,right和left的值是value2
property:value1 value2 value3; 表示top的值是value1,right和left的值是value2,bottom的值是value3
property:value1 value2 value3 value4; 四个值依次表示top,right,bottom,left
方便的记忆方法是顺时针,上右下左。具体应用在margin和padding的例子如下:
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-size和font-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


忘记定义尺寸的单位是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#id1{}可以写成#id1{}
这样可以节省一些字节。


七、默认值


通常padding和margin的默认值为0,background-color的默认值是transparent。但是在不同的浏览器默认值可能不同。如果怕有冲突,可以在样式表一开始就先定义所有元素的margin和padding值都为0,象这样:
* {
padding:0;
margin:0
}
或者是针对某元素来定义:
ul,li,div,span {
padding:0;
margin:0
}

 

八、CSS的优先级


行内样式(inline style) > ID选择符 > 样式(class),伪类(pseudo-class)和属性(attribute)选择符 > 类别(type),伪对象(pseudo-element)
解释:
*内联样式(inline style):元素的style属性,比如 <div style="color:red;"></div> ,其中的color:red;就是行内样式
*ID选择符:元素的id属性,比如 <div></div> 可以用ID选择符#content
*伪类(pseudo-class):最常见的是锚(a)伪类,比如a:link,a:visited.
*属性选择符(attribute selectors):比如div[class=demo],含有class为demo的div元素
*类别选择器(type selector):HTML标签选择,比如div .demo,div元素下含有class为demo的元素
*伪对象选择器(pseudo-element selector):比如div:first-letter,div元素下的第一个单词。

 

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


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


十.多重CSS样式定义,属性追加重复最后优先原则


一个标签可以同时定义多个class,也可以是同一个class中重复定义属性。例如:
我们先定义两个样式
.one{width:200px;background:url(1.jpg) no-repeat left top;}
.two{border:10px solid #000; background:url(2.jpg) no-repeat left top;}
在页面代码中,我们可以这样调用:
<div class="one" two></div>
这样最终的显示效果是这个div样式是什么呢??重复的是以哪一个为准呢??
<div class="one" two></div>应用到的样式如下:
width:200px;
border:10px solid #000;
background:url(2.jpg) no-repeat left top;
因为,当应用两个或多个样式时,浏览器所应用的样式根据是属性追加重复最后优先原则
就是说两个或多个或重复的样式名定义,浏览器所应用的样式是按先后顺序的,如果定义了重复的属性值,以最后定义的为准,如果应用了两个或多个样式名,里面不重复定义的属性值就追加上去,重复的属性值就以最后一个为准。这里要注意的是,样式的先后不是根据页面上应用的名字顺序,而是样式表里的样式顺序。


十一、使用子选择器(descendant selectors)


使用子选择器是影响他们效率的原因之一。子选择器可以帮助你节约大量的class定义。我们来看下面这段代码:
<div>
<ul>
<li class="subnavitem"> <a href=http://duote.com/# class="subnavitem">Item 1</a></li>>
<li class="subnavitemselected"> <a href="http://duote.com/#" class="subnavitemselected"> Item 1</a> </li>
<li class="subnavitem"> <a href="http://duote.com/#" class="subnavitem"> Item 1</a> </li>
</ul>
</div>
这段代码的CSS定义是:
div#subnav ul { }
div#subnav ul li.subnavitem { }
div#subnav ul li.subnavitem a.subnavitem { }
div#subnav ul li.subnavitemselected { }
div#subnav ul li.subnavitemselected a.subnavitemselected { }
你可以用下面的方法替代上面的代码
<ul id=”subnav”>
<li> <a href="http://duote.com/#>" Item 1</a> </li>
<li class="sel"> <a href="http:/duote.com/#>" Item 1</a> </li>
<li> <a href="http://duote.com/#>" Item 1</a> </li>
</ul>
样式定义是:
#subnav { }
#subnav li { }
#subnav a { }
#subnav .sel { }
#subnav .sel a { }
用子选择器可以使你的代码和CSS更加简洁、更加容易阅读。
如果一个容器里有多个同样的元素,而且这些元素样式都不一样,请避免用这个方式,建以采用不同的class如:
<ul class=”one”><li></li></ul>
<ul class=”tow”><li></li></ul>



十二、不需要给背景图片路径加引号


为了节省字节,我建议不要给背景图片路径加引号,因为引号不是必须的。例如:
background-image:url(“images
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》


十四、CSS hack


有些时候,你需要对IE浏览器的bug定义一些特别的规则,这里有太多的CSS技巧(hacks),我只使用其中的两种方法,不管微软在即将发布的IE7 beta版里是否更好的支持CSS,这两种方法都是最安全的。
1.注释的方法
(a)在IE中隐藏一个CSS定义,你可以使用子选择器(child selector):
html>body p {
}
(b)下面这个写法只有IE浏览器可以理解(对其他浏览器都隐藏)
* html p {
}
(c)还有些时候,你希望IE/Win有效而IE/Mac隐藏,你可以使用反斜线技巧:
* html p {
declarations
}
(d)下面这个写法只有IE7浏览器可以理解(对其他浏览器都隐藏)
*+ html p {
}
2.条件注释(conditional comments)的方法


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


<!--[if IE]>
<link rel=stylesheet/css href="http://www.duote.com/style/ie.css" />
<![endif]-->


还有更多的CSS hack大家可以通过网上找找,但是有很多hack都是不符合w3c标准的,本人根据以上的hack写了一个能区分IE6、IE7、FF的样式,而且可以符合w3c标准,代码如下:
.classname {width:90px!important;width:100px;}
*+html .classname {width:95px!important;}
这样写后在IE6下宽是100px,IE7下是95px,火狐下是90px。


十五、调试技巧:层有多大?


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


十六、CSS代码书写样式
在写CSS代码的时候,对于缩进、断行、空格,每个人有每个人的书写习惯。在经过不断实践后,我决定采用下面这样的书写样式:
.classname {
width:100px;
}
当使用联合定义时,我通常将每个选择器单独写一行,这样方便在CSS文件中找到它们。在最后一个选择器和大括号{之间加一个空格,每个定义也单独写一行,分号直接在属性值后,不要加空格。
我习惯在每个属性值后面都加分号,虽然规则上允许最后一个属性值后面可以不写分号,但是如果你要加新样式时容易忘记补上分号而产生错误,所以还是都加比较好。
最后,关闭的大括号}单独写一行。空格和换行有助与阅读。

16.列表元素ul ol li dl dt dd释义

ol 有序列表

 

<ol>
<li>……</li>
<li>……</li>
<li>……</li>
</ol>

 

表现为

 

1……
2……
3……

 

ul 无序列表,表现为li前面是大圆点而不是123

 

<ul>
<li>……</li>
<li>……</li>
</ul>

 

很多人容易忽略 dl dt dd的用法

 

dl 内容块
dt 内容块的标题
dd 内容

 

可以这么写:

 

<dl>
<dt>标题</dt>
<dd>内容1</dd>
<dd>内容2</dd>
</dl>

 

dt 和dd中可以再加入 ol ul li和p


理解这些以后,在使用div布局的时候,会方便很多,w3c提供了很多元素辅助布局。

 

17.网页添加CSS样式表的四种方式

一、使用STYLE属性: 将STYLE属性直接加在个别的元件标签里。


<元件(标签) STYLE="性质(属性)1: 设定值1; 性质(属性)2: 设定值2; ...}
例如:
<TD STYLE="COLOR:BLUE; font-size:9pt; font-family:"标楷体"; line-height:150%>
这种用法的优点 是可灵巧应用样式於各标签中,但是缺点则是没有整篇文件的『统一性』。

 

二、使用STYLE标签: 将样式规则写在<STYLE>...</STYLE>标签之中。


<STYLE TYPE="text/css">
<!--
样式规则表
-->
</STYLE>
例如:
<STYLE TYPE="text/css">
<!--
BODY {
color: BLUE;
background: #FFFFCC;
font-size: 9pt}
TD, P {
COLOR: GREEN;
font-size: 9pt}
-->
</STYLE>


通常是将整个的 <STYLE>...</STYLE>结构写在网页的<HEAD> </HEAD>部份之中。这种用法的优点就是在於整篇文件的统一性,只要是有声明的的元件即会套用该样式规则。缺点就是在个别元件的灵活度不足。

 

三、使用 LINK标签: 将样式规则写在.css的样式档案中,再以<LINK>标签引入。


假设我们把样式规则存成一个example.css的档案,我们只要在网页中加入
<LINK REL=STYLESHEET TYPE="text/css" HREF="example.css">
即可套用该样式档案中所制定好的样式了。 通常是将LINK标签写在网页的<head></head>部份之中。这种用法的优点就是在於可以把要套用相同样式规则的数篇文件都指定到同一个样式档案即可。缺点也是在个别文件或元件的灵活度不足。


四、使用@import引入: 跟LINK用法很像,但必 放在<STYLE>...</STYLE> 中。

 
<STYLE TYPE="text/css">
<!--
@import url(引入的样式表的位址、路径与档名);
-->
</STYLE>
例如:
<STYLE TYPE="text/css">
<!--
@import url(http://yourweb/ example.css);
-->
</STYLE>
要注意的是,行末的分号是绝对不可少的!这种方式也可以把
@import url(http://yourweb/ example.css);
加到其它样式内调用。

18.input标签写CSS时需要注意的几点

  飞鱼的声纳顶部的搜索框让我头疼了很长时间,原因是总不能获得跨浏览器的统一样式。主要的问题有这么两个:一是input标签的高度不能统一,Firefox和IE中的高度始终不能一致;二是在IE浏览器中属性为text的input标签中的输入文字不像标准浏览器中的那样垂直居中显示,而是靠输入框的左上角显示。

 

  为了彻底解决搜索框的这些问题,我以GreenGaint主题搜索框的样式为准,重写了一遍代码并且以像素为单位测量了一下在没有任何样式表的情况下<input>标签在默认浏览器中的实际差别。

 

  结果发现:input标签在type为text时,在Firefox和Safari中的默认高度为22像素(包括上下边框)宽度为146像素(包括左右边框),而在IE中的默认高度为24像素,而宽度却和Firefox和Safari是一致的,也是146像素。当 input标签在type为submit时,在Firefox中的高度为23像素(包括阴影),宽度为75像素。在Safari中高度为21像素,宽度为73像素,在IE中高度为为25像素、宽度为73像素。

 

  那么在样式化input标签时又该注意哪些问题呢?先来看下面经过样式化后,在不同浏览器中都有着良好表现的搜索框。

 

  总结一下,在给input标签写CSS时需要注意的有以下几点:

 

  一、不要给属性为text的input标签设置高度,这样无法让IE浏览器下输入框中的文字垂直居中显示。尽管你后来想要通过设置padding属性来让文字居中,你会发现根本没法让它在Firefox和IE中取得一致的效果。正确的做法是直接给input标签设置padding属性,通过内边距属性来调节input标签的高度,而且这时IE中的文字也是居中显示的。

 

  二、input标签不会继承父元素的字体样式和大小,需要直接给input标签声明font-family和font-size属性。

 

  三、给属性为text的input标签设置合适的width属性和padding属性,确保其中的文字在合适的范围内出现。尤其是使用了背景图片后,要让文字框的大小和背景图片的大小相当,这样看上去更加美观。

19.关于CSS Hack与float闭合(清除浮动)

一、CSS HACK

  以下两种方法几乎能解决现今所有HACK.


  1, !important
  随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)


20.background-position负值定位深入理解

下面是我要用到的一个背景图:

 

CSS


代码如下: