这样的标签,HTML的初衷是表达“这是标题”、“这是段落”、“这是表格”之类的信息。同时文档布局由浏览器来完成,而不使用任何的格式化标签。
由于两种主要的浏览器(Netscape和InternetExplorer)不断地将新的HTML标签和属性(比如字体标签和颜色属性)添加到HTML规范中,创建文档内容清晰地独立于文档表现层的站点变得越来越困难。
为了解决这个问题,万维网联盟(W3C),这个非营利的标准化联盟,肩负起了HTML标准化的使命,并在HTML4.0之外创造出样式(Style)。
所有的主流浏览器均支持层叠样式表。
样式表定义如何显示HTML元素,就像HTML3.2的字体标签和颜色属性所起的作用那样。
样式通常保存在外部的.css文件中。
通过仅仅编辑一个简单的CSS文档,外部样式表使你有能力同时改变站点中所有页面的布局和外观。
由于允许同时控制多重页面的样式和布局,CSS可以称得上WEB设计领域的一个突破。
作为网站开发者,你能够为每个HTML元素定义样式,并将之应用于你希望的任意多的页面中。
如需进行全局的更新,只需简单地改变样式,然后网站中的所有元素均会自动地更新。
当同一个HTML元素被不止一个样式定义时,会使用哪个样式呢?
一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中4)拥有最高的优先权。
1)浏览器缺省设置
2)外部样式表
3)内部样式表(位于
标签内部)4)内联样式(在HTML元素内部)
因此,内联样式(在HTML元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明:
标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。5.2CCS基本语法
CSS规则由两个主要的部分构成:
选择器,以及一条或多条声明。
selector{declaration1;declaration2;...declarationN}
选择器通常是您需要改变样式的HTML元素,每条声明由一个属性和一个值组成。
属性(property)是您希望设置的样式属性(styleattribute),每个属性有一个值,属性和值被冒号分开。
selector{property:
value}
下面这行代码的作用是将h1元素内的文字颜色定义为红色,同时将字体大小设置为14像素。
在这个例子中,h1是选择器,color和font-size是属性,red和14px是值。
h1{color:
red;font-size:
14px;}
下面的示意图展示了上面这段代码的结构:
除了英文单词red,我们还可以使用十六进制的颜色值#ff0000:
p{color:
#ff0000;}
为了节约字节,我们可以使用CSS的缩写形式:
p{color:
#f00;}
我们还可以通过两种方法使用RGB值:
p{color:
rgb(255,0,0);}
p{color:
rgb(100%,0%,0%);}
请注意,当使用RGB百分比时,即使当值为0时也要写百分比符号。
但是在其他的情况下就不需要这么做了。
比如说,当尺寸为0像素时,0之后不需要使用px单位,因为0就是0,无论单位是什么。
记得写引号,如果值为若干单词,则要给值加引号:
p{font-family:
"sansserif";}
5.2.1多重声明
如果要定义不止一个声明,则需要用分号将每个声明分开。
下面的例子展示出如何定义一个红色文字的居中段落。
最后一条规则是不需要加分号的,因为分号在英语中是一个分隔符号,不是结束符号。
然而,大多数有经验的设计师会在每条声明的末尾都加上分号,这么的好处是,当你从现有的规则中增减声明时,会尽可能的减少出错的可能性。
就像这样:
p{text-align:
center;color:
red;}
你应该在每行只描述一个属性,这样可以增强样式定义的可读性,就像这样:
p{
text-align:
center;
color:
black;
font-family:
arial;
}
5.2.2空格和大小写
大多数样式表包含不止一条规则,而大多数规则包含不止一个声明。
多重声明和空格的使用使得样式表更容易被编辑:
body{
color:
#000;
background:
#fff;
margin:
0;
padding:
0;
font-family:
Georgia,Palatino,serif;
}
是否包含空格不会影响CSS在浏览器的工作效果,同样,与XHTML不同,CSS对大小写不敏感。
不过存在一个例外:
如果涉及到与HTML文档一起工作的话,class和id名称对大小写是敏感的。
5.2.3选择器的分组
你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。
用逗号将需要分组的选择器分开。
在下面的例子中,我们对所有的标题元素进行了分组。
所有的标题元素都是绿色的。
h1,h2,h3,h4,h5,h6{color:
green;}
5.2.4继承及其问题
根据CSS,子元素从父元素继承属性。
但是它并不总是按此方式工作。
看看下面这条规则:
body{font-family:
Verdana,sans-serif;}
根据上面这条规则,站点的body元素将使用Verdana字体(假如访问者的系统中存在该字体的话)。
通过CSS继承,子元素将继承最高级元素(在本例中是body)所拥有的属性(这些子元素诸如p,td,ul,ol,ul,li,dl,dt,和dd)。
不需要另外的规则,所有body的子元素都应该显示Verdana字体,子元素的子元素也一样。
并且在大部分的现代浏览器中,也确实是这样的。
如果你不希望"Verdana,sans-serif"字体被所有的子元素继承,又该怎么做呢?
比方说,你希望段落的字体是Times。
没问题。
创建一个针对p的特殊规则,这样它就会摆脱父元素的规则:
body{font-family:
Verdana,sans-serif;}
td,ul,ol,ul,li,dl,dt,dd{font-family:
Verdana,sans-serif;}
p{font-family:
Times,"TimesNewRoman",serif;}
5.2.5派生选择器
通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁。
在CSS1中,通过这种方式来应用规则的选择器被称为上下文选择器(contextualselectors),这是由于它们依赖于上下文关系来应用或者避免某项规则。
在CSS2中,它们称为派生选择器,但是无论你如何称呼它们,它们的作用都是相同的。
派生选择器允许你根据文档的上下文关系来确定某个标签的样式。
通过合理地使用派生选择器,我们可以使HTML代码变得更加整洁。
比方说,你希望列表中的strong元素变为斜体字,而不是通常的粗体字,可以这样定义一个派生选择器:
listrong{
font-style:
italic;
font-weight:
normal;
}
请注意标记为的蓝色代码的上下文关系:
我是粗体字,不是斜体字,因为我不在列表当中,所以这个规则对我不起作用
- 我是斜体字。
这是因为strong元素位于li元素内。
- 我是正常的字体。
在上面的例子中,只有li元素中的strong元素的样式为斜体字,无需为strong元素定义特别的class或id,代码更加简洁。
再看看下面的CSS规则:
strong{color:
red;}
h2{color:
red;}
h2strong{color:
blue;}
下面是它施加影响的HTML:
Thestronglyemphasizedwordinthisparagraphisred.
Thissubheadisalsored.
Thestronglyemphasizedwordinthissubheadisblue.
5.2.6id选择器
id选择器可以为标有特定id的HTML元素指定特定的样式。
id选择器以"#"来定义。
下面的两个id选择器,第一个可以定义元素的颜色为红色,第二个定义元素的颜色为绿色:
#red{color:
red;}
#green{color:
green;}
下面的HTML代码中,id属性为red的p元素显示为红色,而id属性为green的p元素显示为绿色。
这个段落是红色。
这个段落是绿色。
注意:
id属性只能在每个HTML文档中出现一次。
5.2.7id选择器和派生选择器
在现代布局中,id选择器常常用于建立派生选择器。
#sidebarp{
font-style:
italic;
text-align:
right;
margin-top:
0.5em;
}
上面的样式只会应用于出现在id是sidebar的元素内的段落。
这个元素很可能是div或者是表格单元,尽管它也可能是一个表格或者其他块级元素。
它甚至可以是一个内联元素,比如
5.2.8CSS类选择器
在CSS中,类选择器以一个点号显示:
.center{text-align:
center}
在上面的例子中,所有拥有center类的HTML元素均为居中。
在下面的HTML代码中,h1和p元素都有center类。
这意味着两者都将遵守".center"选择器中的规则。
Thisheadingwillbecenter-aligned
Thisparagraphwillalsobecenter-aligned.
注意:
类名的第一个字符不能使用数字!
它无法在Mozilla或Firefox中起作用。
和id一样,class也可被用作派生选择器:
.fancytd{color:
#f60;background:
#666;}
在上面这个例子中,类名为fancy的更大的元素内部的表格单元都会以灰色背景显示橙色文字。
(名为fancy的更大的元素可能是一个表格或者一个div)
元素也可以基于它们的类而被选择:
td.fancy{color:
#f60;background:
#666;}
在上面的例子中,类名为fancy的表格单元将是带有灰色背景的橙色。
你可以将类fancy分配给任何一个表格元素任意多的次数。
那些以fancy标注的单元格都会是带有灰色背景的橙色。
那些没有被分配名为fancy的类的单元格不会受这条规则的影响。
还有一点值得注意,class为fancy的段落也不会是带有灰色背景的橙色,当然,任何其他被标注为fancy的元素也不会受这条规则的影响。
这都是由于我们书写这条规则的方式,这个效果被限制于被标注为fancy的表格单元(即使用td元素来选择fancy类)。
5.2.9如何插入样式表
当读到一个样式表时,浏览器会根据它来格式化HTML文档。
插入样式表的方法有三种:
1)外部样式表
当样式需要应用于很多页面时,外部样式表将是理想的选择。
在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。
每个页面使用标签链接到样式表。
标签在(文档的)头部:
浏览器会从文件mystyle.css中读到样式声明,并根据它来格式文档。
外部样式表可以在任何文本编辑器中进行编辑。
文件不能包含任何的html标签。
样式表应该以.css扩展名进行保存。
下面是一个样式表文件的例子:
hr{color:
sienna;}
p{margin-left:
20px;}
body{background-image:
url("images/back40.gif");}
不要在属性值与单位之间留有空格。
假如你使用“margin-left:
20px”而不是“margin-left:
20px”,它仅在IE6中有效,但是在Mozilla/Firefox或Netscape中却无法正常工作。
2)内部样式表
当单个文档需要特殊的样式时,就应该使用内部样式表。
你可以使用
3)内联样式
由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。
请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。
要使用内联样式,你需要在相关的标签内使用样式(style)属性。
Style属性可以包含任何CSS属性。
本例展示如何改变段落的颜色和左外边距:
sienna;margin-left:
20px">
Thisisaparagraph
4)多重样式
如果某些属性在不同的样式表中被同样的选择器定义,那么属性值将从更具体的样式表中被继承过来。
例如,外部样式表拥有针对h3选择器的三个属性:
h3{color:
red;text-align:
left;font-size:
8pt;}
而内部样式表拥有针对h3选择器的两个属性:
h3{text-align:
right;font-size:
20pt;}
假如拥有内部样式表的这个页面同时与外部样式表链接,那么h3得到的样式是:
color:
red;text-align:
right;font-size:
20pt;
即颜色属性将被继承于外部样式表,而文字排列(text-alignment)和字体尺寸(font-size)会被内部样式表中的规则取代。
5.3使用Dreamweaver定义CSS
1)打开实验三中的首页index.html;
2)在“CSS样式”面板上,单击
按钮,新建CSS样式;
3)在规则定义中对话框中编辑类的属性;
4)也可以在Dreamweaver中直接编辑CSS文件,支持代码辅助编辑,有利于快速学习CSS;
5.4使用CSS修改“神秘花园”网站示例
1)打开“神秘花园”网站的index.html,使用
/*header结束*/
首页作品列表十年精选
神秘园乐队(SecretGarden)成立于1994年,……
……
就让我们从音响论坛/CDHI总编刘汉盛先生的文字中来领略一下神秘园的意境吧……
每个人的心中都有一座神秘花园,花园里有花有树有草,
有春有夏有秋有冬;也免不了有喜有悲。
……
有中国的秘密、爱尔兰的童话、居尔特的风情、
挪威的峡湾回声以及面对新世纪的晨曦。
/*prose结束*/
/*content结束*/
copyright©神秘园音乐2007
/*footerer结束*/
/*containerer结束*/
2)创建CSS.css文件,并在index.html
用引用该CSS文件
3)在CSS.css中添加样式:
/*定义“body”的样式*/
body{
font:
small"宋体";
text-align:
center;
padding-top:
20px;
padding-bottom:
20px;
}
/*定义“#container”的样式*/
#container{
text-align:
left;
margin:
auto;
width:
722px;
border:
1pxsolid#666666;
}
/*定义“#header”的样式*/
#header{
background:
url(../images/bg_header.jpg);
height:
200px;
margin:
1px;
text-indent:
-9999px;
}
/*定义“#nav”样式*/
#nav{
width:
722px;
float:
left;
border-top:
1pxsolid#666666;
border-bottom:
1pxsolid#666666;
}
/*定义“#navli”样式*/
#navli{
float:
left;
list-style:
none;
}
/*定义“#nava”样式*/
#nava{
color:
#000000;
text-decoration:
none;
padding:
5px8px;
display:
block;
}
/*定义“#nava:
hover”样式*/
#nava:
hover{
color:
#FF0000;
}
/*定义“#content”的样式*/
#content{
clear:
both;
padding:
15px;
line-height:
1.5em;
text-indent:
2em;
}
/*定义“#contentimg”的样式*/
#contentimg{
float:
right;
margin-left:
15px;
}
/*定义“#prose”的样式*/
#prose{
color:
#3587B9;
padding-left:
80px;
padding-top:
10px;
text-indent:
0em;
}
/*定义“#footer”的样式*/
#footer{
height:
40px;
border-top:
1pxsolid#666666;
line-height:
40px;
text-align:
center;
}
5.5动手试一试
请根据5.1到5.3的内容,在html页面中进行练习,并记录中间过程并截图。
同时利用CSS定义实验三中实现的网站。
小窍门:
可以利用Dreamweaver提供的一些模板来学习CSS。
6实验报告要求
1)详细写出需要自己动手练习实验内容的步骤;
2)给出CSS练习过程中各个页面的截屏;
3)填写实验报告,与ex4文件夹下全部htm文件、图片打包提交;
4)提交文件名格式:
班级号-学号-姓名-实验四.rar;
7实验注意事项
1)看清实验指导书后再动手;
2)按实验指导书动手做实验的过程中要勤于思考;
3)实验中充分利用搜索引擎学习相关知识和解决问题,同时要掌握如何利用高级搜索功能快速找到相关网页。
8思考题
CSS继承情况中,如果重复设置了属性,谁会被采用呢?
9扩展阅读
我们努力学习使用XHTML+CSS来重新设计我们的网站。
那么我们如何知道自己制作的页面真的符合web标准?
W3C和一些志愿者网站提供了在线校验程序,来帮助我们检查页面是否符合标准,并提供了修正错误的帮助信息。
这些校验非常有用,是我们调试页面第一步要做的事情。
9.1XHTML校验
校验网址:
http:
//validator.w3.org/,校验方式:
网址校验、文件上传校验。
校验成功,会显示"ThisPageIsValidXHTML1.0Transitional!
",如图:
校验失败,会显示更多校验选项和错误信息,如图:
一般选择"ShowSource"和"VerboseOutput"可以帮助你找到错误代码所在行和错误原因。
9.2XHTML校验常见错误原因对照表
1)·NoDOCTYPEFound!
FallingBacktoHTML4.01Transitional--未定义DOCTYPE。
2)·NoC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
-
CSS
基础
冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。