`

css样式介绍

阅读更多

CSS+DIV的优点

  采用CSS+DIV进行网页重构相对与传统的TABLE网页布局而具有以下3个显著优势:

  1:表现和内容相分离

  将设计部分剥离出来放在一个独立样式文件中,HTML文件中只存放文本信息。这样的页面对搜索引擎更加友好。

  2:提高页面浏览速度

  对于同一个页面视觉效果,采用CSS+DIV重构的页面容量要比TABLE编码的页面文件容量小得多,前者一般只有后者的1/2大小。浏览器就不用去编译大量冗长的标签。

  3:易于维护和改版

  你只要简单的修改几个CSS文件就可以重新设计整个网站的页面。

感性体验CSS

  

什么是CSS呢?你可能急迫的想知道答案。但是空泛的文字描述意义不大,让我们先来一点感性体验吧。看看这个没有添加CSS的HTML文件:http://www.csszengarden.com/zengarden-sample.html

  是一个普普通通的网页。然而通过给这个文件添加的CSS规则,我们可以得到十分美观的网页:http://www.csszengarden.com/

  这还不是全部,不改动HTML,只是通过添加不同的CSS规则,我们就可以得到各种不同样式的网页:

  http://www.csszengarden.com/?cssfile=/208/208.css&page=0

  好了,下面我们再来回答什么是CSS这个问题。

  什么是Cascading Style Sheets(层叠样式表)

  * CSS是Cascading Style Sheets(层叠样式表)的简称.

  * CSS语言是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语言).

  * 在标准网页设计中CSS负责网页内容(XHTML)的表现.

  * CSS文件也可以说是一个文本文件,它包含了一些CSS标记,CSS文件必须使用css为文件名后缀.

  * 可以通过简单的更改CSS文件,改变网页的整体表现形式,可以减少我们的工作量,所以她是每一个网页设计人员的必修课.

  * CSS是由W3C的CSS工作组产生和维护的.

如何将样式表加入到网页

  可以用以下三种方式将样式表加入您的网页。而最接近目标的样式定义优先权越高。高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。

  链入外部样式表文件 (Linking to a Style Sheet)

  你可以先建立外部样式表文件(.css),然后使用HTML的link对象。示例如下:

  <head>

  <title>文档标题</title>

  <link rel=stylesheet href="http://www.dhtmlet.com/dhtmlet.css" type="text/css">

  </head>

  而在XML中,你应该如下例所示在声明区中加入:

  <? xml-stylesheet type="text/css" href="http://www.dhtmlet.com/dhtmlet.css" ?>

  定义内部样式块对象 (Embedding a Style Block)

  你可以在你的HTML文档的<HTML>和<BODY>标记之间插入一个<STYLE>...</STYLE>块对象。 定义方式请参阅样式表语法。示例如下:

  <html>

  <head>

  <title>文档标题</title>

  <style type="text/css">

  <!--

  body {font: 10pt "Arial"}

  h1 {font: 15pt/17pt "Arial"; font-weight: bold; color: maroon}

  h2 {font: 13pt/15pt "Arial"; font-weight: bold; color: blue}

  p {font: 10pt/12pt "Arial"; color: black}

  -->

  </style>

  </head>

  <body>

  请注意,这里将style对象的type属性设置为"text/css",是允许不支持这类型的浏览器忽略样式表单。

  内联定义 (Inline Styles)

  内联定义即是在对象的标记内使用对象的style属性定义适用其的样式表属性。示例如下:

  这一行被增加了左右的外补丁

CSS的语法:

  CSS的定义是由三个部分构成:

  选择符(selector),属性(properties)和属性的取值(value)。

  语法: selector {property: value} (选择符 {属性:值})

  说明:

  ·选择符是可以是多种形式,一般是你要定义样式的HTML标记,例如BODY、P、TABLE……,你可以通过此方法定义它的属性和值,属性和值要用冒号隔开:

  例子:body {color: black},此例的效果是使页面中的文字为黑色。

  ·如果属性的值是多个单词组成,必须在值上加引号,比如字体的名称经常是几个单词的组合:

  例子:p {font-family: "sans serif"} (定义段落字体为sans serif)

  · 如果需要对一个选择符指定多个属性时,我们使用分号将所有的属性和值分开:

  例子:p {text-align: center; color: red} (段落居中排列;并且段落中的文字为红色)

  2. 选择符组

  你可以把相同属性和值的选择符组合起来书写,用逗号将选择符分开,这样可以减少样式重复定义:

  h1, h2, h3, h4, h5, h6 { color: green } (这个组里包括所有的标题元素,每个标题元素的文字都为绿色)

  p, table{ font-size: 9pt } (段落和表格里的文字尺寸为9号字)

  效果完全等效于:

  p { font-size: 9pt }

  table { font-size: 9pt }

  3. 类选择符

  用类选择符你能够把相同的元素分类定义不同的样式,定义类选择符时,在自定类的名称前面加一个点号。假如你想要两个不同的段落,一个段落向右对齐,一个段落居中,你可以先定义两个类:

  p.right {text-align: right}

  p.center {text-align: center}

  然后用不在不同的段落里,只要在HTML标记里加入你定义的class参数:

  这个段落向右对齐的

  这个段落是居中排列的

  类选择符还有一种用法,在选择符中省略HTML标记名,这样可以把几个不同的元素定义成相同的样式:

  .center {text-align: center} (定义.center的类选择符为文字居中排列)

  这样的类可以被应用到任何元素上。下面我们使h1元素(标题1)和p元素(段落)都归为“center”类,这使两个元素的样式都跟随“.center”这个类选择符:

  <h1 class="center">这个标题是居中排列的</h1>

  这个段落也是居中排列的

  注意:这种省略HTML标记的类选择符是我们经后最常用的CSS方法,使用这种方法,我们可以很方便的在任意元素上套用预先定义好的类样式。

  4. ID选择符

  在HTML页面中ID参数指定了某个单一元素,ID选择符是用来对这个单一元素定义单独的样式。

  ID选择符的应用和类选择符类似,只要把CLASS换成ID即可。将上例中类用ID替代,ID只能在一个页面中出现一次,而class可以多次运用.

  这个段落向右对齐

  定义ID选择符要在ID名称前加上一个“#”号。和类选择符相同,定义ID选择符的属性也有两种方法。下面这个例子,ID属性将匹配所有id="intro"的元素:

  #intro

  {

  font-size:110%;

  font-weight:bold;

  color:#0000ff;

  background-color:transparent

  } (字体尺寸为默认尺寸的110%;粗体;蓝色;背景颜色透明)

  下面这个例子,ID属性只匹配id="intro"的段落元素:

  p#intro

  {

  font-size:110%;

  font-weight:bold;

  color:#0000ff;

  background-color:transparent

  }

  注意:ID选择符局限性很大,只能单独定义某个元素的样式,一般只在特殊情况下使用。

  5. 包含选择符

  可以单独对某种元素包含关系定义的样式表,元素1里包含元素2,这种方式只对在元素1里的元素2定义,对单独的元素1或元素2无定义,例如:

  table a

  {

  font-size: 12px

  }

  在表格内的链接改变了样式,文字大小为12像素,而表格外的链接的文字仍为默认大小。

  6. 样式表的层叠性

  层叠性就是继承性,样式表的继承规则是外部的元素样式会保留下来继承给这个元素所包含的其他元素。事实上,所有在元素中嵌套的元素都会继承外层元素指定的属性值,有时会把很多层嵌套的样式叠加在一起,除非另外更改。例如在DIV标记中嵌套P标记:

  div { color: red; font-size:9pt}

  ……

  这个段落的文字为红色9号字

  (P元素里的内容会继承DIV定义的属性)

  注意:有些情况下内部选择符不继承周围选择符的值,但理论上这些都是特殊的。例如,上边界属性值是不会继承的,直觉上,一个段落不会同文档BODY一样的上边界值。

  另外,当样式表继承遇到冲突时,总是以最后定义的样式为准。如果上例中定义了P的颜色:

  div { color: red; font-size:9pt}

  p {color: blue}

  ……

  这个段落的文字为蓝色9号字

  我们可以看到段落里的文字大小为9号字是继承div属性的,而color属性则依照最后定义的。

  不同的选择符定义相同的元素时,要考虑到不同的选择符之间的优先级。ID选择符,类选择符和HTML标记选择符,因为ID选择符是最后加上元素上的,所以优先级最高,其次是类选择符。如果想超越这三者之间的关系,可以用!important提升样式表的优先权,例如:

  p { color: #FF0000!important }

  .blue { color: #0000FF}

  #id1 { color: #FFFF00}

  我们同时对页面中的一个段落加上这三种样式,它最后会依照被!important申明的HTML标记选择符样式为红色文字。如果去掉!important,则依照优先权最高的ID选择符为黄色文字。

  7. 注释:/* ... */

  你可以在CSS中插入注释来说明你代码的意思,注释有利于你或别人以后编辑和更改代码时理解代码的含义。在浏览器中,注释是不显示的。CSS注释以"/*" 开头,以"*/" 结尾,如下:

  /* 定义段落样式表 */

  p

  {

  text-align: center; /* 文本居中排列 */

  color: black; /* 文字为黑色 */

  font-family: arial /* 字体为arial */

  }

  css可以用任何写文本的工具进行开发,如文本工具,dreamweaver开发

  css也是一种语言,这种语言要和html或者xhtml语言相结合才起作用,

  css简单来说就是用来美化网页用的,用css语言来控制网页的外观

  举个例子

  xhtml部分:

  <ul>

  <li>主页</li>

  <li>留言</li>

  <li>论坛</li>

  </ul>

  此时在页面上的表达形式是一个竖向列表,这样不够美观,

  可以css来改善这个列表为一个横向导航条和超链接

  css部分:

  ul{list-style:none;margin:0px;padding:0px}

  ul li{margin:0px;padding:0px;float:left;}

  ul li a{display:block;width:100px;height:30px;background:#efefef;color:#333;text-decoration:none;text-align:center}

  ul li a:hover{background:#333;color:#fff;}

  添加上css后,这个列表变成横向的导航条了,超级链接是淡色背景,灰色字体,没有下划线,高度是30像素,宽度是100像素

  当我们鼠标经过这个超级链接时候,变成灰色背景,白色字体

  在主页制作时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。

  只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式。

  它的作用可以达到:

  (1)在几乎所有的浏览器上都可以使用。

  (2)以前一些非得通过图片转换实现的功能,现在只要用CSS就可以轻松实现,从而更快地下载页面。

  (3)使页面的字体变得更漂亮,更容易编排,使页面真正赏心悦目。

  (4)你可以轻松地控制页面的布局 。

  (5)你可以将许多网页的风格格式同时更新,不用再一页一页地更新了。你可以将站点上所有的网页风格都使用一个CSS文件进行控制,只要修改这个CSS文件中相应的行,那么整个站点的所有页面都会随之发生变动。

  想一想,没有使用CSS前我们是如何控制字体的颜色和大小以及所使用的字体的?我们一般使用HTML标签来实现,代码非常烦琐。

  很难想象,如果在一个页面里需要频繁地更替字体的颜色大小,最终生成的HTML代码的长度一定臃肿不堪。

  说实话,CSS就是为了简化这样的工作诞生的,当然其功能决非这么简单。

  CSS是通过对页面结构的风格控制的思想,控制整个页面的风格的。

  式样单放在页面中,通过浏览器的解释执行,是完全的文本,任何懂得HTML的人都可以掌握,非常的容易。甚至对一些非常老的浏览器,也不会产生页面混乱的现象。

  CSS的一大优点是它的图片传输速度比较完全的HTML网页要快一点。

  关于CSS的参考资料,网上有很多讨论CSS的社区,但是要系统学习CSS,选择一本好书还是非常有必要的,推荐阅读CSS三剑客之一《CSS实战手册》

  CSS:

  Chinese,Surface-to-Surface

  中国面对面导弹 简称CSS-N

  CSS具有两面性。就像它在格式化文本、导航栏、图片以及其他小小的网页方面很棒一样,当你准备好布局完整的网页时,它真正可怕的一面也展现出来了。

  CSS布局有两种风格——绝对定位和浮动。绝对定位让你把一个元素以像素级的精确性定位在网页的任何位置——或者理论上是这样。这种整体控制令人兴奋,就如你将在下一章中所看到的,但是实际上很难实现。这就是大量网页使用基于浮动的布局的原因,也是本章的主题。

  详细讲解CSS规范化命名的三种通用命名规则

  骆驼式命名法:

  正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:

  printEmployeePaychecks();

  print_employee_paychecks();

  第一个函数名使用了骆驼式命名法,函数名中的每一个逻辑断点都有一个大写字母来标记;第二个函数名使用了下划线法,函数名中的每一个逻辑断点都有一个下划线来标记。

  骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它使用得相当多。另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的环境中,它的使用非常普遍。

  匈牙利命名法:

  广泛应用于象Microsoft Windows这样的环境中。Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯- 西蒙尼(Charles Simonyi) 提出的。

  匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量), 再指针,再简单数据类型,再其它。

  例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。

  匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。

  帕斯卡(pascal)命名法:

  与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写,如:

  DisplayInfo();

  string UserName;

  二者都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和骆驼命名法居多。

  三种命名规则的小结:

  MyData 就是一个帕斯卡命名的示例

  而myData是一个骆驼命名法,它第一个单词的第一个字母小写,后面的单词首字母大写,看起来像一个骆驼

  而iMyData是一个匈牙利命名法,它的小写的i说明了它的型态,后面的和帕斯卡命名相同,指示了该变量的用途.

  CSS样式解决了一个普遍的问题

  HTML 标签原本被设计为用于定义文档内容。通过使用 <h1>、、 这样的标签,HTML 的初衷是表达“这是标题”、“这是段落”、“这是表格”之类的信息。而文档布局希望通过浏览器来完成,而不使用任何的格式化标签。

  由于两种主要的浏览器(Netscape 和 Internet Explorer)不断地将新的 HTML 标签和属性(比如字体标签和颜色属性)添加到 HTML 规范中,创建文档内容清晰地独立于文档表现层的站点变得越来越困难。

  为了解决这个问题,万维网联盟(W3C),这个非营利的标准化联盟,肩负起了 HTML 标准化的使命,并在 HTML 4.0 之外创造出样式(Style)。

  所有的主流浏览器均支持层叠样式表。

CSS设计网页的经验

  相信对大家是有一些帮助与启发的。有些习惯显得尤为重要,今天与您分享六个CSS习惯。因为习惯其实是会变的,所以只能写“最近”的。这些习惯都跟技术无关,如果不遵守,也不会出错。但是我觉得良好的习惯会体现一个人的素质。

  一、用class_name方式写类名。

  以前喜欢用class-name写,不过好像两样也没什么差别。但我比较反对用className写类名,因为始终对浏览器大小写敏感的问题抱有怀疑态度。但是id我会写成驼峰式,理由见下一条。

  二、样式都用class而不用id。

  有三个理由,一,id不可以重复,所以用class的话,可以肆无忌惮的用无数次。二,id的优先级太高,若是写了一个#page_content a {color:#f60} ,那你完蛋了,里面要改链接颜色,都必须加上#page_content才能越过这个优先级。三,id专门留给JS用,这样才符合表现与行为分离的原则。所以id我用驼峰式,也是为了体现这一点。

  三、margin和padding,尽量省略最后一个值。

  比如margin: 20px 10px 5px 10px; ,左右值是一样的,就应该省略掉最后一个值,写成margin: 20px 10px 5px; 这样到时候要改左右间距,改一个就好,免得改漏了。其实这个问题虽然很细小,但是可以看得出对margin四个值省略规则的熟练程度。

  四、按标准写CSS,再针对特定浏览器作hack。

  比如,通常我们会遇到如下的写法:

  .side_col {

  float:left;

  display: inline;

  margin-left: 20px;

  }

  而我的写法会是:

  .side_col {

  float: left;

  margin-left: 20px;

  }

  * .side_col {

  _display:inline; /*hacked for IE 6*/

  }

  看明白了么?不应该把hack混在一起,也不应该用一种侥幸的心态,觉得float:left与display:inline写在一起没事。嗯,它们俩确实没事儿,但是其他的hack就不一定了。而且这里写display:inline纯粹就是为了解决IE6的bug,所以前面加上下划线,以明确的表达你的目的。

  另外不要以为凡是hack都是为IE准备的。其实有些hack是针对其他浏览器的,比如FF。这就要求你对CSS标准的熟练掌握,能够自信的判断哪些渲染是遵守标准,哪些违反标准的。

  此外,我喜欢在hack前面加上星号,其实这纯粹是个人习惯了。可能过段时间我就不这么用了,呵呵。

  五、记得加空格。

  .class_name { property: value; } 。我个人觉得合理的空格是优秀代码的一个指标。按英文的习惯,标点后面都应该带空格(如果你写This is a pen.That’s a pencil.句点后面不加空格, word里面会有错误提示)。所以既然CSS是外国人发明的,应该按他们的格式来写。类似的,在JS里var a = b + c;里面的空格也应该都要加。

  六、适当的层叠(Cascading)或缩进以定义CSS的“作用域”。

  啥叫“CSS的作用域”?其实并不是所有的样式都在所有的地方使用。有的样式只用在某一块里面,比如“导航栏”里的“搜索框”,可能应该写成:

  .nav .search {}

  而有时候用层叠会增加代码优先级,所以也可以用缩进来“象征性的”体现作用域。像这样:

  .login_box {}

  .forgot_pwd{}

  缩进,是为了表示它们对应的标签具有父子关系。但这样只能起到一个提醒的作用。

  七、颜色代码的所写

  例如:

  .top{ width:104px; height:96px; background:#FF0099; }

  可以写成:

  .top{ width:104px; height:96px; background:#F09; }

  所写 代码必须是 AABBCC 形式的 缩写成 ABC。

  这样写加快处理效率,又简单方便。

CSS Hack 汇总快查

  屏蔽IE浏览器(也就是IE下不显示)*:lang(zh) select {font:12px !important;} /*FF,OP可见,特别提醒:由于Opera最近的升级,目前此句只为FF所识别*/

  select:empty {font:12px !important;} /*safari可见*/

  这里select是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。仅IE7与IE5.0可以识别*+html select {}

  当面临需要只针对IE7与IE5.0做样式的时候就可以采用这个HACK。 仅IE7可以识别*+html select {…!important;}

  当面临需要只针对IE7做样式的时候就可以采用这个HACK。 IE6及IE6以下识别* html select {}

  这个地方要特别注意很多博客都写成了是IE6的HACK其实IE5.x同样可以识别这个HACK。其它浏览器不识别。

  html/**/ >body select {}

  这句与上一句的作用相同。仅IE6不识别,屏蔽IE6select { display /*屏蔽IE6*/:none;}

  这里主要是通过CSS注释分开一个属性与值,注释在冒号前。仅IE6与IE5不识别,屏蔽IE6与IE5select/**/ { display /*IE6,IE5不识别*/:none;}

  这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。不屏蔽IE5.5仅IE5不识别,屏蔽IE5select/*IE5不识别*/ {}

  这一句是在上一句中去掉了属性区的注释。只有IE5不识别,IE5.5可以识别。盒模型解决方法selct {width:IE5.x宽度; voice-family :"\"}\""; voice-family:inherit; width:正确宽度;}

  盒模型的清除方法不是通过!important来处理的。这点要明确。清除浮动select:after {content:"."; display:block; height:0; clear:both; visibility:hidden;}

  在Firefox中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除浮动的HACK来对父级做一次定义,那么就可以解决这个问题。截字省略号select { -o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; }

  这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾,很好的一个技术。只是目前Firefox并不支持。只有Opera识别@media all and (min-width: 0px){ select {……} }

  针对Opera浏览器做单独的设定。以上都是写CSS中的一些HACK,这些都是用来解决局部的兼容性问题,如果希望把兼容性的内容也分离出来,不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式,也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。

  IE5.x的过滤器,只有IE5.x可见@media tty {

  i{content:"\";/*" "*/}} @import 'ie5win.css'; /*";}

  }/* */IE5/MAC的过滤器,一般用不着/*\*//*/

  @import "ie5mac.css";

  /**/IE的if条件Hack<!--[if IE]> Only IE <![endif]-->

  所有的IE可识别

  <!--[if IE 5.0]> Only IE 5.0 <![endif]-->

  只有IE5.0可以识别

  <!--[if gt IE 5.0]> Only IE 5.0+ <![endif]-->

  IE5.0包换IE5.5都可以识别

  <!--[if lt IE 6]> Only IE 6- <![endif]-->

  仅IE6可识别

  <!--[if gte IE 6]> Only IE 6/+ <![endif]-->

  IE6以及IE6以下的IE5.x都可识别

  <!--[if lte IE 7]> Only IE 7/- <![endif]-->

  仅IE7可识别以上内容可能并不全面,欢迎大家能和我一起把这些技巧都汇总起来,为以后工作的查询提供一个方便,同时在这里感谢那些研究出这些HACK的作者们。

DIV+css的结构

  你正在学习CSS布局吗?是不是还不能完全掌握纯CSS布局?通常有两种情况阻碍你的学习:

  第一种可能是你还没有理解CSS处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构,然后再针对语义、结构添加CSS。这篇文章将告诉你应该怎样把HTML结构化。

  另一种原因是你对那些非常熟悉的表现层属性(例如:cellpadding,、hspace、align="left"等等)束手无策,不知道该转换成对 应的什么CSS语句。

  当你解决了第一种问题,知道了如何结构化你的HTML,我再给出一个列表,详细列出原来的表现属性用什么CSS来代替。

  结构化HTML

  我们在刚学习网页制作时,总是先考虑怎么设计,考虑那些图片、字体、颜色、以及布局方案。然后我们用Photoshop或者Fireworks画出来、切割成小图。最后再通过编辑HTML将所有设计还原表现在页面上。

  如果你希望你的HTML页面用CSS布局(是CSS-friendly的),你需要回头重来,先不考虑“外观”,要先思考你的页面内容的语义和结构。

  外观并不是最重要的。一个结构良好的HTML页面可以以任何外观表现出来,CSS Zen Garden是一个典型的例子。CSS Zen Garden帮助我们最终认识到CSS的强大力量。

  HTML不仅仅只在电脑屏幕上阅读。你用photoshop精心设计的画面可能不能显示在PDA、移动电话和屏幕阅读机上。但是一个结构良好的HTML页面可以通过CSS的不同定义,显示在任何地方,任何网络设备上。

  开始思考

  首先要学习什么是"结构",一些作家也称之为"语义"。这个术语的意思是你需要分析你的内容块,以及每块内容服务的目的,然后再根据这些内容目的建立起相应的HTML结构。

  如果你坐下来仔细分析和规划你的页面结构,你可能得到类似这样的几块:

  标志和站点名称

  主页面内容

  站点导航(主菜单)

  子菜单

  搜索框

  功能区(例如购物车、收银台)

  页脚(版权和有关法律声明)

  我们通常采用DIV元素来将这些结构定义出来,类似这样:

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

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

  <div id="globalnav"></div>

  <div id="subnav"></div>

  <div id="search"></div>

  <div id="shop"></div>

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

  这不是布局,是结构。这是一个对内容块的语义说明。当你理解了你的结构,就可以加对应的ID在DIV上。DIV容器中可以包含任何内容块,也可以嵌套另一个DIV。内容块可以包含任意的HTML元素---标题、段落、图片、表格、列表等等。

  根据上面讲述的,你已经知道如何结构化HTML,现在你可以进行布局和样式定义了。每一个内容块都可以放在页面上任何地方,再指定这个块的颜色、字体、边框、背景以及对齐属性等等。

  使用选择器是件美妙的事

  id的名称是控制某一内容块的手段,通过给这个内容块套上DIV并加上唯一的id,你就可以用CSS选择器来精确定义每一个页面元素的外观表现,包括标 题、列表、图片、链接或者段落等等。例如你为#header写一个CSS规则,就可以完全不同于#content里的图片规则。

  另外一个例子是:你可以通过不同规则来定义不同内容块里的链接样式。类似这样:#globalnav a:link或者 #subnav a:link或者#content a:link。你也可以定义不同内容块中相同元素的样式不一样。例如,通过#content p和#footer p分别定义#content和#footer中p的样式。从结构上讲,你的页面是由图片、链接、列表、段落等组成的,这些元素本身并不会对显示在什么网络 设备中(PDA还是手机或者网络电视)有影响,它们可以被定义为任何的表现外观。

  一个仔细结构化的HTML页面非常简单,每一个元素都被用于结构目的。当你想缩进一个段落,不需要使用blockquote标签,只要使用p标签,并对p 加一个CSS的margin规则就可以实现缩进目的。p是结构化标签,margin是表现属性,前者属于HTML,后者属于CSS。(这就是结构于表现的 相分离.)

  良好结构的HTML页面内几乎没有表现属性的标签。代码非常干净简洁。例如,原先的代码<table width="80%" cellpadding="3" border="2" align="left">,现在可以只在HTML中写<table>,所有控制表现的东西都写到CSS中去,在结构化的HTML中, table就是表格,而不是其他什么(比如被用来布局和定位)。

  亲自实践一下结构化

  上面说的只是最基本的结构,实际应用中,你可以根据需要来调整内容块。常常会出现DIV嵌套的情况,你会看到"container"层中又有其它层,结构类似这样:

  <div id="navcontainer">

  <div id="globalnav">

  <ul>a list</ul>

  </div>

  <div id="subnav">

  <ul>another list</ul>

  </div>

  </div>

  嵌套的div元素允许你定义更多的CSS规则来控制表现,例如:你可以给#navcontainer一个规则让列表居右,再给#globalnav一个规则让列表居左,而给#subnav的list另一个完全不同的表现。

  用CSS替换传统方法

  下面的列表将帮助你用CSS替换传统方法:

  HTML属性以及相对应的CSS方法

  HTML属性

  CSS方法说明

  align="left"

  align="right" float: left;

  float: right; 使用CSS可以浮动 任何元素:图片、段落、div、标题、表格、列表等等

  当你使用float属性,必须给这个浮动元素定义一个宽度。

  marginwidth="0" leftmargin="0" marginheight="0" topmargin="0" margin: 0; 使用CSS, margin可以设置在任何元素上, 不仅仅是body元素.更重要的,你可以分别指定元素的top, right, bottom和left的margin值。

  vlink="#333399" alink="#000000" link="#3333FF" a:link #3ff;

  a:visited: #339;

  a:hover: #999;

  a:active: #00f;

  在HTML中,链接的颜色作为body的一个属性值定义。整个页面的链接风格都一样。使用CSS的选择器,页面不同部分的链接样式可以不一样。

  bgcolor="#FFFFFF" background-color: #fff; 在CSS中,任何元素都可以定义背景颜色,不仅仅局限于body和table元素。

  bordercolor="#FFFFFF" border-color: #fff; 任何元素都可以设置边框(boeder),你可以分别定义top, right, bottom和left

  border="3" cellspacing="3" border-width: 3px; 用CSS,你可以定义table的边框为统一样式,也可以分别定义top, right, bottom and left边框的颜色、尺寸和样式。

  你可以使用 table, td or th 这些选择器.

  如果你需要设置无边框效果,可以使用CSS定义: border-collapse: collapse;

  <br clear="left">

  <br clear="right">

  <br clear="all">

  clear: left;

  clear: right;

  clear: both;

  许多2列或者3列布局都使用 float属性来定位。如果你在浮动层中定义了背景颜色或者背景图片,你可以使用clear属性.

  cellpadding="3"

  vspace="3"

  hspace="3" padding: 3px; 用CSS,任何元素都可以设定padding属性,同样,padding可以分别设置top, right, bottom and left。padding是透明的。

  align="center" text-align: center;

  margin-right: auto; margin-left: auto;

  Text-align 只适用于文本.

  象div,p这样的块级可以通过margin-right: auto; 和margin-left: auto;来水平居中

  一些令人遗憾的技巧和工作环境

  由于浏览器对CSS支持的不完善,我们有时候不得不采取一些技巧(hacks)或建立一种环境(Workarounds)来让CSS实现传统方法同样的效 果。例如块级元素有时候需要使用水平居中的技巧,盒模型bug的技巧等等。所有这些技巧都在Molly Holzschlag的文章《Integrated Web Design: Strategies for Long-Term CSS Hack Management》中有详细说明。

  另外一个关于CSS技巧的资源站点是Big John和Holly Bergevin的“Position is Everything”。

  理解浮动行为

  Eric Meyer的《Containing Floats》将帮助你掌握如何使用float属性布局。float元素有时候需要清除(clear),阅读《How To Clear Floats Without Structural Markup》将非常有帮助。

CSS+DIV模板下载

  这里推荐几个CSS+DIV模板:

  __________________________________________________________________________

  清晰自然DIV+CSS个人博客模板

  下载地址:http://www.qipao8.com/model/div+css-model-14.html

  __________________________________________________________________________

  黑色DIV+CSS个人博客模板

  下载地址:http://www.qipao8.com/model/div+css-model-16.html

  __________________________________________________________________________

  黑色经典DIV CSS网页模板

  下载地址:http://www.qipao8.com/model/div+css-model-21.htm

DIV+CSS网页布局入门指南

  第一种可能是你还没有理解CSS处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构,然后再针对语义、结构添加CSS。这篇文章将告诉你应该怎样把HTML结构化。

  另一种原因是你对那些非常熟悉的表现层属性(例如:cellpadding,、hspace、align="left"等等)束手无策,不知道该转换成对 应的什么CSS语句。 当你解决了第一种问题,知道了如何结构化你的HTML,我再给出一个列表,详细列出原来的表现属性用什么CSS来代替。

  结构化HTML

  我们在刚学习网页制作时,总是先考虑怎么设计,考虑那些图片、字体、颜色、以及布局方案。然后我们用Photoshop或者Fireworks画出来、切割成小图。最后再通过编辑HTML将所有设计还原表现在页面上。

  如果你希望你的HTML页面用CSS布局(是CSS-friendly的),你需要回头重来,先不考虑“外观”,要先思考你的页面内容的语义和结构。

  外观并不是最重要的。一个结构良好的HTML页面可以以任何外观表现出来,CSS Zen Garden是一个典型的例子。CSS Zen Garden帮助我们最终认识到CSS的强大力量。

  HTML不仅仅只在电脑屏幕上阅读。你用photoshop精心设计的画面可能不能显示在PDA、移动电话和屏幕阅读机上。但是一个结构良好的HTML页面可以通过CSS的不同定义,显示在任何地方,任何网络设备上。

  开始思考

  首先要学习什么是"结构",一些作家也称之为"语义"。这个术语的意思是你需要分析你的内容块,以及每块内容服务的目的,然后再根据这些内容目的建立起相应的HTML结构。

  如果你坐下来仔细分析和规划你的页面结构,你可能得到类似这样的几块:

  标志和站点名称

  主页面内容

  站点导航(主菜单)

  子菜单

  搜索框

  功能区(例如购物车、收银台)

  页脚(版权和有关法律声明)

  我们通常采用DIV元素来将这些结构定义出来,类似这样:

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

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

  <div id="globalnav"></div>

  <div id="subnav"></div>

  <div id="search"></div>

  <div id="shop"></div>

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

  这不是布局,是结构。这是一个对内容块的语义说明。当你理解了你的结构,就可以加对应的ID在DIV上。DIV容器中可以包含任何内容块,也可以嵌套另一个DIV。内容块可以包含任意的HTML元素---标题、段落、图片、表格、列表等等。

  根据上面讲述的,你已经知道如何结构化HTML,现在你可以进行布局和样式定义了。每一个内容块都可以放在页面上任何地方,再指定这个块的颜色、字体、边框、背景以及对齐属性等等。

  使用选择器是件美妙的事

  id的名称是控制某一内容块的手段,通过给这个内容块套上DIV并加上唯一的id,你就可以用CSS选择器来精确定义每一个页面元素的外观表现,包括标 题、列表、图片、链接或者段落等等。例如你为#header写一个CSS规则,就可以完全不同于#content里的图片规则。

  另外一个例子是:你可以通过不同规则来定义不同内容块里的链接样式。类似这样:#globalnav a:link或者 #subnav a:link或者#content a:link。你也可以定义不同内容块中相同元素的样式不一样。例如,通过#content p和#footer p分别定义#content和#footer中p的样式。从结构上讲,你的页面是由图片、链接、列表、段落等组成的,这些元素本身并不会对显示在什么网络 设备中(PDA还是手机或者网络电视)有影响,它们可以被定义为任何的表现外观。

  一个仔细结构化的HTML页面非常简单,每一个元素都被用于结构目的。当你想缩进一个段落,不需要使用blockquote标签,只要使用p标签,并对p 加一个CSS的margin规则就可以实现缩进目的。p是结构化标签,margin是表现属性,前者属于HTML,后者属于CSS。(这就是结构于表现的 相分离.)

  良好结构的HTML页面内几乎没有表现属性的标签。代码非常干净简洁。例如,原先的代码<table width="80%" cellpadding="3" border="2" align="left">,现在可以只在HTML中写<table>,所有控制表现的东西都写到CSS中去,在结构化的HTML中, table就是表格,而不是其他什么(比如被用来布局和定位)。

  亲自实践一下结构化

  上面说的只是最基本的结构,实际应用中,你可以根据需要来调整内容块。常常会出现DIV嵌套的情况,你会看到"container"层中又有其它层,结构类似这样:

  <div id="navcontainer">

  <div id="globalnav">

  <ul>a list</ul>

  </div>

  <div id="subnav">

  <ul>another list</ul>

  </div>

  </div>

  嵌套的div元素允许你定义更多的CSS规则来控制表现,例如:你可以给#navcontainer一个规则让列表居右,再给#globalnav一个规则让列表居左,而给#subnav的list另一个完全不同的表现。

  用CSS替换传统方法

  下面的列表将帮助你用CSS替换传统方法:

  HTML属性以及相对应的CSS方法

  HTML属性

  CSS方法说明

  align="left"

  align="right" float: left;

  float: right; 使用CSS可以浮动 任何元素:图片、段落、div、标题、表格、列表等等

  当你使用float属性,必须给这个浮动元素定义一个宽度。

  marginwidth="0" leftmargin="0" marginheight="0" topmargin="0" margin: 0; 使用CSS, margin可以设置在任何元素上, 不仅仅是body元素.更重要的,你可以分别指定元素的top, right, bottom和left的margin值。

  vlink="#333399" alink="#000000" link="#3333FF" a:link #3ff;

  a:visited: #339;

  a:hover: #999;

  a:active: #00f;

  在HTML中,链接的颜色作为body的一个属性值定义。整个页面的链接风格都一样。使用CSS的选择器,页面不同部分的链接样式可以不一样。

  bgcolor="#FFFFFF" background-color: #fff; 在CSS中,任何元素都可以定义背景颜色,不仅仅局限于body和table元素。

  bordercolor="#FFFFFF" border-color: #fff; 任何元素都可以设置边框(boeder),你可以分别定义top, right, bottom和left

  border="3"cellspacing="3" border-width: 3px; 用CSS,你可以定义table的边框为统一样式,也可以分别定义top, right, bottom and left边框的颜色、尺寸和样式。

  你可以使用 table, td or th 这些选择器.

  如果你需要设置无边框效果,可以使用CSS定义: border-collapse: collapse;

  <br clear="left">

  <br clear="right">

  <br clear="all">

  clear: left;

  clear: right;

  clear: both;

  许多2列或者3列布局都使用 float属性来定位。如果你在浮动层中定义了背景颜色或者背景图片,你可以使用clear属性.

  cellpadding="3"

  vspace="3"

  hspace="3" padding: 3px; 用CSS,任何元素都可以设定padding属性,同样,padding可以分别设置top, right, bottom and left。padding是透明的。

  align="center" text-align: center;

  margin-right: auto; margin-left: auto;

  Text-align 只适用于文本.

  象div,p这样的块级可以通过margin-right: auto; 和margin-left: auto;来水平居中

  一些令人遗憾的技巧和工作环境

  由于浏览器对CSS支持的不完善,我们有时候不得不采取一些技巧(hacks)或建立一种环境(Workarounds)来让CSS实现传统方法同样的效 果。例如块级元素有时侯需要使用水平居中的技巧,盒模型bug的技巧等等。所有这些技巧都在Molly Holzschlag的文章《Integrated Web Design: Strategies for Long-Term CSS Hack Management》中有详细说明。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics