返回课程

1.Dreamweaver使用CSS样式表设置网页

     本文介绍如何在Dreamweaver 中使用层叠样式表 (CSS) 设置页面中的文本格式。您可以使用 CSS 以 HTML 无法提供的方式来设置文本格式和定位文本,从而能更加灵活自如地控制页面的外观。

  了解 CSS

  层叠样式表 (CSS) 是一系列格式设置规则,它们控制 Web 页面内容的外观。使用 CSS 设置页面格式时,内容与表现形式是相互分开的。页面内容(HTML 代码)位于自身的 HTML 文件中,而定义代码表现形式的 CSS 规则位于另一个文件(外部样式表)或 HTML 文档的另一部分(通常为 部分)中。使用 CSS 可以非常灵活并更好地控制页面的外观,从精确的布局定位到特定的字体和样式等。

  CSS 使您可以控制许多仅使用 HTML 无法控制的属性。例如,您可以为所选文本指定不同的字体大小和单位(像素、磅值等)。通过使用 CSS 从而以像素为单位设置字体大小,还可以确保在多个浏览器中以更一致的方式处理页面布局和外观。

  CSS 格式设置规则由两部分组成:选择器和声明。选择器是标识已设置格式元素(如 P、H1、类名称或 ID)的术语,而声明则用于定义样式元素。在下面的示例中,H1 是选择器,介于大括号 ({}) 之间的所有内容都是声明:

