多重样式将层叠为一个
样式表允许以多种方式规定样式信息。样式可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在一个外部的 CSS 文件中。甚至可以在同一个 HTML 文档内部引用多个外部样式表。
层叠次序
当同一个 HTML 元素被不止一个样式定义时,会使用哪个样式呢?
一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 4 拥有最高的优先权。
- 浏览器缺省设置
- 外部样式表
- 内部样式表(位于 <head> 标签内部)
- 内联样式(在 HTML 元素内部)
因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明:<head> 标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。
语法:
selector {declaration1; declaration2; ... declarationN }selector: 派生选择器, id选择器, class选择器, 属性选择器
declaration = 属性:值, dec之间用分号分隔
如果值为若干单词,则要给值加引号, 值之间用逗号分隔
例子:
h1 {color:red; font-size:14px;}
可以对多个选择器应用相同的规则
h1,h2,h3,h4,h5,h6
{
color: green;
}
样式表具有继承性:子元素从父元素继承属性。但是它并不总是按此方式工作。
为防旧浏览器不支持这种能力, 可用下面的方法避免: body { font-family: Verdana, sans-serif; } p, td, ul, ol, li, dl, dt, dd { font-family: Verdana, sans-serif; }
对于不想使用这个特性的, 可以单独定义, 如下面的p:
body {
font-family: Verdana, sans-serif;
}
td, ul, ol, ul, li, dl, dt, dd {
font-family: Verdana, sans-serif;
}
p
{
font-family: Times, "Times New Roman", serif;
}
派生选择器:
通过依据元素在其位置的上下文关系来定义样式
例子:
这个样式只会影响<li> <strong> tag, 不会影响<strong>或者<li>li strong
{ font-style: italic; font-weight: normal; }<p><strong>我是粗体字,不是斜体字,因为我不在列表当中,所以这个规则对我不起作用</strong></p> <ol><li><strong>
我是斜体字。这是因为 strong 元素位于 li 元素内。</strong></li>
<li>我是正常的字体。</li> </ol>
id选择器:
顾名思义, 根据id来设置
#red
{color:red;}#green
{color:green;}
可以用作派生选择器: #sidebar p
{ font-style: italic; text-align: right; margin-top: 0.5em; }#sidebar h2
{ font-size: 1em; font-weight: normal; font-style: italic; margin: 0; line-height: 1.5; text-align: right; }
类选择器:
形如:
在 CSS 中,类选择器以一个点号显示:
.center
{text-align: center}; 在类名center前面需加一点。
<h1类名的第一个字符不能使用数字!它无法在 Mozilla 或 Firefox 中起作用。class="center"
> This heading will be center-aligned </h1> <pclass="center"
> This paragraph will also be center-aligned. </p>
和 id 一样,class 也可被用作派生选择器:
.fancy td
{
color: #f60;
background: #666;
}
在上面这个例子中,类名为 fancy 的更大的元素内部的表格单元都会以灰色背景显示橙色文字。(名为 fancy 的更大的元素可能是一个表格或者一个 div)
元素也可以基于它们的类而被选择:
td.fancy
{
color: #f60;
background: #666;
}
在上面的例子中,类名为 fancy 的表格单元将是带有灰色背景的橙色。
<td class="fancy"
>
属性选择器:
根据属性选择
[title]
{
color:red;
}
[title=W3School]
{
border:5px solid blue;
}
[title~=hello]
{ color:red; }适用于由空格分隔的属性值
[lang|=en] { color:red; }适用于由连字符分隔的属性值属性选择器在为不带有 class 或 id 的表单设置样式时特别有用
input[type="text"] { width:150px; display:block; margin-bottom:10px; background-color:yellow; font-family: Verdana, Arial; } input[type="button"] { width:120px; margin-left:35px; display:block; font-family: Verdana, Arial; }
外部样式表
<head> <link
rel="stylesheet" type="text/css" href="mystyle.css
" /> </head>
内部样式表
<head><style type="text/css">
hr {color: sienna;} p {margin-left: 20px;} body {background-image: url("images/back40.gif");}</style>
</head>
内联样式
<p style
="color: sienna; margin-left: 20px">
This is a paragraph
</p>
p.no2 {background-color: gray; padding: 20px;}; 给class no2设置背景色, 并超出文本20px的padding
background-color 不能继承,其默认值是 transparent。transparent 有“透明”之意。也就是说,如果一个元素没有指定背景色,那么背景就是透明的,这样其祖先元素的背景才能可见。
设置背景图片:
body {background-image: url(/i/eg_bg_04.gif);}
p.flower {background-image: url(/i/eg_bg_03.gif);}
<a href="#" class="radio">我是一个有放射性背景的链接。</a>; href="#" --->链接本页, 另外href中需要写协议, 比如href="sina.com.cn"是不会访问成功的
事实上,所有背景属性都不能继承
背景平铺设置:
background-repeat
body
{
background-image: url(/i/eg_bg_03.gif);
background-repeat: repeat-y;
}
值: repeat, repeat-x, repeat-y, no-repeat, 默认repeat
设置背景图像位置:
单一关键字 | 等价的关键字 |
---|---|
center | center center |
top | top center 或 center top |
bottom | bottom center 或 center bottom |
right | right center 或 center right |
left | left center 或 center left |
可以使用百分数值(如50%),长度值
background-position:50px 100px;
这指 起始x, y 位置
设置背景是否随文档滚动:
background-attachment:
值fixed, scroll, 默认scroll
设置某段文本的背景:(以前提过, 可能在html/html5一文, 参见http://blog.youkuaiyun.com/brucexu1978/article/details/7210592)
span.highlight
{
background-color:yellow
}
<span class="highlight">这是文本。</span>
所有属性在一起设:
<style type="text/css">
body
{
background: #ff0000 url(/i/eg_bg_03.gif) no-repeat fixed center;
}
</style>
文本缩进:
p {text-indent: 5em;} 一般来说,可以为所有块级元素应用 text-indent,但无法将该属性应用于行内元素,图像之类的替换元素上也无法应用 text-indent 属性。不过,如果一个块级元素(比如段落)的首行中有一个图像,它会随该行的其余文本移动。
如果想把一个行内元素的第一行“缩进”,可以用左内边距或外边距创造这种效果
p {text-indent: -5em;}; 悬挂缩进效果, 第一行在其他行的左边, 这种情况下, 为防第一行超出浏览器左边界, 需针对负缩进再设置一个外边距或一些内边距:比如:
p {text-indent: -5em; padding-left: 5em;}
text-indent 可以使用所有长度单位,包括百分比值。
text-indent 属性可以继承,请考虑如下标记:
div#outer {width: 500px;} div#inner {text-indent: 10%;} p {width: 200px;} <div id="outer"> <div id="inner">some text. some text. some text. <p>this is a paragragh.</p> </div> </div>
水平对齐text-align:
值 left、right 和 center,justify(两端对齐)
text-align:center 与 <CENTER>
您可能会认为 text-align:center 与 <CENTER> 元素的作用一样,但实际上二者大不相同。
<CENTER> 不仅影响文本,还会把整个元素居中。text-align 不会控制元素的对齐,而只影响内部内容。元素本身不会从一段移到另一端,只是其中的文本受影响。
字间间隔word-spacing :改变字(单词)之间的标准间隔。其默认值 normal 与设置值为 0 是一样的
值可为正负, 正增大, 负减小,
可能的值:
normal | 默认。定义单词间的标准空间。 |
length | 定义单词间的固定空间。 |
inherit | 规定应该从父元素继承 word-spacing 属性的值。 |
length可用px或者em做单位
字母间隔letter-spacing:这个是改变字母间隔, 其他通字间间隔
text-transform 属性处理文本的大小写。这个属性有 4 个值:
- none
- uppercase
- lowercase
- capitalize
文本装饰
接下来,我们讨论 text-decoration 属性,这是一个很有意思的属性,它提供了很多非常有趣的行为。
text-decoration 有 5 个值:
- none
- underline
- overline
- line-through
- blink
不出所料,underline 会对元素加下划线,就像 HTML 中的 U 元素一样。overline的作用恰好相反,会在文本的顶端画一个上划线。值 line-through 则在文本中间画一个贯穿线,等价于 HTML 中的 S 和strike 元素。blink 会让文本闪烁,类似于 Netscape 支持的颇招非议的 blink 标记。
none 值会关闭原本应用到一个元素上的所有装饰。通常,无装饰的文本是默认外观,但也不总是这样。例如,链接默认地会有下划线。如果您希望去掉超链接的下划线,可以使用以下 CSS 来做到这一点:
a {text-decoration: none;}
注意:如果显式地用这样一个规则去掉链接的下划线,那么锚与正常文本之间在视觉上的唯一差别就是颜色(至少默认是这样的,不过也不能完全保证其颜色肯定有区别)。
还可以在一个规则中结合多种装饰。如果希望所有超链接既有下划线,又有上划线,则规则如下:
a:link a:visited {text-decoration: underline overline;}
不过要注意的是,如果两个不同的装饰都与同一元素匹配,胜出规则的值会完全取代另一个值。请考虑以下的规则:
h2.stricken {text-decoration: line-through;} h2 {text-decoration: underline overline;}
对于给定的规则,所有 class 为 stricken 的 h2 元素都只有一个贯穿线装饰,而没有下划线和上划线,因为 text-decoration 值会替换而不是累积起来。
空白符号处理white-space:
可能的值
值 | 描述 |
---|---|
normal | 默认。空白会被浏览器忽略。 |
pre | 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。 |
nowrap | 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。 |
pre-wrap | 保留空白符序列,但是正常地进行换行。 |
pre-line | 合并空白符序列,但是保留换行符。 |
inherit | 规定应该从父元素继承 white-space 属性的值。 |
CSS2.1 引入了值 pre-wrap 和 pre-line,这在以前版本的 CSS 中是没有的
文本方向direction:
direction 属性影响块级元素中文本的书写方向、表中列布局的方向、内容水平填充其元素框的方向、以及两端对齐元素中最后一行的为止。
可能的值
值 | 描述 |
---|---|
ltr | 默认。文本方向从左到右。 |
rtl | 文本方向从右到左。 |
inherit | 规定应该从父元素继承 direction 属性的值。 |
对于行内元素,只有当 unicode-bidi 属性设置为 embed 或 bidi-override 时才会应用 direction 属性
color 属性规定文本的颜色:
这个属性设置了一个元素的前景色(在 HTML 表现中,就是元素文本的颜色);光栅图像不受 color 影响。这个颜色还会应用到元素的所有边框,除非被 border-color 或另外某个边框颜色属性覆盖。
可能的值
值 | 描述 |
---|---|
color_name | 规定颜色值为颜色名称的颜色(比如 red)。 |
hex_number | 规定颜色值为十六进制值的颜色(比如 #ff0000)。 |
rgb_number | 规定颜色值为 rgb 代码的颜色(比如 rgb(255,0,0))。 |
inherit | 规定应该从父元素继承颜色。 |
注解:
行内元素(inline element):
html长度单位em(以下部分转):
字体单位应该用em而不用px,原因简单来说就是支持IE6下的字体缩放,在页面中按ctrl+滚轮,字体以px为单位的网站没有反应。px是绝对单位,不支持IE的缩放,em是相 对 单位。
我在调整本blog的时候,发现不仅仅是字体,将行距(line-height),和纵向高度的单位都用em。保证缩放时候的整体性。
em指字体高,任意浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font -size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为16px*62.5%=10px, 这样12px=1.2em,10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。em有如下特点:
1. em的值并不是固定的;
2. em会继承父级元素的字体大小。
字体大小的设置单位,常用的有2种:px、pt、EM。这几者有什么区别呢?
先搞清基本概念:
px就是表示pixel,像素,是屏幕上显示数据的最基本的点;
pt就是point,是印刷行业常用单位,等于1/72英寸。
这样很明白,px是一个点,它不是自然界的长度单位,谁能说出一个“点”有多长多大么?可以画的很小,也可以很大。如果点很小,那画面就清晰,我们称它为“分辨率高”,反之,就是“分辨率低”。所以,“点”的大小是会“变”的,也称为“相对长度”。
pt全称为point,但中文不叫“点”,查金山词霸可以看到,确切的说法是一个专用的印刷单位“磅”,大小为1/72英寸。所以它是一个自然界标准的长度单位,也称为“绝对长度”。
因此就有这样的说法,pixel是相对大小,而point是绝对大小。
分清“屏幕效果”和“打印效果”:
在浏览网页过程中,所有的“大”“小”概念,都是基于“屏幕”这个“界面”上。“屏幕”上的各种信息,包括文字、图片、表格等等,都会随屏幕的分辨率变化而变化,一个100px宽度大小的图片,在800×600分辨率下,要占屏幕宽度的1/8,但在1024×768下,则只占约1/10。所以如果在定义字体大小时,使用px作为单位,那一旦用户改变显示器分辨率从800到1024,用户实际看到的文字就要变“小”(自然长度单位),甚至会看不清,影响浏览。
那是不是用pt做单位就没这样的问题呢?错!问题同样出现。刚才的例子已经很清楚的说明,在不同分辨率下,无论是px还是pt,都会改变大小。以现在的电脑屏幕情况,还没有一种单位可以保证,在不同分辨率下,一个文字大小可以“固定不变”。因为这很难以实现也不是很有必要:全球电脑用户以亿来数,屏幕从14寸到40寸甚至更高都有,屏幕大小不同,分辨率也不同,要保证一个字体在所有用户面前大小一样,实在是MISSIONIMPOSSIBLE。另外,电脑有其自身的调节性。
那在页面设计中到底是用px还是pt呢?
我认为,这个并没有什么原则性差异,就看自己处于什么角度思考了。
Mac机怎么情况不清楚,在Windows里,默认的显示设置中,把文字定义为96DPI(PPI,微软都将DPI和PPI混为一体,我们也就无须较真了)。这样的定义,说明了:1px=1/96英寸。联系pt的概念,1pt=1/72英寸,可以得出,在这样的设置中,1px=0.75pt,常见的宋体9pt=12px。在显示器分辨率不变的基础上(比如现在常用的1024×768),1px大小也就固定不变,改变显示设置,调整为144DPI,可以得出,1px=0.5pt,常见的宋体9pt=18px。原先用12px来组成的一个文字,现在需要18px来组成,px多了,文字就“大”了,更易阅读了。
所以,px和pt的使用区别,只有当用户改变默认的96DPI下才会产生:使用px定义文字,无论用户怎么设置,都不会改变大小;使用pt定义文字,当用户设置超过96DPI的值,数值越大,字体就越大。
(附公式:px = pt * DPI / 72)对了,刚才还提到改变浏览器中文字大小的选项,也可以改变网页的文字大小。但在这种情况下,使用px和pt都是无效的,因为这2个都是有实际“pixel”数值的单位,比如9pt是12px,大小固定。这里要引用新的单位:em,其实就是%。因为当网页中的字体没有给出实际的px或pt定义的话,会有一个默认值:12pt即16px,对应浏览器中“字体大小”中的“中等”,以这个为标准,变大或缩小。(只适用于IE,在FF中,即便定义px或pt也都可以变大变小)
所以,从这个概念上看,em才是真正的“相对单位”(百分比嘛,当然是相对),而px和pt都是绝对单位(都有固定值)。
在网页设计中,面向用户的屏幕的基本单位是px,因此使用px作为单位是最简单也最容易理解的,而pt也不过是通过了Windows的设置乘上了一个比率转变成px再显示,算是绕了个圈子。参考大部分大型网站,包括Adobe和Microsoft,都是使用px作为单位,而且在HTML中,默认的单位就是px,是不是也暗示着px是网页设计的“内定单位”?
但在Word或Photoshop中,使用pt就相当方便。因为使用Word和Photoshop的主要目的都不是为了屏幕浏览,而是输出打印。当打印到实体时,pt作为一个自然长度单位就方便实用了:比如Word中普通的文档都用“宋体 9pt”,标题用“黑体16pt”等等,无论电脑怎么设置,打印出来永远就是这么大。又或者在Photoshop中,设置一个图片中的某个艺术效果的字体是72pt大小,然后分别将这张图片设为300DPI和72DPI,再打印出来,就可以看出,这2个字体大小完全一样,只是“清晰度”不同,300DPI更清晰。这是毫无疑问的结果。
最后整理一下所有出现过的单位:
px:pixel,像素,屏幕上显示的最小单位,用于网页设计,直观方便;
pt:point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
em:即%,在CSS中,1em=100%,是一个比率,结合CSS继承关系使用,具有灵活性。
PPI(DPI):pixel(dot)per inch,每英寸的像素(点)数,是一个率,表示了“清晰度”,“精度”
PX和PT转换的公式:
以前在文章中介绍过PX和PT的转换规则,其实很简单,pt=px乘以3/4。
比如12px×3/4=9pt大小。
PX和em转换的公式:
对于PX转em的方法也类似,就是em=16乘以px,也就是说1.5em=1.5×16=24px。
设计中常用PX/EM/PT/百分比转换表格
Pixels | EMs | Percent | Points | |
6px | 0.375em | 37.50% | 5pt | |
7px | 0.438em | 43.80% | 5.5pt | |
8px | 0.5em | 50% | 6pt | |
9px | 0.563em | 56.30% | 7pt | |
10px | 0.625em | 62.50% | 8pt | |
11px | 0.688em | 68.80% | 8pt | |
12px | 0.75em | 75% | 9pt | |
13px | 0.813em | 81.30% | 10pt | |
14px | 0.875em | 87.50% | 11pt | |
15px | 0.938em | 93.80% | 11pt | |
16px | 1em | 100% | 12pt | |
17px | 1.063em | 106.30% | 13pt | |
18px | 1.125em | 112.50% | 14pt | |
19px | 1.188em | 118.80% | 14pt | |
20px | 1.25em | 125% | 15pt | |
21px | 1.313em | 131.30% | 16pt | |
22px | 1.375em | 137.50% | 17pt | |
23px | 1.438em | 143.80% | 17pt | |
24px | 1.5em | 150% | 18pt |
字号 磅数 毫米
八号 5磅 1.84
七号 5.5磅 2.12
小六号 6.5磅 2.45
六号 7.5磅 2.81
小五号 9磅 3.15
五号 10.5磅 3.70
小四号 12磅 4.25
四号 14磅 4.93
小三号 15磅 5.23
三号 16磅 5.55
小二号 18磅 6.37
二号 22磅 7.80
小一号 24磅 8.42
一号 26磅 9.66
小初号 36磅 11.1
初号 42磅 12.7
指定字体:
在 CSS 中,有两种不同类型的字体系列名称:
- 通用字体系列 - 拥有相似外观的字体系统组合(比如 "Serif" 或 "Monospace")
- 特定字体系列 - 具体的字体系列(比如 "Times" 或 "Courier")
除了各种特定的字体系列外,CSS 定义了 5 种通用字体系列:
- Serif 字体
- Sans-serif 字体
- Monospace 字体
- Cursive 字体
- Fantasy 字体
用户代理会从 通用字体系列中选择一个字体(如 Helvetica),并将其应用到 相应的元素。
为防止本地机没有设定的特定字体, 应该在相应的特定字体后面加上通用字体, 比如:
h1 {font-family: Georgia, serif
;}
p {font-family: Times, TimesNR, 'New Century Schoolbook', Georgia, 'New York', serif;}
您也许已经注意到了,上面的例子中使用了单引号。只有当字体名中有一个或多个空格(比如 New York),或者如果字体名包括 # 或 $ 之类的符号,才需要在 font-family 声明中加引号。
单引号或双引号都可以接受。但是,如果把一个 font-family 属性放在 HTML 的 style 属性中,则需要使用该属性本身未使用的那种引号:
<p style="font-family: Times, TimesNR, 'New Century Schoolbook', Georgia, 'New York', serif;">...</p>
通用字体:
字体千差万别, 通用字体的含义是指尽量按照某种特征将特定字体进行分类:
serif: 这些字体成比例(不同的字符可能高宽不同),而且有上下短线(比如A有两个小的下划短线), Serif 字体的例子包括 Times、Georgia 和 New Century Schoolbook
sans-serif: 这些字体是成比例的,而且没有上下短线。Sans-serif 字体的例子包括 Helvetica、Geneva、Verdana、Arial 或 Univers。
monospace: Monospace 字体并不是成比例的。采用这些字体,每个字符的宽度都必须完全相同,所以小写的 i 和小写的 m 有相同的宽度。Monospace 字体的例子包括 Courier、Courier New 和 Andale Mono。
cursive:这些字体试图模仿人的手写体。通常,它们主要由曲线和 Serif 字体中没有的笔划装饰组成。例如,大写 A 再其左腿底部可能有一个小弯。 Cursive 字体的例子包括 Zapf Chancery、Author 和 Comic Sans。
fantasy: 这些字体无法用任何特征来定义。 这样的字体包括 Western、Woodblock 和 Klingon。
字体风格:
font-style:
该属性有三个值:
- normal - 文本正常显示
- italic - 文本斜体显示
- oblique - 文本倾斜显示
italic和oblique的区别不明显。看起来oblique更像是竖直字体的旋转, 而italic的斜体则不一定是有这么个旋转轴(当然只改变字体水平方向)。 大部分时候他们看来一样。
字体变形:
font-variant:
可能的值
值 | 描述 |
---|---|
normal | 默认值。浏览器会显示一个标准的字体。 |
small-caps | 浏览器会显示小型大写字母的字体。 |
inherit | 规定应该从父元素继承 font-variant 属性的值。 |
这里small-caps的大写字母会有高宽不同。
字体加粗:
font-weight:
可能的值
值 | 描述 |
---|---|
normal | 默认值。定义标准的字符。 |
bold | 定义粗体字符。 |
bolder | 定义更粗的字符。 |
lighter | 定义更细的字符。 |
| 定义由粗到细的字符。400 等同于 normal,而 700 等同于 bold。 |
inherit | 规定应该从父元素继承字体的粗细。 |
100 对应最细的字体变形,900 对应最粗的字体变形。数字 400 等价于 normal,而 700 等价于 bold。
如果将元素的加粗设置为 bolder,浏览器会设置比所继承值更粗的一个字体加粗(不是比bold更粗!)。与此相反,关键词 lighter 会导致浏览器将加粗度下移而不是上移。
字体大小:
font-size:
可用px, %, em等单位
可用font属性一次设置所有的属性值, 比如:
font:italic bold 12px/30px arial,sans-serif;
还有两个已废弃的属性:
font-size-adjust | 当首选字体不可用时,对替换字体进行智能缩放。(CSS2.1 已删除该属性。) |
font-stretch | 对字体进行水平拉伸。(CSS2.1 已删除该属性。) |
列表类型list-style-type :
可能的值
CSS2 的值:
值 | 描述 |
---|---|
none | 无标记。 |
disc | 默认。标记是实心圆。 |
circle | 标记是空心圆。 |
square | 标记是实心方块。 |
decimal | 标记是数字。 |
decimal-leading-zero | 0开头的数字标记。(01, 02, 03, 等。) |
lower-roman | 小写罗马数字(i, ii, iii, iv, v, 等。) |
upper-roman | 大写罗马数字(I, II, III, IV, V, 等。) |
lower-alpha | 小写英文字母The marker is lower-alpha (a, b, c, d, e, 等。) |
upper-alpha | 大写英文字母The marker is upper-alpha (A, B, C, D, E, 等。) |
lower-greek | 小写希腊字母(alpha, beta, gamma, 等。) |
lower-latin | 小写拉丁字母(a, b, c, d, e, 等。) |
upper-latin | 大写拉丁字母(A, B, C, D, E, 等。) |
hebrew | 传统的希伯来编号方式 |
armenian | 传统的亚美尼亚编号方式 |
georgian | 传统的乔治亚编号方式(an, ban, gan, 等。) |
cjk-ideographic | 简单的表意数字 |
hiragana | 标记是:a, i, u, e, o, ka, ki, 等。(日文片假名) |
katakana | 标记是:A, I, U, E, O, KA, KI, 等。(日文片假名) |
hiragana-iroha | 标记是:i, ro, ha, ni, ho, he, to, 等。(日文片假名) |
katakana-iroha | 标记是:I, RO, HA, NI, HO, HE, TO, 等。(日文片假名) |
CSS2.1 的值:
disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | none | inherit
任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "decimal-leading-zero"、"lower-greek"、"lower-latin"、"upper-latin"、"armenian"、"georgian" 或 "inherit"。
列表项图像list-style-image :
ul li {list-style-image : url(xxx.gif)}
列表标志位置list-style-position:
可能的值
值 | 描述 |
---|---|
inside | 列表项目标记放置在文本以内,且环绕文本根据标记对齐。 |
outside | 默认值。保持标记位于文本的左侧。列表项目标记放置在文本以外,且环绕文本不根据标记对齐。 |
inherit | 规定应该从父元素继承 list-style-position 属性的值。 |
可以一起设置列表属性值, 例如:
li {list-style : url(example.gif) square inside}
设置表格边框border:
table,th,td
{
border:1px solid blue;
}(设置双边框)
一般, 相同涵义的属性值之间需要用逗号隔开(比如设置字体库), 涵义不同的则不必(比如本例),
如要设置单边框使用border-collapse:
table
{
border-collapse:collapse;
}
需规定!DOCTYPE
可能的值
值 | 描述 |
---|---|
separate | 默认值。边框会被分开。不会忽略 border-spacing 和 empty-cells 属性。 |
collapse | 如果可能,边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性。 |
inherit | 规定应该从父元素继承 border-collapse 属性的值。 |
设置表格宽高:
table { width:100%; }
th { height:50px; }
设置表格内文字对齐:
text-align 和 vertical-align
设置表格内边距:
td { padding:15px; }
设置表格文本颜色:
th {
background-color:green;
color:white;
}
设置边框间距border-spacing
:
table { border-collapse:separate; border-spacing:10px 50px;
}
如果定义!DOCTYPE, ie8以上支持
可能的值
值 | 描述 |
---|---|
length length | 规定相邻单元的边框之间的距离。使用 px、cm 等单位。不允许使用负值。 如果定义一个 length 参数,那么定义的是水平和垂直间距。 如果定义两个 length 参数,那么第一个设置水平间距,而第二个设置垂直间距。 |
inherit | 规定应该从父元素继承 border-spacing 属性的值。 |
设置表格标题位置caption-side:
可能的值
值 | 描述 |
---|---|
top | 默认值。把表格标题定位在表格之上。 |
bottom | 把表格标题定位在表格之下。 |
inherit | 规定应该从父元素继承 caption-side 属性的值。 |
是否显示空格单元empty-cells:
<html>
<head>
<style type="text/css">
table
{
border-collapse: collapse;
empty-cells: hide;
}
table, th, td
{
border: 1px solid blue
}
</style>
</head>
<body>
<table>
<tr>
<td>Adams</td>
<td>John</td>
</tr>
<tr>
<td>Bush</td>
<td></td>
</tr>
</table>
<p><b>注释:</b>如果已规定 !DOCTYPE,那么 Internet Explorer 8 (以及更高版本)支持 empty-cells 属性。</p>
</body>
</html>
可能的值
值 | 描述 |
---|---|
hide | 默认。不在空单元格周围绘制边框。 |
show | 在空单元格周围绘制边框。 |
inherit | 规定应该从父元素继承 empty-cells 属性的值。 |
tableLayout 属性用来显示表格单元格、行、列的算法规则
可能的值
值 | 描述 |
---|---|
automatic | 默认。列宽度由单元格内容设定。 |
fixed | 列宽由表格宽度和列宽度设定。 |
inherit | 规定应该从父元素继承 table-layout 属性的值。 |
固定方式对于有些大数可能不能满格显示。
一个表格的sample(转): 可用class来做出隔行不同的效果
<html>
<head>
<style type="text/css">
#customers
{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
width:100%;
border-collapse:collapse;
}
#customers td, #customers th
{
font-size:1em;
border:1px solid #98bf21;
padding:3px 7px 2px 7px;
}
#customers th
{
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#A7C942;
color:#ffffff;
}
#customers tr.alt td
{
color:#000000;
background-color:#EAF2D3;
}
</style>
</head>
<body>
<table id="customers">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td>Apple</td>
<td>Steven Jobs</td>
<td>USA</td>
</tr>
<tr class="alt">
<td>Baidu</td>
<td>Li YanHong</td>
<td>China</td>
</tr>
<tr>
<td>Google</td>
<td>Larry Page</td>
<td>USA</td>
</tr>
<tr class="alt">
<td>Lenovo</td>
<td>Liu Chuanzhi</td>
<td>China</td>
</tr>
<tr>
<td>Microsoft</td>
<td>Bill Gates</td>
<td>USA</td>
</tr>
<tr class="alt">
<td>Nokia</td>
<td>Stephen Elop</td>
<td>Finland</td>
</tr>
</table>
</body>
</html>
轮廓颜色outline-color:
可能的值
值 | 描述 |
---|---|
color_name | 规定颜色值为颜色名称的轮廓颜色(比如 red)。 |
hex_number | 规定颜色值为十六进制值的轮廓颜色(比如 #ff0000)。 |
rgb_number | 规定颜色值为 rgb 代码的轮廓颜色(比如 rgb(255,0,0))。 |
invert | 默认。执行颜色反转(逆向的颜色)。可使轮廓在不同的背景颜色中都是可见。 |
inherit | 规定应该从父元素继承轮廓颜色的设置。 |
outline-style 属性用于设置元素的整个轮廓的样式。样式不能是 none,否则轮廓不会出现。
注释:请始终在 outline-color 属性之前声明 outline-style 属性。元素只有获得轮廓以后才能改变其轮廓的颜色。
可能的值
值 | 描述 |
---|---|
none | 默认。定义无轮廓。 |
dotted | 定义点状的轮廓。 |
dashed | 定义虚线轮廓。 |
solid | 定义实线轮廓。 |
double | 定义双线轮廓。双线的宽度等同于 outline-width 的值。 |
groove | 定义 3D 凹槽轮廓。此效果取决于 outline-color 值。 |
ridge | 定义 3D 凸槽轮廓。此效果取决于 outline-color 值。 |
inset | 定义 3D 凹边轮廓。此效果取决于 outline-color 值。 |
outset | 定义 3D 凸边轮廓。此效果取决于 outline-color 值。 |
inherit | 规定应该从父元素继承轮廓样式的设置。 |
outline-width 属性设置元素整个轮廓的宽度,只有当轮廓样式不是 none 时,这个宽度才会起作用。如果样式为 none,宽度实际上会重置为 0。不允许设置负长度值。
请始终在 outline-width 属性之前声明 outline-style 属性。元素只有获得轮廓以后才能改变其轮廓的颜色。
可能的值
值 | 描述 |
---|---|
thin | 规定细轮廓。 |
medium | 默认。规定中等的轮廓。 |
thick | 规定粗的轮廓。 |
length | 允许您规定轮廓粗细的值。 |
inherit | 规定应该从父元素继承轮廓宽度的设置。 |
outline 简写属性在一个声明中设置所有的轮廓属性。
可以按顺序设置如下属性:
- outline-color
- outline-style
- outline-width
如果不设置其中的某个值,也不会出问题,比如 outline:solid #ff0000; 也是允许的。
设置top-right-bottom-left 的内边距:
h1 {padding: 10px 0.25em 2ex 20%;}
CSS 规范指出,边框绘制在“元素的背景之上”。这很重要,因为有些边框是“间断的”(例如,点线边框或虚线框),元素的背景应当出现在边框的可见部分之间。
CSS2 指出背景只延伸到内边距,而不是边框。后来 CSS2.1 进行了更正:元素的背景是内容、内边距和边框区的背景。大多数浏览器都遵循 CSS2.1 定义,不过一些较老的浏览器可能会有不同的表现。
设置边框syle:
p.aside {border-style: solid dotted dashed double;}
如果您希望为元素框的某一个边设置边框样式,而不是设置所有 4 个边的边框样式,可以使用下面的单边边框样式属性:
border-style:可能的取值(跟outline很像哦):
可能的值
值 | 描述 |
---|---|
none | 定义无边框。 |
hidden | 与 "none" 相同。不过应用于表时除外,对于表,hidden 用于解决边框冲突。 |
dotted | 定义点状边框。在大多数浏览器中呈现为实线。 |
dashed | 定义虚线。在大多数浏览器中呈现为实线。 |
solid | 定义实线。 |
double | 定义双线。双线的宽度等于 border-width 的值。 |
groove | 定义 3D 凹槽边框。其效果取决于 border-color 的值。 |
ridge | 定义 3D 垄状边框。其效果取决于 border-color 的值。 |
inset | 定义 3D inset 边框。其效果取决于 border-color 的值。 |
outset | 定义 3D outset 边框。其效果取决于 border-color 的值。 |
inherit | 规定应该从父元素继承边框样式。 |
设置边框宽度:
h1 {border-width: 20px;}
设置边框颜色:
p { border-style: solid; border-color: blue rgb(25%,35%,45%) #909090 red; }
还有一些单边边框颜色属性。它们的原理与单边样式和宽度属性相同:
可能的值
值 | 描述 |
---|---|
color_name | 规定颜色值为颜色名称的边框颜色(比如 red)。 |
hex_number | 规定颜色值为十六进制值的边框颜色(比如 #ff0000)。 |
rgb_number | 规定颜色值为 rgb 代码的边框颜色(比如 rgb(255,0,0))。 |
transparent | 默认值。边框颜色为透明。 |
inherit | 规定应该从父元素继承边框颜色。 |
CSS 边框属性
属性 | 描述 |
---|---|
border | 简写属性,用于把针对四个边的属性设置在一个声明。 |
border-style | 用于设置元素所有边框的样式,或者单独地为各边设置边框样式。 |
border-width | 简写属性,用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度。 |
border-color | 简写属性,设置元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色。 |
border-bottom | 简写属性,用于把下边框的所有属性设置到一个声明中。 |
border-bottom-color | 设置元素的下边框的颜色。 |
border-bottom-style | 设置元素的下边框的样式。 |
border-bottom-width | 设置元素的下边框的宽度。 |
border-left | 简写属性,用于把左边框的所有属性设置到一个声明中。 |
border-left-color | 设置元素的左边框的颜色。 |
border-left-style | 设置元素的左边框的样式。 |
border-left-width | 设置元素的左边框的宽度。 |
border-right | 简写属性,用于把右边框的所有属性设置到一个声明中。 |
border-right-color | 设置元素的右边框的颜色。 |
border-right-style | 设置元素的右边框的样式。 |
border-right-width | 设置元素的右边框的宽度。 |
border-top | 简写属性,用于把上边框的所有属性设置到一个声明中。 |
border-top-color | 设置元素的上边框的颜色。 |
border-top-style | 设置元素的上边框的样式。 |
border-top-width | 设置元素的上边框的宽度。 |
外边距margin:
margin 属性接受任何长度单位,可以是像素、英寸、毫米或 em。
p {margin: 20px 30px 30px 20px;} (从top开始, 顺时针旋转)
值复制的原则:
有时,我们会输入一些重复的值:
p {margin: 0.5em 1em 0.5em 1em;}
通过值复制,您可以不必重复地键入这对数字。上面的规则与下面的规则是等价的:
p {margin: 0.5em 1em;}
这两个值可以取代前面 4 个值。这是如何做到的呢?CSS 定义了一些规则,允许为外边距指定少于 4 个值。规则如下:
- 如果缺少左外边距的值,则使用右外边距的值。
- 如果缺少下外边距的值,则使用上外边距的值。
- 如果缺少右外边距的值,则使用上外边距的值。
注意: h1 {margin: 0.25em 1em 0.5em;} /* 等价于 0.25em 1em 0.5em 1em */
CSS 外边距属性
属性 | 描述 |
---|---|
margin | 简写属性。在一个声明中设置所有外边距属性。 |
margin-bottom | 设置元素的下外边距。 |
margin-left | 设置元素的左外边距。 |
margin-right | 设置元素的右外边距。 |
margin-top | 设置元素的上外边距。 |
可能的值
值 | 描述 |
---|---|
auto | 浏览器计算外边距。 |
length | 规定以具体单位计的外边距值,比如像素、厘米等。默认值是 0px。 |
% | 规定基于父元素的宽度的百分比的外边距。 |
inherit | 规定应该从父元素继承外边距。 |
外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。
合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
这个一句话貌似简单, 但是具体到一些case, 就复杂了, 参见http://www.w3school.com.cn/css/css_margin_collapsing.asp
您可以使用 display 属性改变生成的框的类型。这意味着,通过将 display 属性设置为 block,可以让行内元素(比如 <a> 元素)表现得像块级元素一样。还可以通过把 display 设置为 none,让生成的元素根本没有框。这样的话,该框及其所有内容就不再显示,不占用文档中的空间
position的四个属性值:
- relative
- absolute
- fixed
- static
static相当于normal, 就是正常的流式输出,
relative是相对于正常流式输出位置的偏移, 比如如果sub正常的输出是10px, 20px, 那么relative会相对这个值有偏移。
absolute: 分成两种情况:1. 父级元素存在position的属性,且值为absolute或者relative时, 按parent定位(这个定位点将忽略padding,将会从padding左上角开始进行定位,不是以margin的左上端开始定位),此时sub的同级后续元素会占据sub原先的位置。 2. 不存在父级元素, 或者父级元素没有刚才的position值, sub按照body(frame)定位,
fixed相当于absolute的case 2。
float用于创建浮动效果(不是浮点数哦), 和clear(clear 属性规定元素的哪一侧不允许其他浮动元素)配合, 使用具体案例可参见http://www.w3school.com.cn/css/css_positioning_floating.asp
float可能值:
left | 元素向左浮动。 |
right | 元素向右浮动。 |
none | 默认值。元素不浮动,并会显示在其在文本中出现的位置。 |
inherit | 规定应该从父元素继承 float 属性的值。 |
clear:
可能的值
值 | 描述 |
---|---|
left | 在左侧不允许浮动元素。 |
right | 在右侧不允许浮动元素。 |
both | 在左右两侧均不允许浮动元素。 |
none | 默认值。允许浮动元素出现在两侧。 |
inherit | 规定应该从父元素继承 clear 属性的值。 |
<p class="important warning">This paragraph is a very important warning.</p>; 这里是兼有important和warning两个类,在定义css的时候, 可以像下面这样定义“important warning”属性:
.important.warning {background:silver;}
否则单独定义的important和warning将会起作用, 重定义的部分, 将会被后面的warning覆盖,
.important {color:red;}.
warning {color:green;}
green将会被显示
类选择器用.号, id选择器用#, 都可以通配
与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。
#mostImportant {color:red; background:yellow;}
这个规则会与以下各个元素匹配(这些元素不能在同一个文档中同时出现,因为它们都有相同的 ID 值):
<h1 id="mostImportant">This is important!</h1> <em id="mostImportant">This is important!</em> <ul id="mostImportant">This is important!</ul>
不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。
请注意,类选择器和 ID 选择器可能是区分大小写的。
a[href][title] {color:red;}; 为href和title属性设置红色
img[title~="Figure"] {border: 1px solid gray;}: 包含Figure属性值
后代选择器:设置元素中的元素, 形如:
h1 em {color:red;}: 设这h1中的em元素
有关后代选择器有一个易被忽视的方面,即两个元素之间的层次间隔可以是无限的。
子元素选择器:跟后代选择器的差别就是,子元素选择器隔代无效, 形如:
h1 > strong {color:red;}
下面例子中的第二个strong, 在子元素选择器的情况下, 无影响:
<h1>This is <strong>very</strong> important.</h1><h1>This is <em>really <strong>very</strong></em> important.</h1>
兄弟相邻选择器, 形如:
h1 + p {margin-top:50px;}
html > body table + ul {margin-top:20px;}
html自定义的一些类称为伪类。可以伪类定义样式:
:active | 向被激活的元素添加样式。 | 1 |
:focus | 向拥有键盘输入焦点的元素添加样式。 | 2 |
:hover | 当鼠标悬浮在元素上方时,向元素添加样式。 | 1 |
:link | 向未被访问的链接添加样式。 | 1 |
:visited | 向已被访问的链接添加样式。 | 1 |
:first-child | 向元素的第一个子元素添加样式。 | 2 |
:lang | 向带有指定 lang 属性的元素添加样式。 | 2 |
提示:在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
提示:在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。
提示:伪类名称对大小写不敏感。
伪元素:
属性 | 描述 | CSS |
---|---|---|
:first-letter | 向文本的第一个字母添加特殊样式。 | 1 |
:first-line | 向文本的首行添加特殊样式。 | 1 |
:before | 在元素之前添加内容。 | 2 |
:after | 在元素之后添加内容。 | 2 |
CSS 尺寸属性
CSS 尺寸属性允许你控制元素的高度和宽度。同样,还允许你增加行间距。
属性 | 描述 |
---|---|
height | 设置元素的高度。 |
line-height | 设置行高。 |
max-height | 设置元素的最大高度。 |
max-width | 设置元素的最大宽度。 |
min-height | 设置元素的最小高度。 |
min-width | 设置元素的最小宽度。 |
width | 设置元素的宽度。 |
CSS 分类属性 (Classification)
CSS 分类属性允许你控制如何显示元素,设置图像显示于另一元素中的何处,相对于其正常位置来定位元素,使用绝对值来定位元素,以及元素的可见度。
属性 | 描述 |
---|---|
clear | 设置一个元素的侧面是否允许其他的浮动元素。 |
cursor | 规定当指向某元素之上时显示的指针类型。 |
display | 设置是否及如何显示元素。 |
float | 定义元素在哪个方向浮动。 |
position | 把元素放置到一个静态的、相对的、绝对的、或固定的位置中。 |
visibility | 设置元素是否可见或不可见。 |
用media定义不同的媒介:
<html> <head> <style>@media screen
{ p.test {font-family:verdana,sans-serif; font-size:14px} }@media print
{ p.test {font-family:times,serif; font-size:10px} }@media screen,print
{ p.test {font-weight:bold} } </style> </head> <body>....</body> </html>
不同的媒介类型
注释:媒介类型名称对大小写不敏感。
媒介类型 | 描述 |
---|---|
all | 用于所有的媒介设备。 |
aural | 用于语音和音频合成器。 |
braille | 用于盲人用点字法触觉回馈设备。 |
embossed | 用于分页的盲人用点字法打印机。 |
handheld | 用于小的手持的设备。 |
用于打印机。 | |
projection | 用于方案展示,比如幻灯片。 |
screen | 用于电脑显示器。 |
tty | 用于使用固定密度字母栅格的媒介,比如电传打字机和终端。 |
tv | 用于电视机类型的设备。 |