css教程.docx
《css教程.docx》由会员分享,可在线阅读,更多相关《css教程.docx(38页珍藏版)》请在冰点文库上搜索。
css教程
第一部分:
有三种方法应用CSS
一、In-line 行内
行内样式是在html标签里直接使用style属性
ExampleSourceCode[]
verdana;color:
red">ThistextisinVerdanaandred
设定段落文字红色。
但要记住,最后的HTML应该是独立出来,使用表现文档,所以行内样式应该在任何地方避免。
二、Internal 内部
使用于整个页面的植入内部样式在head标签里面,style标签包围样式。
ExampleSourceCode[]
CSS Example p {
color:
red;
}
a {
color:
blue;
}
...
所有段落文字红色,链接蓝色。
像行内样式一样,你应该保持HTML和CSS分离,所以我们只剩下救星。
三、外部
外部样式使用在整个多样页面网站。
它是一个独立的CSS文件,像下面一样:
ExampleSourceCode[]
p {
color:
red;
}
a {
color:
blue;
}
如果上面保存为“web.css”,HTML里面的链接就像下面:
ExampleSourceCode[]
CSS Example
...
后面教程里会讲到其他外联样式的方法,现在已经足够了。
从这篇指导里面,我们以后沿着上面的方法实验代码是个好主意,用文本编辑器新建文件,保存为"web.css"在html目录。
ExampleSourceCode[]
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http:
//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
My first web page
...
保存HTML文件,现在已经链接上CSS,不过现在CSS是空的,没有内容不会改变HTML。
当你开始学习CSS,就可以添加代码到CSS文件里,看HTML刷新后的结果。
第二部分:
选择器的应用
CSS Selectors,Properties,and Values 选择器 、属性、值
HTML有标签,CSS有选择器。
选择器是给内部和外部样式里面的样式命名。
每个选择器都有属性在{}里面,比如简单点像color,font-weight或background-color。
值在冒号(不是等号)后面,分号分离属性。
ExampleSourceCode[]
body {
font-size:
0.8em;
color:
navy;
}
上面的意思是为body选择器设置font-size字体大小和color字体颜色。
所以基本的,当它作用与HTML页面时,在body标签(整个窗口中的内容)之间的文字颜色是navy字体大小是0.8ems。
长度和百分比 CSS里面有许多属性值要指定单位,但有些基本单位被使用在一些属性上,在这之前值得属性下它们。
em比如font-size:
2em给于字体计算出的大小,所以2em就是实际字体大小的两倍。
px比如font-size:
12px是pixel像素的单位。
pt比如font-size:
12px是points镑的单位。
%比如font-size:
80%是百分比
其他单位包括pc(12点西文活字)、cm(厘米)、mm(毫米)和in(英寸)
font-style设定斜体,比如font-style:
italic;
font-weight设定文字粗细,比如font-weight:
bold;
font-size设定文字大小,比如font-size:
12px;(或者9pt,不同单位显示问题参考CSS手册)
line-height设定行距,比如line-height:
150%;
color设定文字颜色(注意不是font-color),比如color:
red;
font-family设定字体,比如font-family :
"Lucida Grande", Verdana, Lucida, Arial, Helvetica, 宋体,sans-serif;(这是通用的写法)
以上都可以写在一行font属性里(除了color属性需要单独写):
font:
italic bold 12px/150% "Lucida Grande", Verdana, Lucida, Arial, Helvetica, 宋体,sans-serif;
当值是零的时候,不需要单位,例如:
border:
0意思没有边框。
网页不是静态的、绝对的媒体。
这意味着内能伸缩变形,用户应该被允许调整自己喜欢的方式,包括字体大小和屏幕大小。
因为这样,建议使用"em"和"%"在font-size上(宽度和高度),相比下px不能够在大部分浏览器改变大小,所以要少用,可以用在边框的大小上。
px:
pixel,像素,屏幕上显示的最小单位,用于网页设计,直观方便;
pt:
point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
em:
即%,在css中,1em=100%,是一个比率,结合CSS继承关系使用,具有灵活性。
PPI(DPI):
pixel(dot)perinch,每英寸的像素(点)数,是一个率,表示了“清晰度”,“精度”。
在浏览网页过程中,所有的“大”“小”概念,都是基于“屏幕”这个“界面”上。
“屏幕”上的各种信息,包括文字、图片、表格等等,都会随屏幕的分辨率变化而变化,一个100px宽度大小的图片,在800×600分辨率下,要占屏幕宽度的1/8,但在1024×768下,则只占约1/10。
所以如果在定义字体大小时,使用px作为单位,那一旦用户改变显示器分辨率从800到1024,用户实际看到的文字就要变“小”(自然长度单位),甚至会看不清,影响浏览。
第三部分:
css颜色
css可以处理16,777,216颜色,可以使用名字、rgb值或十六进制代码。
ExampleSourceCode[]
red红色等同于rgb(255,0,0)等同于rgb(100%,0%,0%)等同于#ff0000等同于#f00
有17个预先确定的颜色,它们是:
aqua, black, blue, fuchsia, gray, green, lime, maroon, navy,
olive, orange, purple, red, silver, teal, white, and yellow.
transparent 也是一个正确的值。
rgb的三个值都是从0到255,0是最低级,255是最高级,这些值同样可以是百分比。
我们通常使用10进制即0-9,但hexadecimal使用16进制,即0到f。
十六进制三或六个数字长度前面带上#字符,三个长度是六个的压缩形式,比如#f00是ff0000的压缩,#c96是#cc9966。
三位数很好理解,像rgb,第一个是红色,第二个是绿色,第三个蓝色。
但六位数给于更多的颜色控制。
color和background-color
颜色可以使用color和background-color,是美国英语中"color"不是"colour"。
蓝色背景,黄色文字:
ExampleSourceCode[]
h1 {
color:
yellow;
background-color:
blue;
}
这些颜色可能比较粗糙,你可以使用另外的色度:
ExampleSourceCode[]
body {
font-size:
0.8em;
color:
navy;
}
h1 {
color:
#ffc;
background-color:
#009;
}
你可以看到h1已经变成黄色和蓝色。
color和background-color可以使用在绝大部分html元素,包括body。
第四部分:
改变网页文字的大小和形状
有一系列属性可以改变网页文字的大小和形状,概要如下:
font-family
文字使用的字体,比如宋体,Times New Roman,Arial等等
这个属性必须详细制定,不能使用偏僻的字体,要使用安全字体(比如arial,verdana和times new roman和宋体),可以同时指定许多字体,只要使用逗号分开即可。
这样的用意是,如果用户电脑里没有第一个字体浏览器可以使用后面指定的字体。
这非常有用,因为不同的电脑拥有不同的字体。
例子font-size:
arial,helvetica,pc用户可以使用arial而苹果mac用户可以使用helvetica。
注意:
如果字体的名称有许多单词组成,使用双引号组合,比如,font-family:
"Times New Romes"。
font-size
字体的大小,要小心使用。
比如标题不会和段落一样,它要用大字体,你可以使用h1h2等等。
font-weight
这个属性决定字体是否加粗。
在实际运用中通常使用font-weight:
bold或font-weight:
normal。
理论上还可以使用bolder,lighter,100,200, 300, 400, 500, 600, 700, 800 or 900,但有些浏览器不认,仍坚持bold和normal。
font-style
这个属性决定字体是否是斜体,可能是font-style:
italic或font-style:
normal。
text-decoration
这个属性决定是文本否需要下划线。
可以是:
ExampleSourceCode[]
text-decoration:
overline,加上划线
text-decoration:
line-through,加通过文本的线条。
text-decoration:
underline,这应该使用在链接上,因为用户习惯认为它代表链接。
text-transform改变文本的情况。
ExampleSourceCode[]
text-transform:
capitalize ,让每个字的第一个字母大写。
text-transform:
uppercase ,所有大写。
text-transform:
lowercase,所有小写。
text-transform:
none; ,这个属性不起作用。
ExampleSourceCode[]
body {
font-family:
arial, helvetica, sans-serif;
font-size:
0.8em;
}
h1 {
font-size:
2em;
}
h2 {
font-size:
1.5em;
}
a {
text-decoration:
none;
}
strong {
font-style:
italic;
text-transform:
uppercase;
}
Text spacing
etter-spacing和word-spacing属性的意思是字母和文字之间的间隔。
值可以是长度或normal。
line-height属性设定元素的行高,比如一个段落,没有调准字体的大小。
它可以是数字(字体大小的倍数),长度,百分比或normal。
text-align设定元素位置,left,right,center或justify。
text-indent属性缩进段落的首行。
这在打印时经常设置,但网页里通常用不上。
ExampleSourceCode[]
p {
letter-spacing:
0.5em;
word-spacing:
2em;
line-height:
1.5;
text-align:
center;
}
margin和padding用来隔开元素,margin是隔开元素与外边,padding是隔开元素里边。
例子h2:
ExampleSourceCode[]
h2 {
font-size:
1.5em;
background-color:
#ccc;
margin:
1em;
padding:
3em;
}
元素四边可以设置的属性:
margin-top, margin-right, margin-bottom, margin-left, padding-top, padding-right, padding-bottom and padding-left
第五部分:
box模型图解
width和height定义的是Content部分的宽度和高度,padding border margin的宽度依次加在外面。
背景会填充padding和content部分。
但是由于浏览器设计上的问题,不同浏览器显示效果会有些不同。
左右Margin加倍的问题当box为float时,IE6中box左右的margin会加倍
W3C定义的盒模式如下:
width和height定义的是Content部分的宽度和高度,padding border margin的宽度依次加在外面。
背景会填充padding和content部分。
但是由于浏览器设计上的问题,不同浏览器显示效果会有些不同。
左右Margin加倍的问题
当box为float时,IE6中box左右的margin会加倍。
比如:
ExampleSourceCode[]
//www.w3.org/1999/xhtml">
.outer {
width:
500px;
height:
200px;
background:
#000;
}
.inner {
float:
left;
width:
200px;
height:
100px;
margin:
5px;
background:
#fff;
}
左面的inner的左面margin明显大于5px。
这时候,定义inner的display属性为inline。
外层box自动计算高度的问题
根据W3C定义,没有float属性的外层box不会自动计算高度,要计算高度,必须在内层最后一个box加入clear:
both。
Opera、netscape、mozilla等不会计算外层box高度,但是微软ie6会自动计算外层高度。
比如:
ExampleSourceCode[]
//www.w3.org/1999/xhtml">
.outer {
width:
600px;
background:
#000;
}
.inner1 {
float:
left;
width:
200px;
height:
100px;
margin:
5px;
background:
red;
}
.inner2 {
float:
left;
width:
200px;
height:
100px;
margin:
5px;
background:
yellow;
}
上面的代码在ie中有黑色的背景,但是没有正确的计算上下的margin,在inner2下面加上一个包含clear:
both属性的div后,可以正确计算margin。
但是firefox中仍然没有黑色背景,通常的解决办法是定义一下clear:
both这个div的高度,或者插入全角空格,这样就必须增加额外的高度。
网上一种比较好的解决办法是在外层div中加入overflow属性,同时使用clear:
both,这样就不会增加额外的高度了。
如下:
ExampleSourceCode[]
.outer {
width:
600px;
background:
#000;
overflow:
auto;
}
.inner1 {
display:
inline;
float:
left;
width:
200px;
height:
100px;
margin:
5px;
background:
red;
}
.inner2 {
display:
inline;
float:
left;
width:
200px;
height:
100px;
margin:
5px;
background:
yellow;
}
.clear {
clear:
both;
}
因此,外层css要定义overflow属性,内层最后要加上clear属性。
伟大的塌陷
使用浮动(float)的一个比较疑惑的事情是他们怎么影响包含他们的父元素的。
如果父元素只包含浮动元素,那么它的高度就会塌缩为零。
如果父元素不包含任何的可见背景,这个问题会很难被注意到,但是这是一个很重要的问题。
清除浮动的技术
如果你很明确的知道接下来的元素会是什么,可以使用clear:
both;来清除浮动。
这个方法很不错,它不需要hack,不添加额外的元素也使得它有良好的语义性。
当然事情并不是都可以这样解决的,工具箱中还是需要另外几个清除浮动的工具。
∙空div方法从字面来看,是一个空的div。
。
有时可能会用
或者一些其他元素,但是div是最常用的,因为它没有浏览器默认样式;没有特殊功能,而且一般不会被css样式化。
这个方法因为只是为了表现,对页面没有上下文涵义而被纯语义论者嘲笑。
诚然,从严格的角度来说他们是对的,但是这个方法有效而且没有任何伤害。
∙overflow方法在父元素上设置overflow这个css属性。
如果父元素的这个属性设置为auto或者hidden,父元素就会扩展以包含浮动。
这个方法有着较好的语义性,因为他不需要额外元素。
但是,如果需要增加一个新的div来使用这个方法,其实就和空div方法一样没有语义了。
而且要记住,overflow属性不是为了清除浮动而定义的。
要小心不要覆盖住内容或者触发了不需要的滚动条。
∙简单清除方法使用了一个聪明的css伪选择符(:
after)来清除浮动。
比起在父元素上设置overflow,只需要给它增加一个额外的类似于”clearfix”的类。
这个类使用如下css:
居中问题
需要定义元素的宽,并且定义横向的margin,如果你的布局包含在一个层(容器)中,就象这样:
你可以这样定义使它横向居中:
ExampleSourceCode[]
#wrap {
width:
760px; /* 修改为你的层的宽度 */
margin:
0 auto;
}
但是IE5/Win不能正确显示这个定义,我们采用一个非常有用的技巧来解决:
在外层用text-align属性。
就象这样:
ExampleSourceCode[]
#outer {
text-align:
center;
}
#wrap {
width:
760px; /* 修改为你的层的宽度 */
margin:
0 auto;
text-align:
left;
}
第一个#outer的text-align:
center; 规则定义IE5/Win中#outer的所有元素居中(其他浏览器只是将文字居中) ,第二个text-align:
left;是将#warp中的文字居左。
因此,在有居中元素的css中,外层css要定义text-align:
center属性,内层居中用margin:
x auto x auto定义,并重新定义text-align。
第六部分:
CSS Borders 边框
边框可以运用到body里的大部分HTML元素。
制作一个元素的边框,你需要border-style边框样式。
值可以是:
solid, dotted, dashed, double, groove, ridge, inset and