以下是引用片段:
  H1 {
  font-size:16 pixels;
  font-family:Helvetica;
  font-weight:bold;
  }

  声明由两部分组成:属性(如 font-family)和值(如 Helvetica)。上述示例为 H1 标签创建了样式:链接到此样式的所有 H1 标签的文本都将是 16 像素大小并使用 Helvetica 字体和粗体。

  术语"层叠"是指对同一个元素或 Web 页面应用多个样式的能力。例如,可以创建一个 CSS 规则来应用颜色,创建另一个规则来应用边距,然后将两者应用于一个页面中的同一文本。所定义的样式"层叠"到您的 Web 页面上的元素,并最终创建您想要的设计。

  CSS 的主要优点是容易更新;只要对一处 CSS 规则进行更新,则使用该定义样式的所有文档的格式都会自动更新为新样式。

  在 Dreamweaver 中可以定义以下规则类型:

  自定义 CSS 规则(也称为"类样式")使您可以将样式属性应用到任何文本范围或文本块。所有类样式均以句点 (.) 开头。例如,您可以创建称为 .red 的类样式,设置规则的 color 属性为红色,然后将该样式应用到一部分已定义样式的段落文本中。

  HTML 标签规则重定义特定标签(如 p 或 h1)的格式。创建或更改 h1 标签的 CSS 规则时,所有用 h1 标签设置了格式的文本都会立即更新。

  CSS 选择器规则(高级样式)重定义特定元素组合的格式,或其它 CSS 允许的选择器形式的格式(例如,每当 h2 标题出现在表格单元格内时,就应用选择器 td h2)。高级样式还可以重定义包含特定 id 属性的标签的格式(例如,由 #myStyle 定义的样式可以应用到所有包含属性/值对 id="myStyle" 的标签)。

2.Dreamweaver CS3中的CSS布局规则

  本文中介绍了在DreamWeaver CS3网页制作中的CSS布局规则。

  CSS文件的链接方式

  1、附加链接:外部CSS文件

  2、导入CSS:常用应用多个CSS文件时,将多个CSS导入一个CSS文件中

  CSS规则定义有三种

  1、类比如“.RedText”、“.BlueText”和“.BigText”等等

  2、标签针对原有HTML标签做的重新CSS定义

  3、高级伪类、定义了ID的元素,以及综合性定义

  CSS规则的应用

  1、只有“类”样式才需要应用,class=”xxxx”。任何元素都可以应用类。

  2、class与id的区别

  3、标签应用一般对于“body”标签一次性使用,对于诸如“li”、“td”等在页面中重复性比较大的标签不推荐定义。

  4、高级多运用,定义“#id li”比定义“li”要好得多。

  CSS规则的执行顺序

  1、按照CSS代码的执行先后顺序

  2、如果有重复的规则,按照后执行的定义

  3、最终规则是多个定义规则的综合

  重点:高级规则定义

  1、对于不同表格的文字样式定义。(不同表格使用不同ID、使用类样式定义)

  2、一页中的多种超级链接样式定义

  3、多个相同规则不同对象的CSS共同定义

  4、对于同一对象定义的多种CSS方式考虑哪种更科学(扩展性和代码精简性)

3.DreamWeaver中应用CSS样式表

  一、 去除超级链接的下划线以及在超级链接上实现鼠标悬停变色:

  在默认情况下,用DreamWeaver设计的网页中的超级链接都有下划线,看上去不大美观。要去除这些讨厌的下划线,很多报刊介绍的方法都是在HTML源代码中手工加入一段代码,其实在DreamWeave中很容易去除链接的下划线。首先在DreamWeaver的Document Windows中随便建立一个链接,你可以看到这个链接会有下划线。怎样去除这条下划线呢?

  1.在点击菜单栏上的"Text"|"CSS Styles"| "Edit Style Sheet…"(或者直接按快捷键Ctrl+shift+E),调出Edit Style Sheet(编辑样式表)对话框窗口。

  2.点击"New (新建)",然后在"New Style (新样式)"对话框中,点击"Use CSS Selector"按钮。

  3.在Selector栏中键入a, 然后点OK。

  4.随后弹出"CSS 样式定义"对话框,在Type类的decoration(装饰)中,勾选none,然后点OK,再点Done。你将立刻在Document Windows中发现链接的下划线已经消失了。那么又怎样实现当鼠标悬停在链接上时链接变色呢?重复上述步骤中的的第一、第二步。然后点选Selector旁的下拉箭头,选择"a:hover",再点OK。在随后弹出的 "Style definition for a: hover"对话框中,在Type类的color中任意选择一种颜色(比如选择红色),然后点OK,再点Done便完成了。按F12预览,将鼠标放在链接上,该链接是不是变成了红色?如果在刚才的"Style definition for a: hover"对话框中,在Backgroud(背景)类里,选择backgroud的颜色为绿色,那么当你把鼠标放在超级链接上时,不但链接会变成红色,而且还会有绿色的背景。事实上,通过刚才的CSS 样式定义对话框,你还可以实现更多的特殊效果,有兴趣的朋友不妨去好好琢磨一下。

  二、创建可反复使用的外部CSS样式表

  用DreamWeaver在某网页中创建了一种CSS样式后,如果你要在另外的网页中应用该样式,你不必从新创建该CSS样式,只要你创建了外部CSS样式表文件(external CSS style sheet),你便可以在今后任意调用该样式表文件中的样式。为了便于管理,先在站点所在文件夹中,新建一个文件夹,取名为CSS,专门用于放置外部样式表文件(其扩展名为css)。

  1、在Document Window中按Ctrl+shift+E,调出Edit Style Sheet(编辑样式表)对话框窗口

  2、点击"link"。

  3、在弹出的Link External Style Sheet(链接外部样式表)对话框,点BROWSE,找到刚才创建的CSS文件夹。

  4、在Select Stylesheet File (选择样式表文件)窗口"文件名"栏中,键入*.css (*可以为任意名),请注意,事实上此时在CSS文件夹中并无样式表文件,在"文件名"栏中键入的新名字将成为外部样式表新文件的名字。比如键入title.css,,然后点Select | OK。

  5、在Edit Style Sheet(编辑样式表)对话框窗口中,会新增加 title.css (link), 双击它。

  6、在弹出的"title.css"窗口中,点"New"。

  7、在"New Style"对话框中,点选"Make Custom Style (class)"按钮

  8、在Name栏中键入某个名字,如myheadline,点OK。

  9、在接下来的"Style definition for .myheadline in title.css"对话框中,进行字体、颜色等各种设置,完成后点OK。如还要创建新的样式,再点"New",重复刚才的步骤6、7、8、9,最后点"save"| "done",于是title.css这个外部样式表文件便创建好了。菜单栏上的"TEXT" |"CSS Styles"子菜单中将会列出title.css中的所有样式。如要在其他网页中调用这个title.css,只需重复上述1至3步,然后在Select Stylesheet File窗口"文件名"栏中输入title.css。点"select"| "ok"| "done", title.css中所有的样式便会出现在该网页菜单栏上的"Text" |"CSS Styles"子菜单中,你将可以在此网页中应用这些样式。

4.Frontpage中定义CSS样式

  说明:目前Frontpage的最新版本是FrontpageXP(Frontpage 2003),本文是以Frontpage2000讲述的,但本文所描述的方法在FrontpageXP中基本上是适用的!另,这里面讨论的只是Frontpage2000中如何定义CSS,至于有关CSS的知识请参阅有关资料。

  当很多人发现在DW4中定义CSS很方便的时候,开始报怨FP2000不能定义CSS,甚至就此抨击FP2000如何的不好。事实上,在FP2000中定义CSS是很容易的,甚至在某些方面比DW4中定义更方便!

  定义HTML标记的样式

  在Frontpage2000下,选择菜单“格式/样式”,会弹出一个定义样式的窗口,在CSS列表下拉菜单(位于左下)中,选“所有的HTML标记”, 这时在左边的列中会出现大部分常用的HTML标记,选中一个,然后点右下的“修改”, 会弹出一个“修改样式”窗口,在该窗口左下方有一个“格式”按钮,点击该按钮,会出现一个下拉菜单,一共有五个选项:

  字体:顾名思义,这里就是定义字体的地方。

  段落:跟“字体”差不多,点进去后根据提示定义就可以了。

  边框:定义边框和背景等,根据提示定义就可以了。进入后有有“;边框”和“阴影”两个选项卡,在“边框”中定义边框,在“阴影”中定义前景和背景。

  编号方式:共有三个选项卡,根据字面意义去定义就可以了。

  定位:这就是CSS定位啦,但一般用在具体的网页元素当中。

  是不很容易?当然,定义这些您最好要有一定的CSS的基础,不然您可能不知道定义的是什么。但是您只要了解一些语法规则就可以喽,剩下的就让Frontpage2000去做吧!

  有两个较为特殊的:

  1、在网页任何位置点击鼠标右键,选“网页属性”,在属性面板的下侧有一个“样式”按钮,在这里可以定义body的样式,这样定义在形式上是内嵌式的,事实上这跟直接定义body是没有什么区别的,因为一个网页中只有一个body。

  2、仍然在“网页属性”面板当中,选“背景”选项卡,在中上的位置有一个“启用超链接翻转效果”,选中它前面的复选框,然后点击它下面的“翻转样式”按钮,就可以定义一些字体了,事实上这样定义的是a:hover(即鼠标县停到超链接时的样式 )。

  定义class或ID

  这个仍然是在菜单“格式/样式”中,在右下的“列表”中选择“用户定义的样式”,这时,你以前定义的标记会出现在右侧的列表中。下面我们开始定义一个class(伪类),点击右下的“新建”按钮,在最上面的“名称(选择器)”中输入一个名字,比如“.mycss”,注意,前面有一个“.”表明是定义一个class(如果定义ID前面是“#”),但在引用时并不算名字的一部分,只有“.”(或“#”)后面的才做为名字“!”名字!

  取好名字后,就开始定义格式了,仍然点“格式”按钮,剩下的就跟上面所讲述的方法一样啦!这里就不再赘述。至于如何在网页的具体元素中引用我们接下来就会讲述。

  定义内嵌式的样式

  在大部分的属性面板的下侧,都会有一个样式按钮,点击后,就可以定义内嵌式的CSS样式了。比如,先建一个表格,在表格的一个单元格中点击左键,选择“单元格属性”,在属性面板中有一个“样式”按钮,点击后,在下侧有一个“格式”按钮,点进去后就可以定义样式喽!笔者认为:Frontpage2000提供的这种方式来定义内嵌式的样式大大方便了我们的工作,是个不错的功能。

  接下来我们看看如何引用一个已经定义好了的class(或ID),仍以单元格为例,在“单元格属性”面板中,点击“样式”,在样式面板的中上部,左侧是“类”下拉菜单,在这里面就可以选择我们定义好了的类了。在右侧是“ID”,不过这里面不是下拉菜单,而是一个单行文本框,需要我们手动的敲进去我们定义好了的ID,注意不要带“#”。

  这里我们主要是针对对Frontpage2000和CSS有一定基础的朋友讲的,所以讲得较为粗略,希望在阅读的时候能够结合Frontpage2000的使用来加深理解!

5.列形导航一例

如图效果:

CSS

先看看XHTML代码:

7.渐变文字效果实现

一、方法一:借助mask-image属性

如果您手头上的浏览器是Chrome或是Safari,则您可以在demo页面中看到类似下面的效果:

方法一下的文字渐变效果 张鑫旭-鑫空间-鑫生活

相应的HTML代码如下:

8.图片替换

图像替换技术有相当的用处, 特别是注重视觉的设计, 而且在一定程度上也不会影响非可视化浏览器的用户群(屏幕阅读器).
本节用到的图片只有一个:

 

CSS


在文字外包上一组span标签, 并在CSS中将这个span进行display:none 操作, 使其隐藏, 然后在原文字的容器的CSS中加上background-image, 以达到图像替换.

 

9.CSS代码原则

CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则:

 

1. 使用Reset但并非全局Reset

 

不同浏览器元素的默认属性有所不同,使用Reset可重置浏览器元素的一些默认属性,以达到浏览器的兼容。但需要注意的是,请不要使用全局Reset:

*{ margin:0; padding:0; }

这不仅仅因为它是缓慢和低效率的方法,而且还会导致一些不必要的元素也重置了外边距和内边距。在此建议参考YUI Reset和Eric Meyer的做法。

/** 清除内外边距 **/
body, h1, h2, h3, h4, h5, h6, hr, p,
blockquote, /* structural elements 结构元素 */
dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
pre, /* text formatting elements 文本格式元素 */
form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
th, td, /* table elements 表格元素 */
img/* img elements 图片元素 */{
border:medium none;
margin: 0;
padding: 0;
}
/** 设置默认字体 **/
body,button, input, select, textarea {
font: 12px/1.5 '宋体',tahoma, Srial, helvetica, sans-serif; }
h1, h2, h3, h4, h5, h6 { font-size: 100%; }
em{font-style:normal;}
/** 重置列表元素 **/
ul, ol { list-style: none; }
/** 重置超链接元素 **/
a { text-decoration: none; color:#333;}
a:hover { text-decoration: underline; color:#F40; }
/** 重置图片元素 **/
img{ border:0px;}
/** 重置表格元素 **/
table { border-collapse: collapse; border-spacing: 0; }

 

2. 良好的命名习惯

 

无疑乱七八糟或者无语义命名的代码,谁看了都会抓狂。就像这样的代码:

.aaabb{margin:2px;color:red;}

我想即使是初学者,也不至于会在实际项目中如此命名一个class,但有没有想过这样的代码同样是很有问题的:

<h1>My name is <span class="red blod">Wiky</span></h1>

问题在于如果你需要把所有原本红色的字体改成蓝色,那修改后就样式就会变成:

.red{color:bule;}

这样的命名就会很让人费解,同样的命名为.leftBar的侧边栏如果需要修改成右侧边栏也会很麻烦。所以,请不要使用元素的特性(颜色,位置,大小等)来命名一个class或id,您可以选择意义的命名如:#navigation{...},.sidebar{...},.postwrap{...}

这样,无论你如何修改定义这些class或id的样式,都不影响它跟HTML元素间的联系。

另外还有一种情况,一些固定的样式,定义后就不会修改的了,那你命名时就不用担忧刚刚说的那种情况,如

.alignleft{float:left;margin-right:20px;}
.alignright{float:right;text-align:right;margin-left:20px;}
.clear{clear:both;text-indent:-9999px;}

那么对于这样一个段落

<p class="alignleft">我是一个段落!</p>

如果需要把这个段落由原先的左对齐修改为右对齐,那么只需要修改它的className就为alignright就可以了。

 

3. 代码缩写

 

CSS代码缩写可以提高你写代码的速度,精简你的代码量。在CSS里面有不少可以缩写的属性,包括margin,padding,border,font,background和颜色值等,如果您学会了代码缩写,原本这样的代码:

li{
font-family:Arial, Helvetica, sans-serif;
font-size: 1.2em;
line-height: 1.4em;
padding-top:5px;
padding-bottom:10px;
padding-left:5px;
}

就可以缩写为:

li{
font: 1.2em/1.4em Arial, Helvetica, sans-serif;
padding:5px 0 10px 5px;
}

 

 4. 利用CSS继承

 

如果页面中父元素的多个子元素使用相同的样式,那最好把他们相同的样式定义在其父元素上,让它们继承这些CSS样式。这样你可以很好的维护你的代码,并且还可以减少代码量。那么本来这样的代码:

#container li{ font-family:Georgia, serif; }
#container p{ font-family:Georgia, serif; }
#container h1{font-family:Georgia, serif; }

就可以简写成:

#container{ font-family:Georgia, serif; }

 

5. 使用多重选择器

 

你可以合并多个CSS选择器为一个,如果他们有共同的样式的话。这样做不但代码简洁且可为你节省时间和空间。如:

h1{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h2{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

可以合并为:

h1, h2, h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

 

6. 适当的代码注释

 

代码注释可以让别人更容易读懂你的代码,且合理的组织代码注释,可使得结构更加清晰。你可以选择做的样式表的开始添加目录:

/*------------------------------------
1. Reset
2. Header
3. Content
4. SideBar
5. Footer
----------------------------------- */

如此你代码的结构就一目了然,你可以容易的查找和修改代码。

而对于代码的主内容,也应适当的加以划分,甚至在有必要的地方在对代码加以注释说明,这样也有利于团队开发:

/*** Header ***/
#header{ height:145px; position:relative; }
#header h1{ width:324px; margin:45px 0 0 20px; float:left; height:72px;}

/*** Content ***/
#content{ background:#fff; width:650px; float:left; min-height:600px; overflow:hidden;}
#content h1{color:#F00}/* 设置字体颜色 */
#content .posts{ overflow:hidden; }
#content .recent{ margin-bottom:20px; border-bottom:1px solid #f3f3f3; position:relative; overflow:hidden; }

/*** Footer ***/
#footer{ clear:both; padding:50px 5px 0; overflow:hidden;}
#footer h4{ color:#b99d7f; font-family:Arial, Helvetica, sans-serif; font-size:1.1em; }

 

7. 给你的CSS代码排序

 

如果代码中的属性都能按照字母排序,那查找修改的时候就能更加快速:

/*** 样式属性按字母排序 ***/
div{
background-color:#3399cc;
color:#666;
font:1.2em/1.4em Arial, Helvetica, sans-serif;
height:300px;
margin:10px 5px;
padding:5px 0 10px 5px;
width:30%;
z-index:10;
}

 

8. 保持CSS的可读性

 

书写可读的CSS将会使得更容易查找和修改样式。对于以下两种情况,哪种可读性更高,我想不言而明。

/*** 每个样式属性写一行 ***/
div{
background-color:#3399cc;
color:#666;
font: 1.2em/1.4em Arial, Helvetica, sans-serif;
height:300px;
margin:10px 5px;
padding:5px 0 10px 5px;
width:30%;
z-index:10;
}

/*** 所有的样式属性写在同一行 ***/
div{ background-color:#3399cc; color:#666; font: 1.2em/1.4em Arial, Helvetica, sans-serif; height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; }

当对于一些样式属性较少的选择器,我会写到一行:

/*** 选择器属性少的写在同一行 ***/
div{ background-color:#3399cc; color:#666;}

对于这个规则并非硬性规定,但无论您采用哪种写法,我的建议是始终保持代码一致。属性多的分行写,属性少于3个可以写一行。

 

9. 选择更优的样式属性值

 

CSS中有些属性采用不同的属性值,虽然达到的效果差不多,当性能上却存在着差异,如

区别在于border:0把border设为0px,虽然在页面上看不见,但按border默认值理解,浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值。
而border:none把border设为"none"即没有,浏览器解析"none"时将不作出渲染动作,即不会消耗内存值。所以建议使用border:none;

同样的,display:none隐藏对象浏览器不作渲染,不占用内存。而visibility:hidden则会。

 

10. 使用<link>代替@import

 

首先,@import不属于XHTML标签,也不是Web标准的一部分,它对于较早期的浏览器兼容也不高,并且对于网站的性能有某些负面的影响。

 

11. 使用外部样式表

 

这个原则始终是一个很好的设计实践。不单可以更易于维护修改,更重要的是使用外部文件可以提高页面速度,因为CSS文件都能在浏览器中产生缓存。内置在HTML文档中的CSS则会在每次请求中随HTML文档重新下载。所以,在实际应用中,没有必要把CSS代码内置在HTML文档中:

<style type="text/css" >
#container{ .. }
#sidebar{ .. }
</style>

而是使用<link>导入外部样式表:<link rel="stylesheet" type="text/css" href="css/styles.css" />

 

12. 避免使用CSS表达式(Expression)

 

CSS表达式是动态设置CSS属性的强大(但危险)方法。Internet Explorer从第5个版本开始支持CSS表达式。下面的例子中,使用CSS表达式可以实现隔一个小时切换一次背景颜色:

background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );

如上所示,expression中使用了JavaScript表达式。CSS属性根据JavaScript表达式的计算结果来设置。

表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。

如果必须使用CSS表达式,一定要记住它们要计算成千上万次并且可能会对你页面的性能产生影响。所以,在非不得已,请避免使用CSS表达式。

 

13. 代码压缩

 

当你决定把网站项目部署到网络上,那你就要考虑对CSS进行压缩,出去注释和空格,以使得网页加载得更快。压缩您的代码,可以采用一些工具,如YUI Compressor,利用它可精简CSS代码,减少文件大小,以获得更高的加载速度。

10.CSS十大密技

1.css 字体简写规则


当使用css定义字体时你可能会这样做:
font-size: 1em;
line-height: 1.5em;
font-weight: bold;
font-style: italic;
font-variant: small-caps;
font-family: verdana,serif;
事实上你可以简写这些属性:
font: 1em/1.5em bold italic small-caps verdana,serif
现在好多了吧,不过有一点要注意:使用这一简写方式你至少要指定font-size和font-family属性,其他的属性(如font-weight, font-style,font-varient)如未指定将自动使用默认值。


2.同时使用两个class


通常我们只为属性指定一个class,但这并不等于你只能指定一个,实际上,你想指定多少就可以指定多少,例如:

...


通过同时使用两个class(使用空格而不是逗号分割),这个段落将同时应用两个class中制定的规则。如果两者中有任何规则重叠,那么后一个将获得实际的优先应用。


3.css中边框(border)的默认值


当编写一条边框的规则时,你通常会指定颜色、宽度以及样式(任何顺序均可)。例如:border: 3px solid #000(3像素宽的黑色实线边框),其实这个例子中唯一需要指定的值只是样式。假如你指定样式为实线(solid),那么其余的值将使用默认值:默认的宽度为中等(相当于3到4像素);默认的颜色为边框里的文字颜色。如果这正是你想要的效果,你完全可以不在css里指定。


4.!important会被IE忽略


在css中,通常最后指定的规则会获得优先权。然而对除了IE以外的浏览器来说,任何后面标有!important的语句将获得绝对的优先权,例如:
margin-top: 3.5em !important; margin-top: 2em
除IE以外所有浏览器中的顶部边界都是3.5em,而IE为2em,有时候这一点很有用,尤其在使用相对边界值时(就像这个例子),可以显示出IE与其他浏览器的细微差别。
(很多人可能还注意到了css的子选择器也是会被IE忽略的)


5.图片替换的技巧


使用标准的html而不是图片来显示文字通常更为明智,除了加快下载还可以获得更好的可用性。但是如果你决心使用访问者的机器中可能没有的字体时,你只能选择图片。
举例来说,你想在每一页的顶部使用“Buy widgets”的标题,但你同时又希望这是能被搜索引擎发现的,为了美观你使用了少见的字体那么你就得用图片来显示了:
<h1><img src=http://www.xyxgw.com/uploadfile/2016/0730/20160730073651915.gif alt="Buy widgets" /></h1>
这样当然没错,但是有证据显示搜索引擎对真实文本的重视远超过alt文本(因为已经有太多网站使用alt文本充当关键字),因此,我们得用另一种方法:<h1><span>Buy widgets</span></h1> ,那你的漂亮字体怎么办呢?下面的css可以帮上忙:
h1
{
background: url(/uploadfile/200806/17/96162027360.gif) no-repeat;
}

h1 span
{
position: absolute;
left:-2000px;
}
现在你既用上了漂亮的图片又很好的隐藏了真实文本——借助css,文本被定位于屏幕左侧-2000像素处。

 


6.css盒模型hack的另一选择


css盒模型hack被用来解决IE6之前的浏览器显示问题,IE6.0之前的版本会把某元素的边框值和填充值包含在宽度之内(而不是加在宽度值上)。例如,你可能会使用以下css来指定某个容器的尺寸:
#box
{
width: 100px;
border: 5px;
padding: 20px;
}
然后在html中应用:

...

盒的总宽度在几乎所有浏览器中为150像素(100像素宽度+两条5像素的边框+两个20像素的填充),唯独在IE6之前版本的浏览器中仍然为100像素(边框值和填充值包含在宽度值中),盒模型的hack正是为了解决这一问题,但是也会带来麻烦。更简单的办法如下:
css:
#box
{
width: 150px;
}

#box div {
border: 5px;
padding: 20px;
}
html:

...

这样一来在任何浏览器中盒的总宽度都将是150像素。


7.将块元素居中


假设你的网站使用了固定宽度的布局,所有的内容置于屏幕中央,可以使用以下的css:
#content
{
width: 700px;
margin: 0 auto;
}
你可以把html的body之内任何项目置于

中,该项目将自动获得相等的左右边界值从而保证了居中显示。不过,这在IE6之前版本的浏览器中仍然有问题,将不会居中,因此必须修改如下:
body
{
text-align: center;
}

#content
{
text-align: left;
width: 700px;
margin: 0 auto;
}
对body的设定将导致主体内容居中,但是连所有的文字也居中了,这恐怕不是你想要的效果,为此#content 的div还要指定一个值:text-align: left

 

8.使用css实现垂直居中


垂直居中对表格来说是小菜一碟,只需指定单元格为vertical-align: middle即可,但这在css布局中不管用。假设你将一个导航菜单的高度设为2em,然后在css中指定垂直对齐的规则,文字还是会被排到盒的顶部,根本没有什么区别。
要解决这一问题,只需将盒的行高设为与盒的高度相同即可,以这个例子来说,盒高2em,那么只需在css中再加入一条:line-height: 2em 就可实现垂直居中了!

 

9. 容器内的css定位


css的最大优点之一就是可以将对象定位在文档的任何位置,同样的也可以将对象在某容器内进行定位。只需要为该容器添加一条css规则:
#container
{
position: relative;
}
则容器内的任何元素的定位都是相对于该容器的。假定你使用以下html结构:


如果想将navigation定位在容器内离左边界30像素,离顶部5像素,可以使用以下css语句:
#navigation
{
position: absolute;
left: 30px;
top: 5px;
}

 

10.延伸至屏幕底部的背景色


css的缺点之一是缺乏垂直方向的控制,从而导致了一个表格布局不会遇到的问题。假设你在页面的左侧设定了一列用于放置网站的导航。页面为白色背景,但你希望导航所在的列为蓝色背景,使用以下css即可:


#navigation
{
background: blue;
width: 150px;
}


问题在于导航项不会一直延伸到页面的底部,自然它的背景色也不会延伸到底部。于是左列的蓝色背景在页面上被半路截断,浪费了你的一番设计。怎么办呢?很不幸我们现在只能用欺骗的办法,即将body的背景指定为与左列同颜色同宽度的图片,css如下:


body
{
background: url(blue-image.gif) 0 0 repeat-y;
}


背景图应为宽150像素的蓝色图片。这一办法的缺点是没法使用em来指定左列的宽度,当用户改变文字的大小导致内容的宽度扩张时,背景色的宽度不会随之改变。


到写这篇文章为止这是对这类问题的唯一解决办法,因此你只能为左列使用像素值来获得能够自动延伸的不同的背景色。

11.CSS控制定位的要素

css除了控制定位要素的左上角位置,你还可以 控制要素的宽度和高度,及要素在页面的可 视性。


宽度

 

定位了的要素在页面上显示时仍然会从左到 右一直显示。利用宽度属性就可以设定字符 向右流动的限制,即设定要素的宽度。

 

DIV { position: absolute; left: 200px; top: 40px; width: 150px }

 

浏览器接到这项规则时,它将文字按照规则 规定的效果显示,还将段落的最大水平尺寸 限制在150象素。

 

宽度属性只适用于绝对定位的要素。你可以 使用我们学过的任何一种长度单位,或使用 比例值设定宽度,比例值指相对于母体要素 的比例。

 

IE6中,这项属性还可用于图象。你可以通 过宽度设置人为地拉宽或压缩图象。

 

高度

 

理论上讲,高度应该和宽度的设置类似,只 不过是在垂直方向上:

 

DIV { position: absolute; left: 200px; top: 40px; height: 150px }

 

这里我用了“理论上讲”,因为常用的几种 浏览器都不支持高度属性。(你最多只能在 IE 4中用高度设置拉长图象。)

可视性

 

利用CSS,你可以隐藏要素,使其在页面上 看不见。这条属性对于定位了的和未定位的 要素都适用。

 

H4 { visibility: hidden }

 

我很想给你看一个例子,但是,因为要将它 设为看不见,那我这个例子让你看什么呢?

 

选项:

 

visible使要素可以被看见


hidden使要素被隐藏


inherit指它将继承母体要素的可视性 设置。


当一个要素被隐藏后,它仍然要占据浏览器 窗口中的原有空间。所以,如果你将文字包 围在一幅被隐藏的图象周围,那么,其显示 效果将是文字包围着一块空白区域。

 

这条属性在编写语言和使用动态HTML时很有 用,比如你可以使某段落或图象只在鼠标滑 过时才显示。

 

Communicator不支持可视性属性。只有IE 4 的用户可以享受其美妙之处!
 
 

12.Sprites技术

CSS Sprites简介


  通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技术,目前它已经在网页开发中发展得较为成熟,阿里巴巴各子公司的网页中到处都可发现css sprites 的影子。但CSS Sprites并不是什么金科玉律,但在很多情况下,它有着一定的优势,最重要的是它可以减轻服务器的负载,提高网页加载速度。随着Web设计向着精致、巧妙的方向发展,设计师们开始考虑使用非Javascript的方 式制作鼠标滑过、悬停菜单的效果,这时CSS Sprite应运而生。
  说白了,CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。
  当页面加载时,不是加载每个单独图片,而是一次加载整个组合图片。这是一个了不起的改进,它大大减少了HTTP请求的次数,减轻服务器压力,同时缩短了悬停加载图片所需要的时间延迟,使效果更流畅,不会停顿。


CSS Sprites应用


  在这方面,淘宝网做的比较好,我就以淘宝网为例吧。


  实例一:淘宝频道页面导航


  效果图:



 

CSS


  sprites图:

CSS

 

  实例二:淘宝首页


  效果图:

 

CSS




  sprites图:


 

CSS


CSS Sprites优点


  CSS Sprites为什么突然跑火,跟能够提升网站性能有关。显而易见,这是它的巨大优点之一。


  1.利用CSS Sprites能很好地减少了网页的http请求,从而大大的提高了页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;


  2.个人认为CSS Sprites能减少图片的字节,我曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和。

CSS Sprites缺点


  诚然CSS Sprites是如此的强大,但是也存在一些不可忽视的缺点。


  1.在图片合并的时候,你要把多张图片有序的合理的合并成一张图片,还要留好只够的空间,防止板块内不会出现不必要的背景,否则可能会出现出现干扰图片的情况;这些还好,做痛苦的是在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂;


  2.CSS Sprites在开发的时候比较麻烦,你要通过photoshop或其他工具测量计算每一个背景单元的精确位置,这是针线活,没什么难度,但是很繁琐;不过网上已经有高手开发出“CSS Sprites 样式生成工具”,大家可以尝试一下。


  3.CSS Sprites在维护的时候比较麻烦,sprites是一般双刃剑,如果页面背景有少许改动,一般就要改这张合并的图片,无需改的地方最好不要动,这样避免改动更多的css,如果在原来的地方放不下,有只能(最好)往下加图片,这样图片的字节就增加了,因为每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐,而且重新算图片的位置(尤其是这种上千px的图)也是一件颇为不爽的事情。当然,在性能的口号下,这些都是可以克服的。


  4.由于图片的位置需要固定为某个绝对数值,这就失去了诸如center之类的灵活性。

CSS Sprites总结
  性能压倒一切。CSS Sprites非常值得学习和应用,特别是页面有一堆ico(图标)。总之很多时候大家要权衡一下利弊,在决定是不是应用CSS Sprites。为保持兼容性和维护性,sprites图片中的各个部分保持一定的距离是一种不错的做法。

13.Dreamweaver使用CSS的一个小问题

  Dreamweaver应该大家都知道吧(以下简称DW),这是著名美国MacROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器。由于DW的功能之强大,所以可以在他里面直接定义CSS(样式表),而就是这css给我出了个小难题。


  事情是这样的, 我用css主要是改变一下我的超级连接的颜色和下划线的有无。在DW里定义css的确很方便,里面的参数他都为你设置好了,只要你点鼠标就行了。正是由于他的简单,而使他带来了一个小问题(就我自己认为):


  < style type="text/css">


  < !--


  a:hover { color: #FF3333; text-decoration: underline}


  a:link { color: #3333FF; text-decoration: none}


  a:visited { color: #3333FF; text-decoration: none}


  -->


  < /style>


  以上就是DW生成的css源码,这段源码的意思就是去掉超级连接的下划线,鼠标移上去的进候改变颜色并添加下划线,连接后的颜色不变为蓝色。我本意也是如此,可是在IE里浏览的结果告诉你,不是这样的。而是有一点点小改变,就是连接了之后,当鼠标再次移上去的时候,本来是有下划线的,变成没有了。这是什么原因呢,一般来说是有的呀!那是为什么了,接着我从别的网站找了一个和我定义的差不多的css,分析一下他们的css源码,差不多呀(就颜色不同和多了一些其它参数),其它多的参数很快被我排除,因为那些参数我用不着,就停在颜色上,刚开始我还以为我是色盲呢!但是还是很快就又否定了,我把找到的css放到我的主页上很正常,并把颜色改成我的颜色,还是很正常。这也不是,那也不是,那为什么了。为什么一样的代码会有两种效果?为什么…


  就在我准备上网求助的时候,突然我的眼睛一亮,该不会是这个原因吧!原来那个我找来的代码和我自己的代码,只有一点点不同就是---顺序不同,因为我想顺序不是很重要吧!就没有注意。接下来就是改了,再一试,哇,成功!唉看来以后定义css只有手写的或在DW里定义了再改。真麻烦,我还以为有DW就变简单呢,没想到还是要手定代码。如果那位高手还有好办法请来信告之!以下是改了的代码:(是不是不容易注意啊!)


  < style type="text/css">


  < !--


  a:link { color: #3333FF; text-decoration: none}


  a:visited { color: #3333FF; text-decoration: none}


  a:hover { color: #FF3333; text-decoration: underline}


  -->


  < /style>

14.调用网络字体

      Google前些天在Google I/O大会上发布了一个新的服务 Font API,这是一个很酷的东东,可以让我们很方便的使用网络字体,而且这些字体都是免费的,你无需担心版权的问题。


      Google Font API使用起来也非常方便,从下面的例子中可见一斑:

@font-face { font-family: 'Tangerine'; font-style: normal; font-weight: normal; src: local('Tangerine'), url('http://themes.googleusercontent.com/font?kit=_jMq7r9ahcBZZjpP8hftNA') format('truetype');}

嗯,看起来与普通的web-font定义并无二样,只是url资源使用Google Font API库中的字体。

 

      相对于其它的网络字体服务,Font API有以下优势(与Ajax API类似):

 

      节省自己的流量; 快速,稳定。

 

      欲了解更多,可以查看这个快速指南。

 

——————————–分割线——————————–

 

中文网络字体

 

      使用网络字体的好处是不言而喻的,它可以让我们更方便的实现更丰富的页面效果。国外的技术人员,一直在不断的为让web-font变为现实而努力,从sIFR到typeface再到typeselect,以及cufon和fontue,不同的尝试和解决方案不断涌现,各大浏览器纷纷开始支持@web-font属性,同时类似typekit之类的收费和免费网络字体也开始不断出现。这让我们对此充满的希望。

 

      但是反观国内,我们却只能望洋兴叹,汉字的网络应用一直没有进展。

 

      其实道理很简单,中文网络字体的实现有很多难以跨越的瓶颈:

 

      字体太大,在当前国内的网络带宽环境下,使用中文网络字体不太现实; 版权问题,绝大部分优秀的中文字体,都不是免费的; 商业模式陈旧,没有与时俱进。

 

      国内的商业字体厂商的思维还是停留在平面和印刷上,他们并没有重视或者发现网络这块市场,以至于多年来,除了开源的文泉驿,我们没有见到有太多字体创新,更没有看到各大字体厂商有向网络字体方面的任何努力。

 

      希望

 

      嗯,除了希望,我没有任何办法促进中文字体的网络应用......

 

      博大精深的中华文化,很大一部分是体现在汉字上的,而在互联网对社会生活影响越来越深刻的今天,汉字在网络上的应用却依然那么困难和苍白。

 

      Google之所以令人尊敬,不仅仅是因为它在创新,更是因为它也在普及创新。

 

      希望国内的字体厂商和浏览器厂商,能够真正的为中文字体的网络应用做出些努力和创新,不要固步自封,固守已经过时的商业模式。

 

      不过,或许他们也无能为力,或许我们只有等待——等待网速普及到100MB以上、等待国外出现先进的技术、等待....——到时候,或许字体厂商会沦为坚强的维权者....

15.解决浏览器的等宽空格问题


  很多时候,希望能够在 HTML 中使用空格排版。但浏览器在解析 HTML 时,会把连续的空格解析成一个,所以我们会使用   等这样的占位符。

 

  但是也不是很可靠,比如空格间距非常大,那么我们必须增加多个占位符,同时页面的体积会变得非常大。

 

  同时,注意到 Safari 中的宽度是已设定字符的空格宽度(Safari 的默认字体为 Times),也就是说一个中文字符需要两个占位符。

 

  具体情况如下图所示:

 

  Dreamweaver

 

  其实,这不是 Safari 的问题,而是字体的问题。解决的方式就是使用下面的属性

 

  font-family: '宋体';将 Safari 的默认字体设置成“宋体”等中英文等宽的字体,就能解决。Windows 版本的 Safari 字体设置,需要直接使用中文“宋体”这样的名称而不是“Simsun”(了解原因的兄弟请告诉我)。

 

  但至此,我们的根本目标没有解决,就是能否避免使用   这样的占位符,而使用“原生”的空格。考虑针对空白的相应 CSS 属性,具体了解有关 white-space 的用法,接下来就比较好处理了。

 

  总结下使用 white-space 实现等宽空格的条件,有两个。需要设置对应的属性

 

  white-space: pre;

 

  然后设置等宽字符(包括等宽空格)即可。综合起来,就是这样

 

  font-family: '宋体', Simsun;

 

  white-space: pre;

 

  由于使用了中文 CSS 名称,所以在实际使用中需要考虑样式的字符编码问题。同时,需要额外考虑的是,苹果机是否有“宋体”(或者其他等宽的字体),有苹果机的兄弟请帮忙测试下。

 

  --Split--

 

  感谢 小马 提供的另外一个思路,就是使用 em 单位。1em 简单的说,就可以认为是一个字符宽度;同理,.5em 就是半个字符。那么,上面的情况就可以使用这样写。

 

  <span>买<ins class="half-word"></ins>宝<ins class="half-word"></ins>贝:</span><br />

 

  <span>我的淘宝:</span><br />

 

  <span>社<ins class="two-word"></ins>区:</span><br />

 

  对应的 CSS 应为

 

  .half-word {width: .5em;}

 

  .two-word{width:2em;}

 

  经测试通过。

 

  --Split--

 

  针对这上述的两种不同方法,个人认为应当按照实际情况考虑采用。比如第一种方法,虽然依赖具体的等宽字体,但没有添加其他额外的结构,对于以后的维护会更加的方便;第二种方法,则更多的考虑了实际的应用情况(同时也不用依赖具体的等宽字体),但是也添加了额外的结构。

 

  所以,如考虑到以后的可维护性,同时“语义”的角度上分析,推崇第一种做法。而实际的应用情况下,同时需要应用比较复杂时,个人会选用第二种。

16.让CSS样式表优化更整洁而简短


  CSS简写就是指将多行的CSS属性声明化成一行,又称为CSS代码优化。CSS简写的最大好处就是能够显著减少CSS文件的大小,其实还有很多其他益处。臃肿而杂乱的CSS样式表会使你遇到问题是难以调试。尤其是当一个团队在进行设计的时候,你的臃肿的CSS代码会使你的团队其他成员的工作效率下降。

 

  今天,整理了一些CSS简写技巧,它们其实是CSS最常用的写法,但是太多的人使用Dreamweaver这种所见即所得软件来编写CSS,使得代码过于臃肿。不过没关系,看过本文之后,你一能能掌握CSS代码优化的技巧,今后让你的每一个CSS样式表都看起来整洁而简短吧。

 

  属性值为0

 

  书写原则是如果CSS属性值为0,那么你不必为其添加单位(如:px/em),你可能会这样写:

 

  padding: 10px 5px 0px 0px;

 

  试试这样吧:

 

  padding: 10px 5px 0 0;

 

  移除选择器

 

  选择器是你在为一些元素应用CSS样式时的基本方法,比如h1, h2, h2, div, strong, pre, ul, ol等等…如果你使用了class(.类名)或ID(#id名),那么就不用再在声明CSS时包含选择器了。

 

  div#logowrap

 

  尝试扔掉多余的选择器吧:

 

  #logowrap

 

  在这个例子中所谓的那个选择器就是div

 

  *总爱和你开玩笑

 

  要明智的使用*而避免它在整个CSS样式表中乱开玩笑,*是个通配符,你可以使用它来为你的设计部分或全部进行一系列CSS声明。例如:

 

  * {

 

   margin: 0;

 

  }

 

  这个声明会将所有元素的margin值设置为0,同样的,为了严谨起见,你可以尝试这样设置:

 

  #menu * {

 

   margin: 0;

 

  }

 

  这样的声明是指将#menu下的所有元素的margin设为0。

 

  背景

 

  背景(background)属性可能会包含设置背景色、背景图、背景图的位置和背景图重复方式的参数,你可能会写成:

 

  background-image: url(”logo.png”);

 

  background-position: top center;

 

  background-repeat: no-repeat;

 

  其实可以写成:

 

  background: url(logo.png) no-repeat top center;

 

  颜色

 

  颜色(color)属性在CSS通常指定为一个十六进制的值,一个#加6位数,他的简写方式是如果颜色值由成对儿出现的三对而数字组成,你可以省略掉没对中的一个数字。

 

  #000000 可以写成 #000, #336699 可以写成 #369

 

  这种简写技巧只适用于成对出现的颜色值,其它颜色值不适用这种技巧,比如:

 

  #010101, #223345, #FFF000

 

  Margin(外边距/空白边)

 

  声明CSS magin值得时候通常会写成这样:

 

  margin-top:0px;

 

  margin-right:10px;

 

  margin-bottom:0px;

 

  margin-left:10px;

 

  让我们试试把值为0的单位去掉,并把4条声明合并成一条声明:

 

  margin:0 10px 0 10px;

 

  当你生命padding、margin、border(还有一些其他属性)时,记得要把按照顺时针的方向来声明属性值,也就是按照上-右-下-左的方向。关于这些属性还有另一个更加简单的写法,看看属性中上和下、左和右是否值是相等的,如果是那么就可以进一步优化了,你可以省略掉后两个值,剩下的两个值前者指上下,后者指左右:

 

  margin:0 10px;

 

  它是指左右的值为10px,上下的值为0;

 

  Padding(内边距)

 

  padding的简写技巧等同于margin:

 

  padding-top:0px;

 

  padding-right:10px;

 

  padding-bottom:0px;

 

  padding-left:10px;

 

  可以写成:

 

  padding: 0 10px;

 


  Borders(边框)

 

  边框的简写方式相比其它生命来说会比较复杂,很多CSSer一开始都容易记混它的简写顺序,如果你想声明一个1像素宽的实线黑色边框,可能会写成:

 

  border-width:1px;

 

  border-style:solid;

 

  border-color:#000;

 

  其实可以写成:

 

  border:1px solid #000;

 

  注意:这里的颜色值已经使用了上面讲过的颜色简写方法了哦。

 

  我们还可以为四个边设置不同的宽度:

 

  border-top-width:1px;

 

  border-right-width:2px;

 

  border-bottom-width:3px;

 

  border-left-width:4px;

 

  可以简写成:

 

  border-width:1px 2px 3px 4px;

 

  最后,我们还可以只设置左和右的边的样式:

 

  border-right:1px solid #000;

 

  border-bottom:1px solid #000;

 

  虽然并没减少多少代码,但暴风彬彬建议写成这样:

 

  border:1px solid #000;

 

  border-width:0 1px 1px 0;

 

  先设置四个边的默认风格,然后声明具体的哪个边要显示。

 

  文字

 

  文字属性也有很多可能会用到的属性值,像背景一样,你可能会声明这种复杂的文字样式:

 

  font-style:italic;

 

  font-variant:small-caps;

 

  font-weight:bold;

 

  font-size:1em;

 

  line-height:150%;

 

  font-family:宋体, Arial, sans-serif;

 

  其实可以优化成一行:

 

  font:italic small-caps bold 1em/150% 宋体, Arial, sans-serif;

 

  列表

 

  list-style-type:square;

 

  list-style-position:inside;

 

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

 

  可以写成:

 

  list-style:square inside url(filename.gif);

 

  希望这10个CSS缩写技巧能对你的CSS书写有所帮助

17.HTML5、CSS3应用教程之跟DIV说再见

Web设计师可以使用HTML4和CSS2.1完成一些很酷的东西。我们可以在不使用陈旧的基于table布局的基础上完成文档逻辑结构并创建内容丰富的网站。我们可以在不使用内联<font>和<br>标签的基础上对网站添加漂亮而细腻的风格样式。事实上,我们目前的设计能力已经让我们远离了那个可怕的浏览器战争时代、专有协议和那些充满闪动、滚动和闪烁的丑陋网页。

  虽然我们现在已经普遍使用了HTML4和CSS2.1,但是我们还可以做得更好!我们可以重组我们代码的结构并能让我们的页面代码更富有语义化特性。我们可以缩减带给页面美丽外观样式代码量并让他们有更高的可扩展性。现在,HTML5和CSS3正跃跃欲试的等待大家,下面让我们来看看他们是否真的能让我们的设计提升到下一个高度吧…

曾经,设计师们经常会跟频繁使用基于table的没有任何语义的布局。不过最终还是要感谢像Jeffrey Zeldman和Eric Meyer这样的思想革新者,聪明的设计师们慢慢的接受了相对更语义化的<div>布局替代了table布局,并且开始调用外部样式表。但不幸的是,复杂的网页设计需要大量不同的标签结构代码,我们把它叫做“<div>-soup” 综合症。也许你很熟悉下面的代码: