CSS 教程导读

通过使用 CSS 来我们可以大大提升网页开发的工作效率!

在我们的 CSS 教程中,您会学到如何使用 CSS 同时控制多重网页的样式和布局。

各章节实例

本 CSS 教程包含了数百个 CSS 在线实例

通过本站的在线编辑器,你可以在线编辑 CSS ,并且可以在线查看修改后的效果。

CSS 实例

body
{background-color:#d0e4fe;}
h1
{color:orange;
text-align:center;}
p
{font-family:"Times New Roman";
font-size:20px;}

尝试一下 »

点击 "尝试一下" 按钮查看 CSS 是如何工作的。


CSS 实战闯关

我们为学习者准备了大量的 CSS 编程实战练习,供大家通过亲自编程实验来熟练编程操作

开始CSS编程闯关


CSS 实例

CSS 在线 150 个实例,通过本站编辑器,你可以学习在线查看修改后 CSS 的运行效果。

尝试一下!

CSS 参考手册

在 W3CSchool 中你可以找到更完整的 CSS 属性、选择器的语法,浏览器支持等资料.

CSS 属性

CSS 选择器参考手册

CSS 声音参考手册

CSS 单位

CSS 颜色参考手册

CSS 简介


你需要具备的知识

在继续学习之前,你需要对下面的知识有基本的了解:

  • HTML / XHTML

如果你希望首先学习这些项目,请在 入门教程 访问相关教程。


什么是 CSS?

  • CSS 指层叠样式表 ( Cascading Style Sheets )

  • 样式定义如何显示 HTML 元素

  • 样式通常存储在样式表

  • 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题

  • 外部样式表可以极大提高工作效率

  • 外部样式表通常存储在 CSS 文件

  • 多个样式定义可层叠为一

  • 样式对网页中元素位置的排版进行像素级精确控制


CSS 实例

一个 HTML 文档可以显示不同的样式: 查看CSS是如何工作的


CSS样式

HTML 标签原本被设计为用于定义文档内容,如下实例:

<h1>这是一个标题</h1>

<p>这是一个段落。</p>

样式表定义如何显示 HTML 元素,就像 HTML 3.2 的字体标签和颜色属性所起的作用那样。样式通常保存在外部的 .CSS 文件中。CSS 样式表极大的提高了工作效率,通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面的布局和外观。

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

当代浏览器都支持 CSS 。

多页面应用同一个样式

通常保存在外部的独立的 .CSS 文件(该文件不属于任何页面文件)可以在多个页面中使用同一个 CSS 样式表。通过在任何的页面文件中引用 .CSS 文件,你可以设置具有一致风格的多个页面。

样式层叠

样式层叠就是对一个元素多次设置同一个样式,这将使用最后一次设置的属性值。

样式层叠次序

当同一个 HTML 元素定义了多个样式时,应该使用哪个样式?

一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 4 拥有最高的优先权。

  1. 浏览器缺省设置
  2. 外部样式表
  3. 内部样式表(位于 <head> 标签内部)
  4. 内联样式(在 HTML 元素内部)

因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明: 标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。


CSS 语法


实例


CSS 实例

CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明:

选择器通常是您需要改变样式的 HTML 元素。

每条声明由一个属性和一个值组成。

属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。


CSS 实例

CSS 声明总是以分号 ( ; ) 结束,声明组以大括号 ({ }) 括起来:

p {color:red;text-align:center;}

为了让 CSS 可读性更强,你可以每行只描述一个属性:

实例

p
{color:red;
text-align:center;}

尝试一下 »

CSS 颜色值的写法

在描述颜色的时候,除了使用英文单词 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 单位。

在本站的编程实战部分中,介绍了CSS使用十六进制代码设置颜色,以及CSS使用rgb属性设置颜色,你可以参考该部分的内容进行更多了解。


CSS 注释

注释是用来解释你的代码,并且可以随意编辑它,浏览器会忽略它。

CSS注释以 "/*" 开始, 以 "*/" 结束, 实例如下:

/*这是个注释*/        

p        

{       

text-align:center;       

/*这是另一个注释*/     

color:black;     

font-family:arial;       

}


CSS IdClass


id 和 class 选择器

如果你要在 HTML 元素中设置 CSS 样式,你需要在元素中设置 "id" 和 "class" 选择器。


id 选择器

id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。

HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以 # 来定义。

以下的样式规则应用于元素属性 id = "para1":

实例

#para1
{ text-align:center;
color:red; }

尝试一下 »

Remark ID 属性不要以数字开头,数字开头的 ID 在 Mozilla/Firefox 浏览器中不起作用。

Remark ID 属性只能在每个 HTML 文档中出现一次。具体的解释,请参阅 XHTML:网站重构


class 类选择器

class 选择器用于描述一组元素的样式,class 选择器有别于 id 选择器,class 可以在多个元素中使用。

class 选择器在 HTML 中以 class 属性表示, 在 CSS 中,类选择器以一个点"."号显示:

在以下的例子中,所有拥有 center 类的 HTML 元素均为居中。

实例

.center {text-align:center;}

尝试一下 »

你也可以指定特定的 HTML 元素使用 class。

在以下实例中, 所有的 p 元素使用 class="center" 让该元素的文本居中:

实例

p.center {text-align:center;}

尝试一下 »

Remark 类名的第一个字符不能使用数字!它无法在 Mozilla 或 Firefox 中起作用。


标签选择器

除了提到的 id 和 class 选择器外,第三种选择器为标签选择器,即以 HTML 标签作为 CSS 修饰所用的选择器。

实例

<style>

h3{color:red;}

</style>

<h3>W3cschool教程</h3>


尝试一下 »

内联选择器

第四种内联选择器即直接在标签内部写 CSS 代码。

实例

<h3 style="color:red;">W3cschool教程</h3>


尝试一下 »

这四种 CS 选择器有修饰上的优先级,即:

内联选择器 > id选择器 > 类选择器 > 标签选择器

扩展阅读

在 HTML 标签中设置 CSS 样式时,有多种 CSS 选择器可供选择,你可以参考本站的CSS3选择器归类整理(包含了CSS3中新增的选择器)来了解更多有关CSS选择器的内容。


CSS 创建


当读到一个样式表时,浏览器会根据它来格式化 HTML 文档。


如何插入样式表

插入样式表的方法有三种:

  • 外部样式表
  • 内部样式表
  • 内联样式

外部样式表

当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用 标签链接到样式表。 标签在(文档的)头部

<head><link rel="stylesheet" type="text/css" href="mystyle.css"></head>

浏览器会从文件 mystyle.css 中读到样式声明,并根据它来格式文档。

外部样式表可以在任何文本编辑器中进行编辑。文件不能包含任何的 html 标签。样式表应该以 .CSS 扩展名进行保存。下面是一个样式表文件的例子:

hr {color:sienna;}            

p {margin-left:20px;}            

body {background-image:url(/images/back40.gif);}

Remark 不要在属性值与单位之间留有空格。假如你使用 "margin-left: 20 px" 而不是 "margin-left: 20px" ,它仅在 IE 6 中有效,但是在 Mozilla/Firefox 或 Netscape 中却无法正常工作。


内部样式表

当单个文档需要特殊的样式时,就应该使用内部样式表。你可以使用 <style> 标签在文档头部定义内部样式表,就像这样:

<head>

<style>

hr {color:sienna;}

p {margin-left:20px;}

body {background-image:url("images/back40.gif");}

</style>

</head>


内联样式

由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。

要使用内联样式,你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。本例展示如何改变段落的颜色和左外边距:

实例

<p style="color:sienna;margin-left:20px">这是一个段落。</p>

尝试一下 »

多重样式

如果某些属性在不同的样式表中被同样的选择器定义,那么属性值将从更具体的样式表中被继承过来。

例如,外部样式表拥有针对 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)会被内部样式表中的规则取代。


多重样式将层叠为一个

样式表允许以多种方式规定样式信息。样式可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在一个外部的 CSS 文件中。甚至可以在同一个 HTML 文档内部引用多个外部样式表。

层叠次序

当同一个 HTML 元素被不止一个样式定义时,会使用哪个样式呢?

一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 4 拥有最高的优先权。

  1. 浏览器缺省设置
  2. 外部样式表
  3. 内部样式表(位于 head 标签内部)
  4. 内联样式(在 HTML 元素内部)

因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明: 标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。

Remark 提示:如果你使用了外部文件的样式在内部样式中也定义了该样式,则内部样式表会取代外部文件的样式。

多重样式优先级深入理解

优先级用于浏览器是通过判断哪些属性值与元素最相关以决定并应用到该元素上的。

优先级仅由选择器组成的匹配规则决定的。

优先级就是分配给指定的CSS声明的一个权重,它由匹配的选择器中的每一种选择器类型的数值决定。

多重样式优先级顺序

下列是一份优先级逐级增加的选择器列表,其中数字 7 拥有最高的优先权:

  1. 通用选择器(*)
  2. 元素(类型)选择器
  3. 类选择器
  4. 属性选择器
  5. 伪类
  6. ID 选择器
  7. 内联样式

!important 规则例外

当 !important 规则被应用在一个样式声明中时,该样式声明会覆盖 CSS 中任何其他的声明,无论它处在声明列表中的哪里。尽管如此,!important 规则还是与优先级毫无关系。使用 !important 不是一个好习惯,因为它改变了你样式表本来的级联规则,从而使其难以调试。

一些经验法则:

  • Always 要优化考虑使用样式规则的优先级来解决问题而不是 !important
  • Only 只在需要覆盖全站或外部 css(例如引用的 ExtJs 或者 YUI )的特定页面中使用 !important
  • Never 永远不要在全站范围的 CSS 上使用 !important
  • Never 永远不要在你的插件中使用 !important

权重计算:

201712181559548677

以下是对于上图的解释:

  • 内联样式表的权值最高 1000
  • ID 选择器的权值为 100
  • Class 类选择器的权值为 10
  • HTML 标签选择器的权值为 1

利用选择器的权值进行计算比较,em 显示蓝色,我们提供了详细的代码参考:

实例

<html>  

<head>   

<style type="text/css">   

#redP p {   

/* 权值 = 100+1=101 */    

color:#F00;  /* 红色 */   

}    

#redP .red em {    

/* 权值 = 100+10+1=111 */    

color:#00F; /* 蓝色 */   

}   

#redP p span em {   

/* 权值 = 100+1+1+1=103 */

color:#FF0;/*黄色*/   

}    

</style>    

</head>   

<body>  

<div id="redP">

<p class="red">red    

<span><em>em red</em></span>   

</p>  

<p>red</p>

</div>

</body>    

</html>


尝试一下 »

CSS 优先级法则:

  •  A 选择器都有一个权值,权值越大越优先;
  •  B 当权值相等时,后出现的样式表设置要优于先出现的样式表设置;
  •  C 创作者的规则高于浏览者:即网页编写者设置的 CSS 样式的优先权高于浏览器所设置的样式;
  •  D 继承的 CSS 样式不如后来指定的 CSS 样式;
  •  E 在同一组属性设置中标有 "!important" 规则的优先级最大;


CSS 背景


CSS 背景属性用于定义 HTML 元素的背景。

CSS 属性定义背景效果:

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position

背景颜色

background-color 属性定义了元素的背景颜色。

页面的背景颜色使用在 body 的选择器中:

实例

body {background-color:#b0c4de;}

尝试一下 »

CSS 中,颜色值通常以以下方式定义:

  • 十六进制 - 如:"#ff0000"
  • RGB - 如:"rgb(255,0,0)"
  • 颜色名称 - 如:"red"

以下实例中, h1, p, 和 div元素拥有不同的背景颜色:

实例

h1 {background-color:#6495ed;}
p {background-color:#e0ffff;}
div {background-color:#b0c4de;}

尝试一下 »

提示:你可以为所有元素设置背景色,包括 body 一直到 ema 等行内元素。

提示:background-color 不能继承,其默认值是 transparent。如果一个元素没有指定背景色,那么背景就是透明的,这样其父元素的背景才可见。


背景图像

background-image 属性描述了元素的背景图像.

默认情况下,背景图像进行平铺重复显示,以覆盖整个元素实体。

页面背景图片设置实例:

实例

body {background-image:url('paper.gif');}

尝试一下 »

下面是一个例子是一个糟糕的文字和背景图像组合。文本可读性差:

实例

body {background-image:url('bgdesert.jpg');}

尝试一下 »


背景图像 - 水平或垂直平铺

如果需要在 HTML 页面上对背景图像进行平铺,可以使用 background-repeat 属性。

默认情况下 background-image 属性会在页面的水平或者垂直方向平铺。

一些图像如果在水平方向与垂直方向平铺,这样看起来很不协调,如下所示: 

实例

body
{background-image:url('gradient2.png'); }

尝试一下 »

如果图像只在水平方向平铺 (repeat-x) , 页面背景会更好些:

实例

body
{background-image:url('gradient2.png');
background-repeat:repeat-x;}

尝试一下 »


背景图像- 设置定位与不平铺

Remark 让背景图像不影响文本的排版

如果你不想让图像平铺,你可以使用 background-repeat 属性:

实例

body
{background-image:url('img_tree.png');
background-repeat:no-repeat;}

尝试一下 »

以上实例中,背景图像与文本显示在同一个位置,为了让页面排版更加合理,不影响文本的阅读,我们可以改变图像的位置。

可以利用 background-position 属性改变图像在背景中的位置:

实例

body
{background-image:url('img_tree.png');
background-repeat:no-repeat;
background-position:right top;}

尝试一下 »

提示:background-position 属性提供值有很多方法。首先,可以使用一些关键字:topbottomleftrightcenter;其次,可以使用长度值,如 100px 或 5cm;最后也可以使用百分数值。不同类型的值对于背景图像的放置稍有差异。

关键字

图像放置关键字最容易理解的作用就像其名字的意义。例如,top left 使图像放置在元素内边距区的左上角。

只要保证不超过两个关键字:一个对应水平方向,另一个对应垂直方向,那么你可以设置位置关键字以任何顺序出现。

如果只有一个关键字,则会默认另一个关键字为 center

所以,如果希望每个段落的中部上方出现一个图像,只需声明如下:

p        

{background-image:url('img_tree.png');        

background-repeat:no-repeat;            

background-position:top;}

下面是等价的位置关键字:

单一关键字等价的关键字
centercenter center
toptop center 或 center top
bottombottom center 或 center bottom
rightright center 或 center right
leftleft center 或 center left

百分数值

百分数值的表现方式更为复杂。假设你希望用百分数值将图像在其元素中居中,你可以按照下面的代码进行设置:

body

{background-image:url('img_tree.png');  

background-repeat:no-repeat;    

background-position:50% 50%;}

这会导致图像适当放置,其中心与其元素的中心对齐。

因此,如果你想把一个图像放在水平方向 2/3、垂直方向 1/3 处,可以这样声明:

body      

{background-image:url('img_tree.png');   

background-repeat:no-repeat;   

background-position:66% 33%;}

长度值

长度值解释的是元素内边距区左上角的偏移,偏移点是图像的左上角。

比如,如果设置值为 50px 100px,图像的左上角将在元素内边距区左上角向右 50 像素、向下 100 像素的位置上:

body

{background-image:url('img_tree.png');

background-repeat:no-repeat;

background-position:50px 100px;}

注意,这一点与百分数值不同,因为偏移只是从一个左上角到另一个左上角。也就是说,图像的左上角与 background-position 声明中的指定的点对齐。


背景- 简写属性

在以上实例中我们可以看到页面的背景颜色通过了很多的属性来控制。

为了简化这些属性的代码,我们可以将这些属性合并在同一个属性中.

背景颜色的简写属性为 "background":

实例

body {background:#ffffff url('img_tree.png') no-repeat right top;}

尝试一下 »

当使用简写属性时,属性值的顺序为::

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position

以上属性无需全部使用,你可以按照页面的实际需要使用.

这个实例使用了先前介绍的 CSS,你可以查看相应实例: CSS 实例


Examples

更多实例

如何设置固定的背景图像
本例演示如何设置固定的背景图像。图像不会随着页面的其他部分滚动。


CSS 背景属性

Property描述
background简写属性,作用是将背景属性设置在一个声明中。
background-attachment背景图像是否固定或者随着页面的其余部分滚动。
background-color设置元素的背景颜色。
background-image把图像设置为背景。
background-position设置背景图像的起始位置。
background-repeat设置背景图像是否及如何重复。


CSS Text 文本格式

通过 CSS 的 Text 属性,你可以改变页面中文本的颜色、字符间距、对齐文本、装饰文本、对文本进行缩进等等,你可以观察下述的一段简单的应用了 CSS 文本格式的段落。

文本格式

       此文本使用一些文本格式属性设置样式。标题使用文本对齐、文本转换和颜色属性。段落缩进、对齐,并指定字符之间的间距。下划线将从“尝试一下”链接中删除。

Text Color

颜色属性被用来设置文字的颜色。

颜色是通过CSS最经常的指定:

  • 十六进制值 - 如"#FF0000"

  • 一个RGB值 - "RGB(255,0,0)"

  • 颜色的名称 - 如"红"

参阅 CSS 颜色值 查看完整的颜色值。

一个网页的背景颜色是指在主体内的选择:

实例

body {color:blue;}
h1 {color:#00ff00;}
h2 {color:rgb(255,0,0);}

尝试一下 »

Remark 对于 W3C 标准的 CSS:如果你定义了颜色属性,你还必须定义背景色属性。


文本的对齐方式

文本排列属性是用来设置文本的水平对齐方式。

文本可居中或对齐到左或右,两端对齐.

text-align 设置为justify,每一行被展开为宽度相等,左,右外边距是对齐(如杂志和报纸)。

实例

h1 {text-align:center;}
p.date {text-align:right;}
p.main {text-align:justify;}

尝试一下 »

提示:如果想把一个行内元素的第一行“缩进”,可以用左内边距或外边距创造这种效果。


文本修饰

text-decoration属性用来设置或删除文本的装饰。

从设计的角度看 text-decoration 属性主要是用来删除链接的下划线:

实例

a {text-decoration:none;}

尝试一下 »

也可以这样装饰文字:

实例

h1 {text-decoration:overline;}
h2 {text-decoration:line-through;}
h3 {text-decoration:underline;}

尝试一下 »

Remark我们不建议强调指出不是链接的文本,因为这常常混淆用户。


文本转换

文本转换属性是用来指定在一个文本中的大写和小写字母。

可用于所有字句变成大写或小写字母,或每个单词的首字母大写。

实例

p.uppercase {text-transform:uppercase;}
p.lowercase {text-transform:lowercase;}
p.capitalize {text-transform:capitalize;}

尝试一下 »

文本缩进

文本缩进属性是用来指定文本的第一行的缩进。

CSS 提供了 text-indent 属性,该属性可以方便地实现文本缩进。

通过使用 text-indent 属性,所有元素的第一行都可以缩进一个给定的长度。

实例

p {text-indent:50px;}

尝试一下 »

文本间隔

word-spacing 属性可以改变字(单词)之间的标准间隔。其默认值 normal 与设置值为 0 是一样的。

实例

指定段字之间的空间,应该是30像素:

p
{
word-spacing:30px;
}

尝试一下 »

Examples

更多实例

指定字符之间的空间
这个例子演示了如何增加或减少字符之间的空间。

指定行与行之间的空间
这个例子演示了如何指定在一个段落中行之间的空间

设置元素的文本方向
这个例子演示了如何改变元素的文本方向。

增加单词之间的空白空间
这个例子演示了如何增加一个段落中的单词之间的空白空间。

在元素内禁用文字环绕
这个例子演示了如何禁用一个元素内的文字环绕。

垂直对齐图像
这个例子演示了如何设置文本的垂直对齐图像。

添加文本阴影
这个例子演示了如何设置文本阴影。


所有CSS文本属性。

属性描述
color设置文本颜色
direction设置文本方向。
letter-spacing设置字符间距
line-height设置行高
text-align对齐元素中的文本
text-decoration向文本添加修饰
text-indent缩进元素中文本的首行
text-shadow设置文本阴影
text-transform控制元素中的字母
unicode-bidi设置或返回文本是否被重写 
vertical-align设置元素的垂直对齐
white-space设置元素中空白的处理方式
word-spacing设置字间距


CSS 字体


CSS字体属性定义字体,加粗,大小,文字样式。


serif 和 sans-serif 字体之间的区别

Serif vs. Sans-serif

Remark在计算机屏幕上,sans-serif 字体被认为是比 serif 字体容易阅读


CSS字型

在CSS中,有两种类型的字体系列名称:

  • 通用字体系列 - 拥有相似外观的字体系统组合(如 "Serif" 或 "Monospace")

  • 特定字体系列 - 一个特定的字体系列(如 "Times" 或 "Courier")

Generic family字体系列说明
SerifTimes New Roman
Georgia
Serif字体中字符在行的末端拥有额外的装饰
Sans-serifArial
Verdana
"Sans"是指无 - 这些字体在末端没有额外的装饰
MonospaceCourier New
Lucida Console
所有的等宽字符具有相同的宽度


Remark 除了各种特定的字体系列外,CSS 定义了 5 种通用字体系列:

  • Serif 字体
  • Sans-serif 字体
  • Monospace 字体
  • Cursive 字体
  • Fantasy 字体

字体系列

font-family 属性设置文本的字体系列。

font-family 属性应该设置几个字体名称作为一种"后备"机制,如果浏览器不支持第一种字体,他将尝试下一种字体。

注意: 如果字体系列的名称超过一个字,它必须用引号,如 Font Family:"宋体"。

多个字体系列是用一个逗号分隔指明:

实例

p{font-family:"Times New Roman", Times, serif;}

尝试一下 »

对于较常用的字体组合,看看我们的 Web安全字体组合


字体样式

主要是用于指定斜体文字的字体样式属性。

这个属性有三个值:

  • 正常 - 正常显示文本

  • 斜体 - 以斜体字显示的文字

  • 倾斜的文字 - 文字向一边倾斜(和斜体非常类似,但不太支持)

实例

p.normal {font-style:normal;}
p.italic {font-style:italic;}
p.oblique {font-style:oblique;}

尝试一下 »

italic 和 oblique 的区别

  • 斜体(italic)是一种简单的字体风格,对每个字母的结构有一些小改动,来反映变化的外观。
  • 倾斜(oblique)文本是正常竖直文本的一个倾斜版本。

通常情况下,italic 和 oblique 文本在 web 浏览器中看上去完全一样。


字体大小

font-size 属性设置文本的大小。

能否管理文字的大小,在网页设计中是非常重要的。但是,你不能通过调整字体大小使段落看上去像标题,或者使标题看上去像段落。

请务必使用正确的HTML标签,就<h1> - <h6>表示标题和<p>表示段落:

字体大小的值可以是绝对或相对的大小。

绝对大小:

  • 设置一个指定大小的文本

  • 不允许用户在所有浏览器中改变文本大小

  • 确定了输出的物理尺寸时绝对大小很有用

相对大小:

  • 相对于周围的元素来设置大小

  • 允许用户在浏览器中改变文字大小

Remark如果你不指定一个字体的大小,默认大小和普通文本段落一样,是16像素(16px=1em)。


设置字体大小像素

设置文字的大小与像素,让您完全控制文字大小:

实例

h1 {font-size:40px;}
h2 {font-size:30px;}
p {font-size:14px;}

尝试一下 »

上面的例子可以在 Internet Explorer 9, Firefox, Chrome, Opera, 和 Safari 调整文本大小。

注意:以上实例不能在IE9以前的版本运行。

虽然可以通过浏览器的缩放工具调整文本大小,但是,这种调整是整个页面,而不仅仅是文本


用em来设置字体大小

为了避免 Internet Explorer 中无法调整文本的问题,许多开发者使用 em 单位代替像素。

em 的尺寸单位由W3C建议。

1em 和当前字体大小相等。在浏览器中默认的文字大小是16px。

因此,1em的默认大小是16px。可以通过下面这个公式将像素转换为em:px/16=em

(注:16 等于父元素的默认字体大小,假设父元素的 font-size 为 30px,那么公式需改为:pixels/30=em

实例

h1 {font-size:2.5em;} /* 40px/16=2.5em */
h2 {font-size:1.875em;} /* 30px/16=1.875em */
p {font-size:0.875em;} /* 14px/16=0.875em */

尝试一下 »

在上面的例子,em 的文字大小是与前面的例子中像素一样。不过,如果使用 em 单位,则可以在所有浏览器中调整文本大小。

不幸的是,仍然是 IE 浏览器的问题。调整文本的大小时,会比正常的尺寸更大或更小。


使用百分比和EM组合

在所有浏览器的解决方案中,设置 <body>元素的默认字体大小的是百分比:

实例

body {font-size:100%;}
h1 {font-size:2.5em;}
h2 {font-size:1.875em;}
p {font-size:0.875em;}

尝试一下 »

我们的代码非常有效。在所有浏览器中,可以显示相同的文本大小,并允许所有浏览器缩放文本的大小。


Examples

更多实例

设置字体加粗
这个例子演示了如何设置字体的加粗。

可以设置字体的转变
这个例子演示了如何设置字体的转变。

在一个声明中的所有字体属性
本例演示如何使用简写属性将字体属性设置在一个声明之内。

设置字体风格

本例演示如何设置字体风格。


在线生成字体CSS样式工具

使用在线生成字体CSS样式工具可以快速生成 CSS 字体样式


 


所有CSS字体属性

Property描述
font在一个声明中设置所有的字体属性
font-family指定文本的字体系列
font-size指定文本的字体大小
font-style指定文本的字体样式
font-variant以小型大写字体或者正常字体显示文本。
font-weight指定字体的粗细。


CSS 链接


不同的链接可以有不同的样式。


链接样式

链接的样式,可以用任何 CSS 属性(如颜色,字体,背景等)。

特别的链接,可以有不同的样式,这取决于他们是什么状态。

这四个链接状态是:

  • a:link - 正常,未访问过的链接
  • a:visited - 用户已访问过的链接
  • a:hover - 当用户鼠标放在链接上时
  • a:active - 链接被点击的那一刻

实例

a:link {color:#FF0000;}      /* 未访问链接*/
a:visited {color:#00FF00;}  /* visited link */
a:hover {color:#FF00FF;}  /* mouse over link */
a:active {color:#0000FF;}  /* selected link */

尝试一下 »

当设置为若干链路状态的样式,也有一些顺序规则:

  • a:hover 必须跟在 a:linka:visited 后面
  • a:active 必须跟在 a:hover 后面

提示:在本站的 CSS 参考手册中,我们对 CSS:link 选择器 做了详细的介绍。


常见的链接样式

根据上述链接的颜色变化的例子,看它是在什么状态。

让我们通过一些其他常见的方式转到链接样式:

文本修饰

text-decoration 属性主要用于删除链接中的下划线:

实例

a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:hover {text-decoration:underline;}
a:active {text-decoration:underline;}

尝试一下 »

背景颜色

背景颜色属性指定链接背景色:

实例

a:link {background-color:#B2FF99;}
a:visited {background-color:#FFFF85;}
a:hover {background-color:#FF704D;}
a:active {background-color:#FF704D;}

尝试一下 »

鼠标形状

常用鼠标形状如下所示:

属性值描述
default默认光标,箭头
pointer超链接的指针,手型
wait指示程序正在忙
help指示可用的帮忙
text指示文本
crosshair鼠标呈现十字状


cursor 属性实例

实例

a:hover {

    color: green;

    cursor: crosshair;

}


尝试一下 »


Examples

More Examples

添加不同样式的超链接
这个例子演示了如何为超链接添加其他样式。

高级 - 创建链接框
这个例子演示了一个更高级的例子,我们结合若干CSS属性显示为方框。


CSS 列表


CSS 列表属性作用如下:

  • 设置不同的列表项标记为有序列表
  • 设置不同的列表项标记为无序列表
  • 设置列表项标记为图像

列表

在 HTML 中,有两种类型的 HTML列表

  • 无序列表 - 列表项的标记使用特殊图形(如小黑点、小方框等)
  • 有序列表 - 列表项的标记使用数字或字母

使用CSS,可以列出进一步的样式,并可用图像作列表项标记。


不同的列表项标记

list-style-type 属性指定列表项标记的类型是:

实例

ul.a {list-style-type: circle;}
ul.b {list-style-type: square;}

ol.c {list-style-type: upper-roman;}
ol.d {list-style-type: lower-alpha;}

尝试一下 »

一些值是无序列表,以及有些是有序列表。

下列是对 list-style-type 属性的常见属性值的描述:

  • none:不使用项目符号
  • disc:实心圆
  • circle:空心圆
  • square:实心方块
  • decimal:阿拉伯数字 
  • lower-alpha:小写英文字母 
  • upper-alpha:大写英文字母 
  • lower-roman:小写罗马数字 
  • upper-roman:大写罗马数字

作为列表项标记的图像

要指定列表项标记的图像,使用列表样式图像属性:

实例

ul
{
list-style-image: url('sqpurple.gif');
}

尝试一下 »

上面的例子在各大主流浏览器中的显示有所差异,IE 和 Opera 显示图像标记比火狐( Firefox ),Chrome 和 Safari 更高一点点。


提示:
  • 利用 list-style-position 可以确定标志出现在列表项内容之外还是内容内部。
  • 如果你想在所有的浏览器放置同样的形象标志,就应使用浏览器兼容性解决方案,方法如下。

浏览器兼容性解决方案

同样在所有的浏览器,下面的例子会显示的图像标记:

实例

ul {
  list-style-type: none;
  padding: 0px;
  margin: 0px;
}
ul li {
  background-image: url(sqpurple.gif);
  background-repeat: no-repeat;
  background-position: 0px 5px;
  padding-left: 14px;
}

尝试一下 »

例子解释:

  • ul :
    • 设置列表样式类型为没有列表项标记
    • 设置填充和边距 0px(浏览器兼容性)
  • ul 中所有 li :
    • 设置图像的 URL ,并设置它只显示一次(无重复)
    • 您需要的定位图像位置(左 0px 和上下 5px )
    • padding-left 属性把文本置于列表中

列表 -简写属性

在单个属性中可以指定所有的列表属性。这就是所谓的简写属性。

为列表使用简写属性,列表样式属性设置如下:

实例

ul {
  list-style: square url("sqpurple.gif");
}

尝试一下 »

如果使用缩写属性值的顺序是:

  1. list-style-type
  2. list-style-position (有关说明,请参见下面的CSS属性表)
  3. list-style-image

在简写属性时,如果上述值丢失一个,其余仍在指定的顺序,就没关系。


Examples

更多实例

所有不同的列表项标记
这个例子演示了所有不同的 CSS 列表项标记。


所有的CSS列表属性

属性描述
list-style简写属性。用于把所有用于列表的属性设置于一个声明中
list-style-image将图象设置为列表项标志。
list-style-position设置列表中列表项标志的位置。
list-style-type设置列表项标志的类型。


CSS 表格


使用 CSS 可以大大提高 HTML 表格的外观。

2020年11月2019年11月程序语言等级更改
12C16.21%+0.17%
23Python12.12%+2.27%
31Java11.68%-4.57%
45C++7.60%+1.99%
55C#4.67%+0.36%
66Visual Basic4.01%-0.22%
77JavaScript2.03%+0.10%
88PHP1.79%0.07%
916R1.64%+0.66%
109SQL1.54%+0.15%

实例

#customers tr:nth-child(even){background-color: #f2f2f2;}  

#customers tr:hover {background-color: #ddd;}


尝试一下 »

表格边框

指定 CSS 表格边框,使用 border 属性。

下面的例子指定了一个表格的 thtd 元素的黑色边框:

实例

table, th, td
{ border: 1px solid black; }

尝试一下 »

请注意,在上面的例子中的表格有双边框。这是因为表和 th / td 元素有独立的边界。

为了显示一个表的单个边框,使用 border-collapse属性。

折叠边框

border-collapse 属性设置表格的边框是否被折叠成一个单一的边框或隔开:

实例

table
{ border-collapse:collapse; }
table,th, td { border: 1px solid black; }

尝试一下 »


表格宽度和高度

width height 属性定义表格的宽度和高度。

下面的例子是设置 100% 的宽度,50 像素的 th 元素的高度的表格:

实例

table
{ width:100%; }
th { height:50px; }

尝试一下 »


表格文字对齐

表格中的文本对齐和垂直对齐属性。

text-align 属性设置水平对齐方式,像左,右,或中心:

实例

td
{ text-align:right; }

尝试一下 »

垂直对齐属性设置垂直对齐,比如顶部,底部或中间:

实例

td
{ height:50px; vertical-align:bottom; }

尝试一下 »


表格填充

如果在表的内容中控制空格之间的边框,应使用 td 和 th 元素的填充属性:

实例

td
{ padding:15px; }

尝试一下 »


表格颜色

下面的例子指定边框的颜色,和 th 元素的文本和背景颜色:

实例

table, td, th
{ border:1px solid green; }
th
{ background-color:green; color:white; }

尝试一下 »


Examples

更多实例

制作一个个性表格
这个例子演示了如何创建一个个性的表格。

设置表格标题的位置
这个例子演示了如何定位表格标题。

指定表格的宽度和高度

这个例子演示了如何指定表格的高度与宽度。


CSS Box Model (盒子模型)


所有 HTML 元素可以看作盒子,在 CSS 中,"box model "这一术语是用来设计和布局时使用。

CSS 盒模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边距,边框,填充,和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型 (Box Model):


CSS box-model

不同部分的说明:

  • Margin(外边距) - 清除边框区域。Margin 没有背景颜色,它是完全透明
  • Border(边框) - 边框周围的填充和内容。边框是受到盒子的背景颜色影响
  • Padding(内边距) - 清除内容周围的区域。会受到框中填充的背景颜色影响
  • Content(内容) - 盒子的内容,显示文本和图像

为了在所有浏览器中的元素的宽度和高度设置正确的话,你需要知道的盒模型是如何工作的。

提示:在盒模型中,外边距可以是负值,而且在很多情况下都要使用负值的外边距。

提示:参考 CSS盒子模型的内部结构 可以了解更多的信息。


元素的宽度和高度

Remark重要: 当您指定一个 CSS 元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。.

下面的例子中的元素的总宽度为 300px:

width:250px;        

padding:10px;        

border:5px solid gray;        

margin:10px;

让我们自己算算:
250px (宽)
+ 20px (左 + 右填充)
+ 10px (左 + 右边框)
+ 20px (左 + 右边距)
= 300px

试想一下,你只有 250 像素的空间。让我们设置总宽度为 250 像素的元素:

实例

width:220px;
padding:10px;
border:5px solid gray;
margin:0px;

尝试一下 »

最终元素的总宽度计算公式是这样的:

总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距

元素的总高度最终计算公式是这样的:

总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距


浏览器的兼容性问题

一旦为页面设置了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 paddingborder 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。

虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。

IE8 及更早IE版本不支持 填充的宽度和边框的宽度属性设。

解决 IE8 及更早版本不兼容问题可以在 HTML 页面声明 <!DOCTYPE html>即可。


相关阅读

CSS 拾遗系列:CSS盒模型科普


CSS 边框

CSS 边框 (border) 可以是围绕元素内容和内边距的一条或多条线,对于这些线条,您可以自定义它们的样式、宽度以及颜色。使用 CSS 边框属性,我们可以创建出比 HTML 中更加优秀的效果。

CSS 边框属性

CSS边框属性允许你指定一个元素边框的样式和颜色。

边框样式

边框样式属性指定要显示什么样的边界。

Remark border-style属性用来定义边框的样式

border-style 值:

none: 默认无边框

dotted: 定义一个点线框

dashed: 定义一个虚线框

solid: 定义实线边界

double: 定义两个边界。 两个边界的宽度和border-width的值相同

groove: 定义3D沟槽边界。效果取决于边界的颜色值

ridge: 定义3D脊边界。效果取决于边界的颜色值

inset:定义一个3D的嵌入边框。效果取决于边界的颜色值

outset: 定义一个3D突出边框。 效果取决于边界的颜色值

尝试一下: 设置边框样式


边框宽度

您可以通过 border-width 属性为边框指定宽度。

为边框指定宽度有两种方法:可以指定长度值,比如 2px 或 0.1em;或者使用 3 个关键字之一,它们分别是 thin 、medium(默认值) 和 thick。

注意:CSS 没有定义 3 个关键字的具体宽度,所以一个用户代理可能把 thin 、medium 和 thick 分别设置为等于 5px、3px 和 2px,而另一个用户代理则分别设置为 3px、2px 和 1px。

实例

p.one
{
border-style:solid;
border-width:5px;
}
p.two
{
border-style:solid;
border-width:medium;
}

尝试一下 »


边框颜色

border-color 属性用于设置边框的颜色,它一次可以接受最多 4 个颜色值。可以设置的颜色:

  • name - 指定颜色的名称,如 "red"
  • RGB - 指定 RGB 值, 如 "rgb(255,0,0)"
  • Hex - 指定16进制值, 如 "#ff0000"

您还可以设置边框的颜色为"transparent"。

注意: border-color 单独使用是不起作用的,必须得先使用 border-style 来设置边框样式。

实例

p.one
{
border-style:solid;
border-color:red;
}
p.two
{
border-style:solid;
border-color:#98bf21;
}

尝试一下 »


边框-单独设置各边

在 CSS 中,可以指定不同的侧面不同的边框:

实例

p
{
border-top-style:dotted;
border-right-style:solid;
border-bottom-style:dotted;
border-left-style:solid;
}

尝试一下 »

上面的例子也可以设置一个单一属性:

实例

border-style:dotted solid;

尝试一下 »

border-style 属性可以有 1-4 个值:

  • border-style:dotted solid double dashed;
    • 上边框是 dotted
    • 右边框是 solid
    • 底边框是 double
    • 左边框是 dashed

  • border-style:dotted solid double;
    • 上边框是 dotted
    • 左、右边框是 solid
    • 底边框是 double

  • border-style:dotted solid;
    • 上、底边框是 dotted
    • 左、右边框是 solid

  • border-style:dotted;
    • 四面边框是 dotted

上面的例子用了 border-style。然而,它也可以和 border-width 、 border-color 一起使用。


透明边框

CSS2 引入了边框颜色值 transparent,这个值用于创建有宽度的不可见边框。

透明样式的定义如下:

a:link, a:visited {    

border-style: solid; border-width: 5px; border-color: transparent;

} a:hover {border-color: gray;}

利用 transparent,使用边框就像是额外的内边距一样;此外还有一个好处,就是能在你需要的时候使其可见。这种透明边框相当于内边距,因为元素的背景会延伸到边框区域(如果有可见背景的话)。 


边框-简写属性

上面的例子用了很多属性来设置边框。

你也可以在一个属性中设置边框。

你可以在"border"属性中设置:

  • border-width
  • border-style (required)
  • border-color

实例

border:5px solid red;

尝试一下 »


Examples

更多实例

所有边框属性在一个声明之中
本例演示用简写属性来将所有四个边框属性设置于同一声明中。

设置下边框的样式
本例演示如何设置下边框的样式。

设置左边框的宽度
本例演示如何设置左边框的宽度。

设置四个边框的颜色
本例演示如何设置四个边框的颜色。可以设置一到四个颜色。

设置右边框的颜色
本例演示如何设置右边框的颜色。


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设置元素的上边框的宽度。


CSS Outlines


轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

轮廓(outline)属性指定了样式,颜色和外边框的宽度。

轮廓(outline)属性的位置让它不像边框那样参与到文档流中,因此轮廓出现或消失时不会影响文档流,即不会导致文档的重新显示。


轮廓(outline)实例

在元素周围画线
本例演示使用outline属性在元素周围画一条线。.

设置轮廓的样式
本例演示如何设置轮廓的样式。

设置轮廓的颜色
本例演示如何设置轮廓的颜色。

设置轮廓的宽度
本例演示如何设置轮廓的宽度。


CSS 轮廓(outline)

轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

CSS outline 属性规定元素轮廓的样式、颜色和宽度。

Outline


提示:你可以在本站的《CSS参考手册》中了解更多关于 CSS outline属性 的信息。


所有 CSS 轮廓(outline)属性

"CSS" 列中的数字表示哪个 CSS 版本定义了该属性 ( CSS1 或者 CSS2 )。

属性 说明 CSS
outline 在一个声明中设置所有的外边框属性 outline-color
outline-style
outline-width
inherit
2
outline-color 设置外边框的颜色 color-name
hex-number
rgb-number
invert
inherit
2
outline-style 设置外边框的样式 none
dotted
dashed
solid
double
groove
ridge
inset
outset
inherit
2
outline-width 设置外边框的宽度 thin
medium
thick
length
inherit
2

CSS Margin(外边距)


CSS Margin (外边距)属性定义元素周围的空间。

CSS Margin 属性接受任何长度单位、百分数值甚至负值。


Margin

margin 清除周围的元素(外边框)的区域。margin 没有背景颜色,是完全透明的

margin 可以单独改变元素的上,下,左,右边距。也可以一次改变所有的属性。

可能的值

说明
auto 设置浏览器边距。
这样做的结果会依赖于浏览器
length 定义一个固定的margin(使用像素,pt,em等)
% 定义一个使用百分比的边距

Remark Margin 可以使用负值,重叠的内容。


CSS Padding(填充)


CSS Padding(填充)属性定义元素边框与元素内容之间的空间。


Padding(填充)

当元素的 Padding(填充)(内边距)被清除时,所"释放"的区域将会受到元素背景颜色的填充。

单独使用填充属性可以改变上下左右的填充。缩写填充属性也可以使用,一旦改变一切都改变。

可能的值

说明
length定义一个固定的填充(像素, pt, em,等)
%使用百分比值定义一个填充

提示:CSS padding 属性可以使用长度值或百分比值,但与 margin 属性不同,它不允许使用负值。


内边距的百分比数值

CSS padding 属性的百分比数值是相对于其父元素的 width 计算的,如果改变了父元素的 width,则它们也会改变。

以下是将段落的内边距设置为父元素 width 的 20% 的示例:

p {padding: 20%;}

假设一个段落的父元素是 div 元素,那么它的 padding 的 width 计算是根据 div 进行的:

实例

<div style="width: 200px;">        

<p>这个段落包含在一个宽度为200像素的DIV中。</p>    

</div>


尝试一下 »
点击“尝试一下”按钮查看在线实例

注意:上下内边距与左右内边距一致,即上下内边距的百分数会相对于父元素宽度设置,而不是相对于高度。


填充- 单边内边距属性

在CSS中,它可以指定不同的侧面不同的填充:

实例

padding-top:25px;
padding-bottom:25px;
padding-right:50px;
padding-left:50px;

尝试一下 »

填充 - 简写属性

为了缩短代码,它可以在一个属性中指定的所有填充属性。

这就是所谓的缩写属性。所有的填充属性的缩写属性是"padding":

实例

padding:25px 50px;

尝试一下 »

Padding 属性,可以有一到四个值。

padding:25px 50px 75px 100px;

  • 上填充为25px
  • 右填充为50px
  • 下填充为75px
  • 左填充为100px

padding:25px 50px 75px;

  • 上填充为25px
  • 左右填充为50px
  • 下填充为75px

padding:25px 50px;

  • 上下填充为25px
  • 左右填充为50px

padding:25px;

  • 所有的填充都是25px

Examples

更多实例

在一个声明中的所有填充属性
这个例子演示了使用缩写属性设置在一个声明中的所有填充属性,可以有一到四个值。

设置左部填充
这个例子演示了如何设置元素左填充。

设置右部填充
这个例子演示了如何设置元素右填充。.

设置上部填充
这个例子演示了如何设置元素上填充。

设置下部填充
这个例子演示了如何设置元素下填充。


所有的CSS填充属性

属性说明
padding使用缩写属性设置在一个声明中的所有填充属性
padding-bottom设置元素的底部填充
padding-left设置元素的左部填充
padding-right设置元素的右部填充
padding-top设置元素的顶部填充


CSS 分组嵌套 选择器

CSS 分组可以将具有相同样式的选择器进行分组,减少代码量。

CSS 嵌套适用于选择器内部的选择器的样式。


Grouping Selectors

在样式表中有很多具有相同样式的元素。

实例

h1{
    color:green;
}
h2{
    color:green;
}
p{
    color:green;
}

尝试一下 »

为了尽量减少代码,你可以使用分组选择器。

每个选择器用逗号分隔.

在下面的例子中,我们对以上代码使用分组选择器:

实例

h1,h2,p{
color:green;
}

尝试一下 »

提示:您可以对任意多个选择器进行分组,CSS 对此没有任何限制。


嵌套选择器

它可能适用于选择器内部的选择器的样式。

在下面的例子,为所有 p 元素指定一个样式,为所有元素指定一个 class="marked"的样式,并仅用于class="标记",类内的 p 元素指定第三个样式:

实例

p{
color:blue;
text-align:center;
}
.marked{
background-color:red;
}
.marked p{
color:white;
}

尝试一下 »


CSS 尺寸 (Dimension)


CSS 尺寸 (Dimension) 属性允许你控制元素的高度和宽度。同样,它允许你增加行间距。


Examples

更多实例

设置元素的高度

这个例子演示了如何设置不同元素的高度。

使用百分比设置图像的高度

这个例子演示了如何使用百分比值设置元素的高度。

使用像素值来设置元素的宽度

本例演示如何使用像素值来设置元素的宽度。

设置元素的最大高度

此示例演示如何设置元素的最大高度。

使用百分比来设置元素的最大宽度

本例演示如何使用百分比值来设置元素的最大宽度。

设置元素的最低高度

此示例演示如何设置元素的最小高度。

使用像素值设置元素的最小宽度

这个例子演示了如何使用像素值设置元素的最小宽度。


所有CSS 尺寸 (Dimension)属性

属性 描述
height 设置元素的高度。
line-height 设置行高。
max-height 设置元素的最大高度。
max-width 设置元素的最大宽度。
min-height 设置元素的最小高度。
min-width 设置元素的最小宽度。
width 设置元素的宽度。

CSS Display(显示)Visibility(可见性)

CSS display 属性和 visibility 属性都可以用来隐藏某个元素,但是这两个属性有不同的定义,请详细阅读以下内容。


display 属性设置一个元素应如何显示,visibility 属性指定一个元素应可见还是隐藏。

Box 1

Box 2
Box 3

隐藏元素 - display:none 或 visibility:hidden

隐藏一个元素可以通过把 display 属性设置为"none",或把 visibility 属性设置为"hidden"。但是请注意,这两种方法会产生不同的结果。

visibility:hidden 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

实例

h1.hidden {visibility:hidden;}

尝试一下 »

display:none 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

实例

h1.hidden {display:none;}

尝试一下 »

CSS Display - 块和内联元素

块元素是一个元素,占用了全部宽度,在前后都是换行符。

块元素的例子:

  • <h1>
  • <p>
  • <div>

内联元素只需要必要的宽度,不强制换行。

内联元素的例子:

  • <span>
  • <a>

如何改变一个元素显示

可以更改内联元素为块元素,反之亦然,可以使页面看起来是以一种特定的方式组合,并仍然遵循 web 标准。

下面的示例把列表项显示为内联元素:

实例

li {display:inline;}

尝试一下 »

下面的示例把 span 元素作为块元素:

实例

span {display:block;}

尝试一下 »

注意:变更元素的显示类型看该元素是如何显示,它是什么样的元素。例如:一个内联元素设置为 display:block 是不允许有它内部的嵌套块元素。


Examples

更多实例

如何显示元素的内联元素。

这个例子演示了如何显示一个元素的内联元素。

如何显示元素的块元素。

这个例子演示了如何显示一个元素的块元素。

如何使用一个表的collapse属性。

这个例子演示了如何使用表的collapse属性。

CSS Positioning (定位)

CSS position 属性,允许您将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。


定位有时很棘手!

决定显示在前面的元素!

元素可以重叠!


Positioning (定位)

CSS 定位属性允许你为一个元素定位。它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么。

元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非事先设定 position 属性。他们也有不同的工作方式,这取决于定位方法.

有四种不同的定位方法。


Static 定位

HTML 元素的默认值,即没有定位,元素出现在正常的流中。

静态定位的元素不会受到 top, bottom, left, right 影响。


Fixed 定位

元素的位置相对于浏览器窗口是固定位置。

即使窗口是滚动的它也不会移动:

实例

p.pos_fixed
{
position:fixed;
top:30px;
right:5px;
}

尝试一下 »

注意: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持.

Fixed 定位使元素的位置与文档流无关,因此不占据空间。

Fixed 定位的元素和其他元素重叠。


Relative 定位

相对定位元素的定位是相对其正常位置。

实例

h2.pos_left
{
position:relative;
left:-20px;
}
h2.pos_right
{
position:relative;
left:20px;
}

尝试一下 »

可以移动的相对定位元素的内容和相互重叠的元素,它原本所占的空间不会改变。

实例

h2.pos_top
{
position:relative;
top:-50px;
}

尝试一下 »

相对定位元素经常被用来作为绝对定位元素的容器块。


Absolute 定位

绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于 <html>:

实例

h2
{
position:absolute;
left:100px;
top:150px;
}

尝试一下 »

Absolutely 定位使元素的位置与文档流无关,因此不占据空间。

Absolutely 定位的元素和其他元素重叠。


重叠的元素

元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素

z-index 属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)

一个元素可以有正数或负数的堆叠顺序:

实例

img
{
position:absolute;
left:0px;
top:0px;
z-index:-1;
}

尝试一下 »

具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。

注意: 如果两个定位元素重叠,没有指定 z - index,最后定位在 HTML 代码中的元素将被显示在最前面。


Examples

更多实例

裁剪元素的外形

此示例演示如何设置元素的外形。该元素被剪裁成这种形状,并显示出来。

如何使用滚动条来显示元素内溢出的内容

这个例子演示了overflow属性创建一个滚动条,当一个元素的内容在指定的区域过大时如何设置以适应。

如何设置浏览器自动溢出处理

这个例子演示了如何设置浏览器来自动处理溢出。

更改光标

这个例子演示了如何改变光标。


所有的CSS定位属性

"CSS" 列中的数字表示哪个CSS(CSS1 或者CSS2)版本定义了该属性。

属性说明CSS
bottom定义了定位元素下外边距边界与其包含块下边界之间的偏移。auto
length
%
inherit
2
clip剪辑一个绝对定位的元素shape
auto
inherit
2
cursor显示光标移动到指定的类型url
auto
crosshair
default
pointer
move
e-resize
ne-resize
nw-resize
n-resize
se-resize
sw-resize
s-resize
w-resize
text
wait
help
2
left定义了定位元素左外边距边界与其包含块左边界之间的偏移。auto
length
%
inherit
2
overflow
设置当元素的内容溢出其区域时发生的事情。auto
hidden
scroll
visible
inherit
2
position指定元素的定位类型absolute
fixed
relative
static
inherit
2
right定义了定位元素右外边距边界与其包含块右边界之间的偏移。auto
length
%
inherit
2
top定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。auto
length
%
inherit
2
z-index设置元素的堆叠顺序 number
auto
inherit
2

相关文章

CSS 参考手册:CSS position 属性

CSS Float(浮动)

CSS float 属性定义元素在哪个方向浮动,浮动元素会生成一个块级框,直到该块级框的外边缘碰到包含框或者其他的浮动框为止。


什么是 CSS Float(浮动)?



CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。

Float(浮动),往往是用于图像,但它在布局时一样非常有用。


元素怎样浮动

元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。

一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

浮动元素之后的元素将围绕它。

浮动元素之前的元素将不会受到影响。

如果图像是右浮动,下面的文本流将环绕在它左边:

实例

img
{
float:right;
}

尝试一下 »

彼此相邻的浮动元素

如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻。

在这里,我们对图片廊使用 float 属性:

实例

.thumbnail
{
float:left;
width:110px;
height:90px;
margin:5px;
}

尝试一下 »

清除浮动 - 使用 clear

元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。

clear 属性指定元素两侧不能出现浮动元素。

使用 clear 属性往文本中添加图片廊:

实例

.text_line
{
clear:both;
}

尝试一下 »

提示:如果您想要了解更多有关 clear 属性的知识,请访问本站的CSS参考手册:CSS clear 属性


Examples

更多实例

为图像添加边框和边距并浮动到段落的右侧

让我们为图像添加边框和边距并浮动到段落的右侧

标题和图片向右侧浮动

让标题和图片向右侧浮动。

让段落的第一个字母浮动到左侧

改变样式,让段落的第一个字母浮动到左侧。

创建一个没有表格的网页

使用 float 创建一个网页页眉、页脚、左边的内容和主要内容。


CSS 中所有的浮动属性

"CSS" 列中的数字表示不同的 CSS 版本(CSS1 或 CSS2)定义了该属性。

属性描述CSS
clear指定不允许元素周围有浮动元素。left
right
both
none
inherit
1
float指定一个盒子(元素)是否可以浮动。left
right
none
inherit
1

相关文章

CSS 参考手册:CSS float 属性 

CSS 水平对齐 (Horizontal Align)

关于 CSS 中元素的水平对齐 (Horizontal Align),你可以使用多种属性来进行设置。


在CSS中,有几个属性用于元素水平对齐。


块元素对齐

块元素是一个元素,占用了全宽,前后都是换行符。

块元素的例子:

  • <h1>
  • <p>
  • <div>

文本对齐,请参阅 CSS文本 章节。.

在这一章中,我们会告诉你块元素如何水平对齐布局。


中心对齐,使用margin属性

块元素可以把左,右页边距设置为"自动"对齐。

Note: 在IE8中使用margin:auto属性无法正常工作,除非声明 !DOCTYPE

margin属性可任意拆分为左,右页边距设置自动指定,结果都是出现居中元素:

实例

.center
{
margin-left:auto;
margin-right:auto;
width:70%;
background-color:#b0e0e6;
}

尝试一下 »

提示: 如果宽度是 100%,对齐是没有效果的。

注意:IE5 中块元素有一个 margin 处理 BUG。为了使上述例子能工作,在 IE5 中,需要添加一些额外的代码。 

实例

<style>

        .container

        {

            text-align:center;

        }

        .center

        {

            margin-left:auto;

            margin-right:auto;

            width:70%;

            background-color:#b0e0e6;

            text-align:left;

        }

</style>


尝试一下 »
点击“尝试一下”按钮查看在线实例

使用 position 属性设置左,右对齐

元素对齐的方法之一是使用绝对定位:

实例

.right
{
position:absolute;
right:0px;
width:300px;
background-color:#b0e0e6;
}

尝试一下 »

注意:绝对定位与文档流无关,所以它们可以覆盖页面上的其它元素。


使用 float 属性设置左,右对齐

使用 float 属性是对齐元素的方法之一:

实例

.right
{
float:right;
width:300px;
background-color:#b0e0e6;
}

尝试一下 »


使用 Padding 设置垂直居中对齐

CSS 中一个简单的设置垂直居中对齐的方式就是头部顶部使用 padding:

.center { padding: 70px 0; border: 3px solid green; }

如果要水平和垂直都居中,可以使用 padding 和 text-align: center:

.center { padding: 70px 0; border: 3px solid green; text-align: center; }


Crossbrowser 兼容性问题

类似这样的元素对齐时,预先确定 margin 和元素的填充,始终是一个好主意。这是为了避免在不同的浏览器中的可视化差异。

IE8 和早期有一个问题,当使用 float 属性时。如果一个容器元素(在本例中<div class="container">)指定的宽度,!DOCTYPE 声明缺失,IE8 和早期版本会在右边增添 17px 的 margin。这似乎是一个滚动的预留空间。使用 float 属性始终设置在 DOCTYPE 声明中!

实例

body
{
margin:0;
padding:0;
}
.right
{
float:right;
width:300px;
background-color:#b0e0e6;
}

尝试一下 »


CSS 组合选择符

CSS 组合选择符可以让你直观的明白选择器与选择器之间的关系。

CSS 组合选择符

组合选择符说明了两个选择器直接的关系。

CSS组合选择符包括各种简单选择符的组合方式。

在 CSS3 中包含了四种组合方式:

  • 后代选取器(以空格分隔)
  • 子元素选择器(以大于号分隔)
  • 相邻兄弟选择器(以加号分隔)
  • 普通兄弟选择器(以波浪号分隔)

后代选取器

后代选取器匹配所有指定元素的后代元素。

以下实例选取所有 <p> 元素插入到 <div> 元素中: 

实例

div p
{
background-color:yellow;
}

尝试一下 »

子元素选择器

与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。

以下实例选择了<div>元素中所有直接子元素 <p> :

实例

div>p
{
background-color:yellow;
}

尝试一下 »

相邻兄弟选择器

相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。

如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。

以下实例选取了所有位于 <div> 元素后的第一个 <p> 元素:

实例

div+p
{
background-color:yellow;
}

尝试一下 »


普通相邻兄弟选择器

普通兄弟选择器选取所有指定元素的相邻兄弟元素。

以下实例选取了所有 <div> 元素之后的所有相邻兄弟元素 <p> : 

实例

div~p
{
background-color:yellow;
}

尝试一下 »

CSS 伪类 (Pseudo-classes)


CSS 伪类是用来添加一些选择器的特殊效果。

由于状态的变化是非静态的,所以元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和 class 有些类似,但它是基于文档之外的抽象,所以叫伪类。


语法

伪类的语法:

selector:pseudo-class {property:value;}

CSS 类也可以使用伪类:

selector.class:pseudo-class {property:value;}


anchor 伪类

在支持 CSS 的浏览器中,链接的不同状态都可以以不同的方式显示

实例

a:link {color:#FF0000;} /* 未访问的链接 */
a:visited {color:#00FF00;} /* 已访问的链接 */
a:hover {color:#FF00FF;} /* 鼠标划过链接 */
a:active {color:#0000FF;} /* 已选中的链接 */

尝试一下 »

注意: 在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。

注意: 在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。

注意:伪类的名称不区分大小写。


伪类和 CSS 类

伪类可以与 CSS 类配合使用:

a.red:visited {color:#FF0000;}       

<a class="red" href="css-syntax.html">CSS Syntax</a>

如果在上面的例子的链接已被访问,它会显示为红色。


CSS - :first - child 伪类

您可以使用 :first-child 伪类来选择元素的第一个子元素

注意:在 IE8 的之前版本必须声明 <!DOCTYPE> ,这样 :first-child 才能生效。

匹配第一个 <p> 元素

在下面的例子中,选择器匹配作为任何元素的第一个子元素的 <p> 元素:

实例

<html>
<head>
<style>
p:first-child
{
color:blue;
}
</style>
</head>

<body>
<p>我是一个强壮的男人.</p>
<p>我是一个强壮的男人.</p>
</body>
</html>

尝试一下 »

匹配所有 <p> 元素中的第一个 <i> 元素

在下面的例子中,选择相匹配的所有 <p> 元素的第一个 <i> 元素:

实例

<html>
<head>
<style>
p > i:first-child
{
color:blue;
}
</style>
</head>

<body>
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p> 
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p> 
</body>
</html>

尝试一下 »

匹配所有作为第一个子元素的 <p> 元素中的所有 <i> 元素

在下面的例子中,选择器匹配所有作为元素的第一个子元素的 <p> 元素中的所有 <i> 元素:

实例

<html>
<head>
<style>
p:first-child i
{
color:blue;
}
</style>
</head>

<body>
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p>
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p>
</body>
</html>

尝试一下 »

CSS - :lang 伪类

:lang 伪类使你有能力为不同的语言定义特殊的规则

注意:IE8 必须声明 <!DOCTYPE> 才能支持; lang 伪类。

在下面的例子中,:lang 类为属性值为 no 的 q 元素定义引号的类型:

实例

<html>
<head>
<style>
q:lang(no) {quotes: "~" "~";}
</style>
</head>

<body>
<p>一些文字 <q lang="no">段落中的引用</q> 一些文字。</p>
</body>
</html>

尝试一下 »


Examples

更多实例

为超链接添加不同样式
这个例子演示了如何为超链接添加其他样式。

使用 :focus
这个例子演示了如何使用 :focus 伪类。


所有CSS伪类/元素

选择器示例示例说明
:linka:link选择所有未访问链接
:visiteda:visited选择所有访问过的链接
:activea:active选择正在活动链接
:hovera:hover把鼠标放在链接上的状态
:focusinput:focus选择元素输入后具有焦点
:first-letterp:first-letter选择每个<p> 元素的第一个字母
:first-linep:first-line选择每个<p> 元素的第一行
:first-childp:first-child选择器匹配属于任意元素的第一个子元素的 <]p> 元素
:beforep:before在每个<p>元素之前插入内容
:afterp:after在每个<p>元素之后插入内容
:lang(language)p:lang(it)为<p>元素的lang属性选择一个开始值

扩展阅读

CSS 拾遗系列:浅谈CSS中的伪元素和伪类


CSS 伪元素


CSS 伪元素是用来添加一些选择器的特殊效果。

CSS 伪元素控制的内容和元素是没有差别的,但是它本身只是基于元素的抽象,并不存在于文档中,所以称为伪元素。


语法

伪元素的语法:

selector:pseudo-element {property:value;}

CSS类也可以使用伪元素:

selector.class:pseudo-element {property:value;}

在CSS1和CSS2中,伪元素和伪类都采用单冒号进行表示,在CSS3中为了区分伪元素和伪类,规定使用双冒号代表伪元素,单冒号代表伪类,即CSS3标准中应该这么写:selector.class::pseudo-element {property:value;}
虽然CSS3规定了必须使用双冒号,但实际上使用单冒号也可以工作,这是由于CSS的兼容性带来的,但这并不意味着可以无所忌惮的使用单冒号,因为单双冒号的区分,可以给CSS代码带来更高的可读性。

:first-line 伪元素

"first-line" 伪元素用于向文本的首行设置特殊样式。

在下面的例子中,浏览器会根据 "first-line" 伪元素中的样式对 p 元素的第一行文本进行格式化:

实例

p:first-line
{
color:#ff0000;
font-variant:small-caps;
}

尝试一下 »

注意:"first-line" 伪元素只能用于块级元素。

注意: 下面的属性可应用于 "first-line" 伪元素:

  • font properties
  • color properties 
  • background properties
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

:first-letter 伪元素

"first-letter" 伪元素用于向文本的首字母设置特殊样式:

实例

p:first-letter
{
color:#ff0000;
font-size:xx-large;
}

尝试一下 »

注意: "first-letter" 伪元素只能用于块级元素。

注意: 下面的属性可应用于 "first-letter" 伪元素: 

  • font properties
  • color properties 
  • background properties
  • margin properties
  • padding properties
  • border properties
  • text-decoration
  • vertical-align (only if "float" is "none")
  • text-transform
  • line-height
  • float
  • clear

提示:有关 first-letter 伪元素的相关描述,你可以参考本站的 CSS :first-letter 伪元素 一节。


伪元素和 CSS 类

伪元素可以结合 CSS 类: 

实例

p.article:first-letter {color:#ff0000;}       

<p class="article">A paragraph in an article</p>


尝试一下 »
点击“尝试一下”按钮查看在线实例

上面的例子会使所有 class 为 article 的段落的首字母变为红色。


Multiple Pseudo-elements

可以结合多个伪元素来使用。

在下面的例子中,段落的第一个字母将显示为红色,其字体大小为 xx-large。第一行中的其余文本将为蓝色,并以小型大写字母显示。

段落中的其余文本将以默认字体大小和颜色来显示:

实例

p:first-letter
{
color:#ff0000;
font-size:xx-large;
}
p:first-line
{
color:#0000ff;
font-variant:small-caps;
}

尝试一下 »

CSS - :before 伪元素

":before" 伪元素可以在元素的内容前面插入新内容。

下面的例子在每个 <h1>元素前面插入一幅图片:

实例

h1:before
{
content:url(smiley.gif);
}

尝试一下 »

CSS - :after 伪元素

":after" 伪元素可以在元素的内容之后插入新内容。

下面的例子在每个 <h1> 元素后面插入一幅图片:

实例

h1:after
{
content:url(smiley.gif);
}

尝试一下 »

所有CSS伪类/元素

选择器示例示例说明
:linka:link选择所有未访问链接
:visiteda:visited选择所有访问过的链接
:activea:active选择正在活动链接
:hovera:hover把鼠标放在链接上的状态
:focusinput:focus选择元素输入后具有焦点
:first-letterp:first-letter选择每个<p> 元素的第一个字母
:first-linep:first-line选择每个<p> 元素的第一行
:first-childp:first-child选择器匹配属于任意元素的第一个子元素的 <]p> 元素
:beforep:before在每个<p>元素之前插入内容
:afterp:after在每个<p>元素之后插入内容
:lang(language)p:lang(it)为<p>元素的lang属性选择一个开始值


CSS 导航栏


导航栏

熟练使用导航栏,对于任何网站都非常重要。

使用 CSS 你可以转换成好看的导航栏而不是枯燥的 HTML 菜单。


导航栏=链接列表

作为标准的 HTML 基础一个导航栏是必须的。

在我们的例子中我们将建立一个标准的 HTML 列表导航栏。

导航条基本上是一个链接列表,所以使用 <ul><li> 元素非常有意义:

实例

<ul>
 <li><a href="default.asp">主页</a></li>
 <li><a href="news.asp">新闻</a></li>
 <li><a href="contact.asp">联系</a></li>
 <li><a href="about.asp">关于</a></li>
</ul>

尝试一下 »

现在,让我们从列表中删除边距和填充:

实例

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

尝试一下 »

例子解析:

  • list-style-type:none - 移除列表前小标志。一个导航栏并不需要列表标记

  • 移除浏览器的默认设置将边距和填充设置为 0

上面的例子中的代码是垂直和水平导航栏使用的标准代码。


垂直导航栏

上面的代码,我们只需要 元素的样式,建立一个垂直的导航栏:

实例

a
{
display:block;
width:60px;
}

尝试一下 »

示例说明:

  • display:block - 显示块元素的链接,让整体变为可点击链接区域(不只是文本),它允许我们指定宽度

  • width:60px - 块元素默认情况下是最大宽度。我们要指定一个 60 像素的宽度

提示:查看完全样式的垂直导航栏的示例.

注意: 请务必指定 元素在垂直导航栏的的宽度。如果省略宽度,IE6可能产生意想不到的效果。


水平导航栏

有两种方法创建横向导航栏。使用内联浮动的列表项。

这两种方法都很好,但如果你想链接到具有相同的大小,你必须使用浮动的方法。


内嵌列表项

建立一个横向导航栏的方法之一是指定

元素, 上述代码是标准的内嵌:

实例

li
{ display:inline; }

尝试一下 »

实例解析:

  • display:inline - 默认情况下,<li> 元素是块元素。在这里,我们删除换行符之前和之后每个列表项,以显示一行。

提示: 查看 完全样式的水平导航栏的示例.


浮动列表项

在上面的例子中链接有不同的宽度。

对于所有的链接宽度相等,浮动

元素,并指定为 元素的宽度:

实例

li
{ float:left; }
a
{ display:block; width:60px; }

尝试一下 »

实例解析:

  • float:left - 使用浮动块元素的幻灯片彼此相邻

  • display:block - 显示块元素的链接,让整体变为可点击链接区域(不只是文本),它允许我们指定宽度

  • width:60px - 块元素默认情况下是最大宽度。我们要指定一个60像素的宽度

  • display:inline; -默认情况下,元素是块元素。在这里,我们删除换行符之前和之后每个列表项,以显示一行 。

Tip:查看完全样式的横向导航栏的示例..


CSS 下拉菜单

使用 CSS 创建一个鼠标移动上去后显示下拉菜单的效果。


基本下拉菜单

当鼠标移动到指定元素上时,会出现下拉菜单。

实例

<style>
.dropdown
{
    position: relative;
    display: inline-block;}
.dropdown-content {
    display: none;
    position: absolute; }
.dropdown:hover .dropdown-content {
    display: block;}
</style>

尝试一下 »

实例解析

HTML 部分:

我们可以使用任何的 HTML元素来打开下拉菜单,如:<span>, 或 a <button> 元素。

使用容器元素 (如: <div>) 来创建下拉菜单的内容,并放在任何你想放的位置上。

使用 <div> 元素来包裹这些元素,并使用 CSS 来设置下拉内容的样式。

CSS 部分:

.dropdown 类使用 position:relative, 这将设置下拉菜单的内容放置在下拉按钮 (使用 position:absolute) 的右下角位置。

.dropdown-content 类中是实际的下拉菜单。默认是隐藏的,在鼠标移动到指定元素后会显示。 注意 min-width 的值设置为 160px。你可以随意修改它。 注意: 如果你想设置下拉内容与下拉按钮的宽度一致,可设置 width 为 100% ( overflow:auto 设置可以在小尺寸屏幕上滚动)。

我们使用 box-shadow 属性让下拉菜单看起来像一个"卡片"。

:hover 选择器用于在用户将鼠标移动到下拉按钮上时显示下拉菜单。


下拉菜单

创建下拉菜单,并允许用户选取列表中的某一项:

这个实例类似前面的实例,当我们在下拉列表中添加了链接,并设置了样式:

实例

<style>
/* 容器 <div> - 需要定位下拉内容 */
.dropdown {
    position: relative;
    display: inline-block;}
/* 下拉内容 (默认隐藏) */
.dropdown-content {
    display: none;
    position: absolute;}
/* 下拉菜单的链接 */
.dropdown-content a {
    text-decoration: none;
    display: block;}
/* 鼠标移上去后修改下拉菜单链接颜色 */
.dropdown-content a:hover {background-color: #f1f1f1}
/* 在鼠标移上去后显示下拉菜单 */
.dropdown:hover .dropdown-content {
    display: block;}
/* 当下拉内容显示后修改下拉按钮的背景颜色 */
.dropdown:hover .dropbtn {
    background-color: #3e8e41;}
</style>


尝试一下 »

下拉内容对齐方式

float:left;

float:right;

实例

.dropdown-content {
right: 0;}
尝试一下 »

更多实例

图片下拉
该实例演示了如何如何在下拉菜单中添加图片。

导航条下拉
该实例演示了如何在导航条上添加下拉菜单。


CSS 图片廊


以下是使用CSS创建图片廊:

Klematis
添加图片描述
Klematis
添加图片描述
Klematis
添加图片描述
Klematis
添加图片描述






图片廊

以下是使用CSS创建图片廊:

实例


<style>
div.img
  { height:auto;width:auto;float:left;text-align:center;}
div.img img
  { display:inline;}
div.desc
  { text-align:center;
  font-weight:normal;
  width:120px;
  margin:2px;
  }
</style>

尝试一下 »

CSS 图像透明/不透明


使用 CSS 很容易创建透明的图像。

注意:CSS Opacity 属性是W3C 的 CSS3 建议的一部分。


实例1 - 创建一个透明图像

CSS3中属性的透明度是 opacity.

首先,我们将向您展示如何用CSS创建一个透明图像。

正常的图像

klematis

相同的图像带有透明度:

klematis

看看下面的CSS:

img
{  opacity:0.4;  filter:alpha(opacity=40);  /*IE8 及更早版本 */  }

IE9,Firefox,Chrome,Opera,和 Safari 浏览器使用透明度属性可以将图像变的不透明。 Opacity 属性值从0.0 - 1.0。值越小,使得元素更加透明。

IE8和早期版本使用滤镜:alpha(opacity= x)。 x可以采取的值是从0 - 100。较低的值,使得元素更加透明。

提示:在本站的 CSS 参考手册中对 CSS opacity 属性有详细介绍。

实例

img

{  opacity:0.4;  filter:alpha(opacity=40);  /*IE8 及更早版本 */  }


尝试一下 »

实例2 - 图像的透明度 - 悬停效果

将鼠标移到图像上:

klematis

klematis

CSS样式:

img:hover { opacity:1.0; filter:alpha(opacity=100); /*  IE8 及更早版本 */ }

第一个 CSS 块是和例1中的代码类似。此外,我们还增加了当用户将鼠标悬停在其中一个图像上时发生什么。在这种情况下,当用户将鼠标悬停在图像上时,我们希望图片是清晰的。

此 CSS 是:opacity=1.

IE8 和更早版本使用: filter:alpha(opacity=100).

当鼠标指针远离图像时,图像将重新具有透明度。

实例

img:hover

{ opacity:1.0;

filter:alpha(opacity=100); /* For IE8 and earlier */}


尝试一下 »

实例3 - 透明的盒子中的文字

这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。

首先,我们创建一个固定的高度和宽度的div元素,带有一个背景图片和边框。然后我们在第一个 div 内部创建一个较小的 div 元素。 这个 div 也有一个固定的宽度,背景颜色,边框 - 而且它是透明的。透明的 div 里面,我们在 P 元素内部添加一些文本。

实例

div .background

{ width:500px;height:250px;border:2px solid black;

background:url(https://atts.51coolma.cn/attachments/image/20200818/1597713899949694.jpg) repeat;

}


尝试一下 »



CSS 图像拼合技术


图像拼合

图像拼合就是单个图像的集合。

有许多图像的网页可能需要很长的时间来加载和生成多个服务器的请求。

使用图像拼合会降低服务器的请求数量,并节省带宽。


图像拼合 - 简单实例

与其使用三个独立的图像,不如我们使用这种单个图像("img_navsprites.gif"):

navigation images

有了CSS,我们可以只显示我们需要的图像的一部分。

在下面的例子CSS指定显示 "img_navsprites.gif" 的图像的一部分:

实例

img.home
{
width:46px;
height:44px;
background:url(img_navsprites.gif) 0 0;
}

尝试一下 »

实例解析:

  • <img class="home" src="img_trans.gif" /> -因为不能为空,src 属性只定义了一个小的透明图像。显示的图像将是我们在 CSS 中指定的背景图像
  • 宽度:46px;高度:44px; - 定义我们使用的那部分图像
  • background:url(img_navsprites.gif) 0 0; - 定义背景图像和它的位置(左 0px,顶部 0px)

这是使用图像拼合最简单的方法,现在我们使用链接和悬停效果。


图像拼合 - 创建一个导航列表

我们想使用拼合图像 ("img_navsprites.gif"),以创建一个导航列表。

我们将使用一个 HTML 列表,因为它可以链接,同时还支持背景图像:

实例

#navlist{position:relative;}
#navlist li{margin:0;padding:0;list-style:none;position:absolute;top:0;}
#navlist li, #navlist a{height:44px;display:block;}

#home{left:0px;width:46px;}
#home{background:url('img_navsprites.gif') 0 0;}

#prev{left:63px;width:43px;}
#prev{background:url('img_navsprites.gif') -47px 0;}

#next{left:129px;width:43px;}
#next{background:url('img_navsprites.gif') -91px 0;}

尝试一下 »

实例解析:

  • #navlist{position:relative;} - 位置设置相对定位,让里面的绝对定位
  • #navlist li{margin:0;padding:0;list-style:none;position:absolute;top:0;} - marginpadding 设置为0,列表样式被删除,所有列表项是绝对定位
  • #navlist li, #navlist a{height:44px;display:block;} - 所有图像的高度是 44px

现在开始每个具体部分的定位和样式:

  • #home{left:0px;width:46px;} - 定位到最左边的方式,以及图像的宽度是 46px
  • #home{background:url(img_navsprites.gif) 0 0;} - 定义背景图像和它的位置(左0px,顶部0px)
  • #prev{left:63px;width:43px;} - 左外边距定位63px(#home宽46px+项目之间的一些多余的空间),宽度为43px。
  • #prev{background:url('img_navsprites.gif') -47px 0;} - 定义背景图像向右侧定位47px(#home宽46px+分隔线的1px)
  • #next{left:129px;width:43px;}- 左外边距定位129px(#prev 63px + #prev宽是43px + 剩余的空间), 宽度是43px.
  • >#next{background:url('img_navsprites.gif') no-repeat -91px 0;}
  • - 定义背景图像向右侧定位91px(#home 46px+1px的分割线+#prev宽43px+1px的分隔线)

图像拼合 - 悬停效果

现在,我们希望我们的导航列表中添加一个悬停效果。

lamp:hover 选择器用于鼠标悬停在元素上的显示的效果

提示:
:hover 选择器可以运用于所有元素。在本站CSS参考手册的CSS:hover选择器一节,你可以更加了解该选择器的用法。

我们的新图像 ("img_navsprites_hover.gif") 包含三个导航图像和三幅图像:

navigation images

因为这是一个单一的图像,而不是6个单独的图像文件,当用户停留在图像上不会有延迟加载。

我们添加悬停效果只添加三行代码:

实例

#home a:hover{background: url('img_navsprites_hover.gif') 0 -45px;}
#prev a:hover{background: url('img_navsprites_hover.gif') -47px -45px;}
#next a:hover{background: url('img_navsprites_hover.gif') -91px -45px;}

尝试一下 »

实例解析:

  • 由于该列表项包含一个链接,我们可以使用:hover 伪类
  • #home a:hover{background: transparent url(img_navsprites_hover.gif) 0 -45px;} - 对于所有三个悬停图像,我们指定相同的背景位置,只是每个再向下45px


CSS 媒体类型


媒体类型允许你指定文件将如何在不同媒体呈现。该文件可以以不同的方式显示在屏幕上,在纸张上,或听觉浏览器等等。 


媒体类型

某些 CSS 属性仅仅被设计为针对某些媒介。比方说 voice-family 属性被设计为针对听觉用户终端。其他一些属性可用于不同的媒体类型。例如,font-size属性可用于屏幕和印刷媒体,但有不同的值。屏幕和纸上的文件不同,通常需要一个更大的字体,sans - serif字体比较适合在屏幕上阅读,而 serif 字体更容易在纸上阅读。


@media 规则

@media 规则允许在相同样式表为不同媒体设置不同的样式。

在下面的例子告诉我们浏览器屏幕上显示一个14像素的 Verdana 字体样式。但是如果页面打印,将是10个像素的 Times 字体。请注意,font-weight在屏幕上和纸上设置为粗体:

<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>

你可以自己尝试看看 ! 如果您使用的是 Mozilla / Firefox 或 IE5+打印此页,你会看到,Media Types将使用另一种比其他文本字体大小小点的字体显示。

提示:有关 @media 规则的更多信息,请参考CSS参考手册的CSS @media 查询部分。


其他媒体类型

注意:媒体类型名称不区分大小写。

媒体类型描述
all用于所有的媒体设备。
aural用于语音和音频合成器。
braille用于盲人用点字法触觉回馈设备。
embossed用于分页的盲人用点字法打印机。
handheld用于小的手持的设备。
print用于打印机。
projection用于方案展示,比如幻灯片。
screen用于电脑显示器。
tty用于使用固定密度字母栅格的媒体,比如电传打字机和终端。
tv用于电视机类型的设备。


扩展阅读

CSS3教程:CSS3 多媒体查询


CSS 属性 选择器

顾名思义,CSS 属性选择器就是指可以根据元素的属性以及属性值来选择元素。


具有特定属性的HTML元素样式

具有特定属性的 HTML 元素样式不仅仅是 class 和 id。

注意:IE7 和 IE8 需声明 !DOCTYPE 才支持属性选择器!IE6 和更低的版本不支持属性选择器。


属性选择器

下面的例子是把包含标题(title)的所有元素变为蓝色:

实例

[title]
{ color:blue; }

尝试一下 »


属性和值选择器

下面的实例改变了标题 title='51coolma' 元素的边框样式:

实例

[title=51coolma]
{ border:5px solid green; }

尝试一下 »


属性和值的选择器 - 多值

下面是包含指定值的 title 属性的元素样式的例子,使用(~)分隔属性和值:

实例

[title~=hello] { color:blue; }

尝试一下 »

下面是包含指定值的 lang 属性的元素样式的例子,使用(|)分隔属性和值:

实例

[lang|=en] { color:blue; }

尝试一下 »


表单样式

属性选择器样式无需使用 class 或 id 的形式:

实例

input[type="text"]
{ width:150px;
display:block;
margin-bottom:10px;
background-color:yellow; }
input[type="button"]
{ width:120px;
margin-left:35px;
display:block; }

尝试一下 »

相关文章

CSS 参考手册:CSS [attribute|=value] 选择器

你已经学习了CSS,下一步学习什么呢?


CSS 总结

本教程已向你讲解了如何创建样式表来同时控制多重页面的样式和布局。

你已经学会如何使用 CSS 来添加背景、格式化文本、以及格式化边框,并定义元素的填充和边距。

同时,你也学会了如何定位元素、控制元素的可见性和尺寸、设置元素的形状、将一个元素置于另一个之后,以及向某些选择器添加特殊的效果,比如链接。

如果需要更多关于 CSS 的信息,请参阅我们的 CSS 实例, CSS 参考手册, 和 CSS3 教程


你已经学习了CSS,下一步学习什么呢?

下一步应该学习 JavaScript 。

JavaScript

JavaScript 是最流行的语言之一。

JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。

JavaScript可以使您的网站更具活力。

许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的 JavaScript 片段添加到网页中。 如果您希望

如果您希望学习更多关于 JavaScript 的知识,请马上访问我们的JavaScript 教程.

学完本教程之后,W3Cschool推荐您进行CSS实战来巩固你刚学习的新知识。

CSS 实例

CSS背景

设置页面的背景颜色

设置不同元素的背景颜色

设置一个图像作为页面的背景

错误的的背景图片

如何在水平方向重复背景图像

如何定位背景图像

一个固定的背景图片(这个图片不会随页面的其余部分滚动)

在一个声明的所有背景属性

高级的背景例子

背景属性的解释

CSS文本

设置不同元素的文本颜色

文本对齐

移除链接下划线

装饰文字

控制文本中的字母

缩进文本

指定了字符之间的空间

指定了行与行之间的空间

设置元素的文本方向

增加单词之间的空格

在一个元素内禁用文字换行

内部文字图像的垂直对齐

 

Text属性的解释

CSS的字体

设置文本的字体

设置字体大小

用px设置的字体的大小

用em设置的字体的大小

用百分比和em设置字体的大小

设置字体样式

设置字体的异体

设置字体的粗细

在一个声明的所有字体属性

 

Font属性的解释

CSS链接

为访问/未访问链接添加不同的颜色

在链接上使用文本装饰

指定链接的背景颜色

超链接添加其他样式

高级 - 创建链接框

 

链接属性的解释

CSS列表

列表中所有不同的列表项标记

设置作为列表项标记的图像

使用Crossbrowser解决方案设置一个列表项标记的图像

在一个声明中的所有列表属性

 

列表属性的解释

CSS表格

指定一个表的Th,TD元素和黑色边框

使用border-collapse

指定表格的宽度和高度

设置内容的水平对齐方式(文本对齐)

设置内容的垂直对齐(垂直对齐)

指定TH和TD元素的填充

指定表格边框的颜色

设置表格标题的位置

创建一个奇特的表

 

表格属性的解释

CSS盒模型

指定元素的总宽度为250像素

使用Crossbrowser解决方案指定元素的总宽度为250像素的

 

盒模型的解释

CSS边框

设置四个边框的宽度

设置上边框的宽度

设置底部边框的宽度

设置左边框的宽度

设置右边框的宽度

 

设置四个边框的样式

设置上边框的样式

设置下边框的样式

设置左边框的样式

设置右边框的样式

 

设置四个边框的颜色

设置上边框的颜色

设置下边框的颜色

设置左边框的颜色

设置右边框的颜色

 

在一个声明中的所有边框属性

 

每边设置不同的边框

在一个声明中的所有顶部边框属性

在一个声明中的所有下边框属性

在一个声明中的所有左边框属性

在一个声明中的所有右边框属性

 

边框属性的解释

CSS轮廓

围绕一个元素(outline),绘制一条线

设置轮廓的样式

设置轮廓颜色

设置轮廓的宽度

 

轮廓属性的解释

CSS边距

指定一个元素的边距

边距缩写属性

文本顶部边距设置的值使用厘米

使用百分比值设置文本的底部边缘

使用厘米值设置文本的左边距

 

Margin属性的解释

CSS填充

设置元素的左部填充

设置元素的右部填充

设置元素的顶部填充

设置元素的底部填充

在一个声明中的所有填充属性

 

padding属性的解释

CSS分组和嵌套

组选择器

嵌套选择器

 

分组和嵌套解释

CSS尺寸

使用像素值设置图像的高度

使用百分比设置图像的高度

使用像素值来设置元素的宽度

使用百分比来设置元素的宽度

设置元素的最大高度

使用像素值设置元素的最大宽度

使用百分比来设置元素的最大宽度

设置元素的最低高度

使用像素值来设置元素的最小宽度

使用百分比来设置元素的最小宽度

 

尺寸属性的解释

CSS显示

如何隐藏一个元素(visibility:hidden)

如何不显示元素(display:none)

如何显示一个元素的内联元素

如何显示一个元素的块元素

H如何使用表格的collapse属性

 

Display属性的解释

CSS定位

元素相对浏览器窗口的位置

元素的相对定位

元素的绝对定位

重叠的元素

设置元素的形状

如何使用滚动条来显示元素内溢出的内容

如何设置浏览器自动溢出处理

使用像素值设置图像的顶部

使用像素值设置图像的底部

使用像素值设置图像的左边

使用像素值设置图像的右边

更改光标

 

定位属性的解释

CSS浮动

简单的使用float属性

为图像添加边框和边距并浮动到段落的左侧

标题和图片向右侧浮动

让段落的第一个字母浮动到左侧

使用float属性创建一个图片廊

开启float - clear属性

创建一个水平菜单

创建一个没有表格的网页

 

Float属性的解释

CSS对齐元素

使用margin的中间调整

左/右位置对齐

使用Crossbrowser解决方案,设置左/右位置对齐

左/右对齐,浮动

使用Crossbrowser解决方案,设置左/右位置对齐,浮动

 

对齐属性解释

CSS生成的内容

把括号内的URL用content属性插入到每个链接后面

章节和分节的编号是"第1节","1.1","1.2"等

quotes 属性指定了引号

CSS伪类

添加不同颜色的超链接

给超链接添加其他样式

使用:焦点

:first-child - 匹配了第一个p元素

:first-child - 匹配了p元素中的第一个I元素

:first-child - 匹配了第一个p元素中的所有I元素

使用:lang

 

伪类的解释

CSS伪元素

把文本的第一个字母设为特殊的字母

把第一行文字设置为特殊

把第一行文字的第一个字母设置为特殊

使用:在一个元素之前插入一些内容

使用:在一个元素之后插入一些内容

 

伪元素的解释

CSS导航栏

垂直导航栏的全样式

水平导航栏的全样式

 

导航栏的解释

CSS图片廊

图片廊

 

图片廊解释

CSS图像的不透明度

创建透明图像 - 鼠标悬停效果

创建一个背景图像与文本的透明框

 

图像的不透明度解释

CSS图像拼合

图像拼合

图像拼合-导航列表

悬停效果与图像拼合

 

图像拼合解释

CSS属性选择器

选择具有title属性的元素

选择标题=一个特定值的元素

选择标题=一个特定值的元素(使用(~)分隔属性和值)

选择标题=一个特定值的元素(使用(|)分隔属性和值)

 

属性选择器解释

响应式 Web 设计 - Viewport


什么是 Viewport?

viewport 是用户网页的可视区域。

viewport 翻译为中文可以叫做"视区"。

手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。


设置 Viewport

一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:

  • width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
  • height:和 width 相对应,指定高度。
  • initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
  • maximum-scale:允许用户缩放到的最大比例。
  • minimum-scale:允许用户缩放到的最小比例。
  • user-scalable:用户是否可以手动缩放。

以下实例演示了使用 viewport 和没使用 viewport 在移动端上的效果:

实例1、没有添加 viewport点击查看

实例2、添加 viewport:点击查看

如果你在平板电脑或手机上访问,可以直接点击查看效果。


相关文章

CSS教程:响应式 Web 设计


响应式 Web 设计 - 网格视图


什么是网格视图?

很多网页都是基于网格设计的,这说明网页是按列来布局的。

使用网格视图有助于我们设计网页。这让我们向网页添加元素变的更简单。

响应式网格视图通常是 12 列,宽度为100%,在浏览器窗口大小调整时会自动伸缩。

响应式网格视图


创建响应式网格视图

接下来我们来创建一个响应式网格视图。

首先确保所有的 HTML 元素都有 box-sizing 属性且设置为 border-box

确保边距和边框包含在元素的宽度和高度间。

添加如下代码:

* { box-sizing: border-box;}
* {    box-sizing: border-box;}

查看更多 box-sizing 内容请点击:CSS3 box-sizing 属性

以下实例演示了简单的响应式网页,包含两列:

实例

.menu {
width: 25%;
float: left;}
.main {
width: 75%;
float: left;}

尝试一下 »

以上实例包含两列。

12 列的网格系统可以更好的控制响应式网页。

首先我们可以计算每列的百分比: 100% / 12 列 = 8.33%。

在每列中指定 class, class="col-" 用于定义每列有几个 span :

CSS:

.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}

尝试一下 »

所有的列向左浮动,间距(padding) 为 15px:

CSS:

[class*="col-"] {
float: left;
padding: 15px;
border: 1px solid red;}

每一行使用 <div> 包裹。所有列数加起来应为 12:

<div class="row">
<div class="col-3">...</div>
<div class="col-9">...</div>
</div>

列中行为左浮动,并添加清除浮动:

CSS:

.row:after {
content: "";
clear: both;
display: block;}

我们可以添加一些样式和颜色,让其更好看:

实例

.header {
background-color: #9933cc;
color: #ffffff;
padding: 15px;}
.menu li {
padding: 8px;
margin-bottom: 7px;
background-color :#33b5e5;
color: #ffffff;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);}
.menu li:hover {
background-color: #0099cc;}

尝试一下 »

响应式 Web 设计 - 媒体查询


媒体(media)查询在 CSS3 上有介绍:CSS3 @media 查询

使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。

实例

如果浏览器窗口小于 500px, 背景将变为浅蓝色:

@media only screen and (max-width: 500px) {
body { background-color: lightblue;}}

尝试一下 »

添加断点

在先前的教程中我们使用行和列来制作网页,它是响应式的,但在小屏幕上并不能友好的展示。

媒体查询可以帮我们解决这个问题。我们可以在设计稿的中间添加断点,不同的断点有不同的效果。

桌面设备

手机设备

使用媒体查询在 768px 添加断点:

实例

当屏幕 (浏览器窗口) 小于 768px, 每一列的宽度是 100%:

/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
@media only screen and (max-width: 768px) {  /* For mobile phones: */
[class*="col-"] {width: 100%;}}

尝试一下 »

为移动端优先设计

移动端优先意味着在设计桌面和其他设备时优先考虑移动端的设计。

这就意味着我们必须对 CSS 做一些改变。

我们在屏幕小于 768px 进行样式修改,同样在屏幕宽度大于 768px 时也需要修改样式。以下是移动端优先实例:

/* 为移动端设计: */
[class*="col-"] {width: 100%;}
@media only screen and (min-width: 768px) {  /* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}}

其他断点

你可以根据自己的需要添加断点。

我们同样可以为平板设备和移动手机设备设置断点。

桌面设备

平板设备

手机设备

在屏幕为 600px 时添加媒体查询,并设置新的样式(屏幕大于 600px 但小于 768px):

实例

注意两组类样式是相同的,但名称不同 (col- 和 col-m-):

/* For mobile phones: */
[class*="col-"] {width: 100%;}
@media only screen and (min-width: 600px) {   /* For tablets: */
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}}
@media only screen and (min-width: 768px) { /* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;} }

尝试一下 »

以上代码看起来很多余,但是他可以根据屏幕大小自动设置不同的样式,所以还是非常必要的。

HTML 实例

针对桌面设备:

第一和第三部分跨越 3 列。中间部分跨域 6 列。

针对平板设备:

第一跨域 3列,第二部分跨越 9 列,第三部分跨域 12 列:

<div class="row">
<div class="col-3 col-m-3">...</div>
<div class="col-6 col-m-9">...</div>
<div class="col-3 col-m-12">...</div>
</div>

方向:横屏/竖屏

结合 CSS 媒体查询,可以创建适应不同设备的方向(横屏 landscape、竖屏 portrait 等)的布局。

语法:

orientation:portrait | landscape

  • portrait:指定输出设备中的页面可见区域高度大于或等于宽度
  • landscape: 除 portrait 值情况外,都是 landscape

实例

如果是横屏背景将是浅蓝色:

@media only screen and (orientation: landscape) {
body { background-color: lightblue;}}

尝试一下 »

响应式 Web 设计 - 图片


使用 width 属性

如果 width 属性设置为 100%,图片会根据上下范围实现响应式功能:

实例

img {
width: 100%;
height: auto; }

尝试一下 »

注意在以上实例中,图片会比它的原始图片大。我们可以使用 max-width 属性很好的解决这个问题。


使用 max-width 属性

如果 max-width 属性设置为 100%, 图片永远不会大于其原始大小:

实例

img {
max-width: 100%;
height: auto;}

尝试一下 »

提示:关于max-width 属性的更多内容,请参考本站 CSS 参考手册中的 CSS max-width属性部分。


网页中添加图片

实例

img {
width: 100%;
height: auto;}

尝试一下 »

背景图片

背景图片可以响应调整大小或缩放。

以下是三个不同的方法:

1. 如果 background-size 属性设置为 contain, 背景图片将按比例自适应内容区域。图片保持其比例不变:

这是 CSS 代码:

实例

div
background-repeat: no-repeat;
background-size: contain;}

尝试一下 »

2. 如果 background-size 属性设置为 "100% 100%" ,背景图片将延展覆盖整个区域:

实例

这是 CSS 代码:

div
background-size: 100% 100%;}

尝试一下 »

3. 如果 background-size 属性设置为 cover,则会把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。注意该属性保持了图片的比例因此 背景图像的某些部分无法显示在背景定位区域中。

这是 CSS 代码:

实例

div {
background-size: cover;
border: 1px solid red;}

尝试一下 »

不同设备显示不同图片

大尺寸图片可以显示在大屏幕上,但在小屏幕上确不能很好显示。我们没有必要在小屏幕上去加载大图片,这样很影响加载速度。所以我们可以使用媒体查询,根据不同的设备显示不同的图片。

以下大图片和小图片将显示在不同设备上:

 

实例

/* For width smaller than 400px: */
body {
background-image: url('img_smallflower.jpg');
}
/* For width 400px and larger: */
@media only screen and (min-width: 400px) {
body {
background-image: url('img_flowers.jpg'); } }

  尝试一下 »

你可以使用媒体查询的 min-device-width 替代 min-width 属性,它将检测的是设备宽度而不是浏览器宽度。浏览器大小重置时,图片大小不会改变。

实例

/* 设备小于 400px: */
body {
background-image: url('img_smallflower.jpg'); }
/* 设备大于 400px (也等于): */
@media only screen and (min-device-width: 400px) {
body {
background-image: url('img_flowers.jpg'); } }

尝试一下 »

HTML5 <picture元素

HTML5 的 <picture>元素可以设置多张图片。

浏览器支持

元素
<picture>不支持38.038.0不支持25.0
<picture> 元素类似于<video><audio> 元素。可以设备不同的资源,第一个设置的资源为首选使用的:

实例

<picture>
<source srcset="img_smallflower.jpg" media="(max-width: 400px)">
<source srcset="img_flowers.jpg">
<img src="img_flowers.jpg" alt="Flowers">
</picture>

尝试一下 »

srcset 属性的必须的,定义了图片资源。

media 属性是可选的,可以在媒体查询的 CSS @media 规则 查看详情。

对于不支持<picture元素的浏览器你也可以定义<img>元素来替代。


扩展阅读

《响应式图片101》:介绍为什么需要响应式图片以及如何选择正确的响应式图片解决方案。

响应式 Web 设计 - 视频(Video)


使用 width 属性

如果 width 属性设置为 100%,视频播放器会根据屏幕大小自动调整比例:

实例

video {
width: 100%;
height: auto;}

尝试一下 »

注意在以上实例中,视频播放器根据屏幕大小自动调整比例,且可以比原始尺寸大。更多情况下我们可以使用 max-width 属性来替代。


使用 max-width 属性

如果max-width 属性设置为 100%, 视频播放器会根据屏幕自动调整比例,但不会超过其原始大小:

实例

video {
max-width: 100%;
height: auto;}

尝试一下 »

在网页中添加视频

我们可以在网页中添加视频。以下实例视频根据 div 区域大小自动调整并占满整个 div 区域:

实例

video {
width: 100%;
height: auto;}

尝试一下 »


响应式 Web 设计 - 框架

本章节为大家介绍响应式 Web 设计框架 Bootstrap。

Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。

Bootstrap支持HTML和CSS规范,是由CSS的动态Less语言写成。

实例

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script>

尝试一下 »

更多内容,请查看我们的 Bootstrap 教材

HTML5&CSS课程列表

为了帮助广大学习者,做到学以致用,我们为大家准备了大量的CSS编程实战题,通过这些实战题,您可以一边学习一边操作,来达到巩固学习的作用。

请选择你喜欢的实战提,开始进行编程闯关。

CSS 实例

CSS背景

设置页面的背景颜色

设置不同元素的背景颜色

设置一个图像作为页面的背景

错误的的背景图片

如何在水平方向重复背景图像

如何定位背景图像

一个固定的背景图片(这个图片不会随页面的其余部分滚动)

在一个声明的所有背景属性

高级的背景例子

背景属性的解释

CSS文本

设置不同元素的文本颜色

文本对齐

移除链接下划线

装饰文字

控制文本中的字母

缩进文本

指定了字符之间的空间

指定了行与行之间的空间

设置元素的文本方向

增加单词之间的空格

在一个元素内禁用文字换行

内部文字图像的垂直对齐

 

Text属性的解释

CSS的字体

设置文本的字体

设置字体大小

用px设置的字体的大小

用em设置的字体的大小

用百分比和em设置字体的大小

设置字体样式

设置字体的异体

设置字体的粗细

在一个声明的所有字体属性

 

Font属性的解释

CSS链接

为访问/未访问链接添加不同的颜色

在链接上使用文本装饰

指定链接的背景颜色

超链接添加其他样式

高级 - 创建链接框

 

链接属性的解释

CSS列表

列表中所有不同的列表项标记

设置作为列表项标记的图像

使用Crossbrowser解决方案设置一个列表项标记的图像

在一个声明中的所有列表属性

 

列表属性的解释

CSS表格

指定一个表的Th,TD元素和黑色边框

使用border-collapse

指定表格的宽度和高度

设置内容的水平对齐方式(文本对齐)

设置内容的垂直对齐(垂直对齐)

指定TH和TD元素的填充

指定表格边框的颜色

设置表格标题的位置

创建一个奇特的表

 

表格属性的解释

CSS盒模型

指定元素的总宽度为250像素

使用Crossbrowser解决方案指定元素的总宽度为250像素的

 

盒模型的解释

CSS边框

设置四个边框的宽度

设置上边框的宽度

设置底部边框的宽度

设置左边框的宽度

设置右边框的宽度

 

设置四个边框的样式

设置上边框的样式

设置下边框的样式

设置左边框的样式

设置右边框的样式

 

设置四个边框的颜色

设置上边框的颜色

设置下边框的颜色

设置左边框的颜色

设置右边框的颜色

 

在一个声明中的所有边框属性

 

每边设置不同的边框

在一个声明中的所有顶部边框属性

在一个声明中的所有下边框属性

在一个声明中的所有左边框属性

在一个声明中的所有右边框属性

 

边框属性的解释

CSS轮廓

围绕一个元素(outline),绘制一条线

设置轮廓的样式

设置轮廓颜色

设置轮廓的宽度

 

轮廓属性的解释

CSS边距

指定一个元素的边距

边距缩写属性

文本顶部边距设置的值使用厘米

使用百分比值设置文本的底部边缘

使用厘米值设置文本的左边距

 

Margin属性的解释

CSS填充

设置元素的左部填充

设置元素的右部填充

设置元素的顶部填充

设置元素的底部填充

在一个声明中的所有填充属性

 

padding属性的解释

CSS分组和嵌套

组选择器

嵌套选择器

 

分组和嵌套解释

CSS尺寸

使用像素值设置图像的高度

使用百分比设置图像的高度

使用像素值来设置元素的宽度

使用百分比来设置元素的宽度

设置元素的最大高度

使用像素值设置元素的最大宽度

使用百分比来设置元素的最大宽度

设置元素的最低高度

使用像素值来设置元素的最小宽度

使用百分比来设置元素的最小宽度

 

尺寸属性的解释

CSS显示

如何隐藏一个元素(visibility:hidden)

如何不显示元素(display:none)

如何显示一个元素的内联元素

如何显示一个元素的块元素

H如何使用表格的collapse属性

 

Display属性的解释

CSS定位

元素相对浏览器窗口的位置

元素的相对定位

元素的绝对定位

重叠的元素

设置元素的形状

如何使用滚动条来显示元素内溢出的内容

如何设置浏览器自动溢出处理

使用像素值设置图像的顶部

使用像素值设置图像的底部

使用像素值设置图像的左边

使用像素值设置图像的右边

更改光标

 

定位属性的解释

CSS浮动

简单的使用float属性

为图像添加边框和边距并浮动到段落的左侧

标题和图片向右侧浮动

让段落的第一个字母浮动到左侧

使用float属性创建一个图片廊

开启float - clear属性

创建一个水平菜单

创建一个没有表格的网页

 

Float属性的解释

CSS对齐元素

使用margin的中间调整

左/右位置对齐

使用Crossbrowser解决方案,设置左/右位置对齐

左/右对齐,浮动

使用Crossbrowser解决方案,设置左/右位置对齐,浮动

 

对齐属性解释

CSS生成的内容

把括号内的URL用content属性插入到每个链接后面

章节和分节的编号是"第1节","1.1","1.2"等

quotes 属性指定了引号

CSS伪类

添加不同颜色的超链接

给超链接添加其他样式

使用:焦点

:first-child - 匹配了第一个p元素

:first-child - 匹配了p元素中的第一个I元素

:first-child - 匹配了第一个p元素中的所有I元素

使用:lang

 

伪类的解释

CSS伪元素

把文本的第一个字母设为特殊的字母

把第一行文字设置为特殊

把第一行文字的第一个字母设置为特殊

使用:在一个元素之前插入一些内容

使用:在一个元素之后插入一些内容

 

伪元素的解释

CSS导航栏

垂直导航栏的全样式

水平导航栏的全样式

 

导航栏的解释

CSS图片廊

图片廊

 

图片廊解释

CSS图像的不透明度

创建透明图像 - 鼠标悬停效果

创建一个背景图像与文本的透明框

 

图像的不透明度解释

CSS图像拼合

图像拼合

图像拼合-导航列表

悬停效果与图像拼合

 

图像拼合解释

CSS属性选择器

选择具有title属性的元素

选择标题=一个特定值的元素

选择标题=一个特定值的元素(使用(~)分隔属性和值)

选择标题=一个特定值的元素(使用(|)分隔属性和值)

 

属性选择器解释


您可以通过 W3Cschool 的测验程序来测试您的 CSS 技能。

关于本测验

本测验包含 20 道题,每道题的最长答题时间是 20 分钟(这是由于每个 session 的默认有效时间是 20 分钟)。

本测验是非官方的测试,它仅仅提供了一个了解您对 CSS 的掌握程度的工具。

测验会被记分

每道题的分值是 1 分。在您完成全部的 20 道题之后,系统会为您的测验打分,并提供您做错的题目的正确答案。其中,绿色为正确答案,而红色为错误答案。

现在就开始测验!祝您好运。


//www.51coolma.cn/css/introduction2mci2080.html

对大多技术人员来说都比较熟悉 CSS 选择器,举一例子来说,假设给一个 p 标签增加一个类(class),可是执行后该 class 中的有些属性并没有起作用。通过 Firebug 查看,发现没有起作用的属性被覆盖了,这个时候突然意识到了 CSS 选择器的优先级问题。严格来讲,选择器的种类可以分为三种:标签名选择器、类选择器和ID选择器。而所谓的后代选择器和群组选择器只不过是对前三种选择器的扩展应用。而在标签内写入 style="" 的方式,应该是 CSS 的一种引入方式,而不是选择器,因为根本就没有用到选择器。而一般人们将上面这几种方式结合在一起,所以就有了5种或6种选择器了。


css选择器


最基本的选择器是元素选择器(比如 div),ID 选择器(比如 #header)还有类选择器(比如.tweet)。

一些的不常见的选择器包括伪类选择器 (:hover),很多复杂的 CSS3 和正则选择器,比如:first-child,class ^= “grid-”。CSS选择器具有高效的继承性,引用 Steve Souders 的话, CSS 选择器效率从高到低的排序如下:

选择器用法
id选择器#myid
类选择器.myclassname
标签选择器div,h1,p
相邻选择器h1+p
子选择器ul > li
后代选择器li a
通配符选择器*
属性选择器a[rel="external"]
伪类选择器a:hover, li:nth-child



纵使ID选择器很快、高效,但是它也仅仅如此。从 Steve Souders 的 CSS Test 我们可以看出ID选择器和类选择器在速度上的差异很小很小。

在 Windows 系统上的 Firefox 6 上,我测得了一个简单类选择器的(reflow figure)重绘速度为 10.9ms,而ID选择器为 12.5ms,所以事实上ID比类选择器重绘要慢一点点。

ID选择器和类选择器在速度上的差异基本上没有关系。

在一个标签选择器(a)的测试上显示,它比类或ID选择器的速度慢了很多。在一个嵌套很深的后代选择器的测试上,显示数据为440左右!从这里我们可以看出ID/类选择器 和 元素/后代选择器中间的差异较大,但是相互之间的差异较小。


选择器的优先级是怎么规定的呢?

一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。通常我们用1表示标签名选择器的优先级,用10表示类选择器的优先级,用 100 标示 ID选择器的优先级。比如上例当中 .polaris span {color:red;}的选择器优先级是 10 + 1 也就是11;而 .polaris 的优先级是10;浏览器自然会显示红色的字。理解了这个道理之后下面的优先级计算自是易如反掌:

div.test1 .span var 优先级 1+10 +10 +1

span#xxx .songs li 优先级1+100 + 10 + 1

#xxx li 优先级 100 + 1

对于什么情况下使用什么选择器,用不同选择器的原则是:
  1. 准确的选到要控制的标签;
  2. 使用最合理优先级的选择器;
  3. HTML 和 CSS 代码尽量简洁美观。通常:

①最常用的选择器是类选择器。

②li、td、dd等经常大量连续出现,并且样式相同或者相类似的标签,我们采用类选择器跟标签名选择器结合的后代选择器  .xx li/td/dd {}  的方式选择。

③极少的情况下会用 ID 选择器,当然很多前端开发人员喜欢 header,footer,banner,conntent 设置成 ID 选择器的,因为相同的样式在一个页面里不可能有第二次。


在这里不得不提使用在标签内引入 CSS 的方式来写 CSS,即:

<div style="color:red">polaris</div>

这时候的优先级是最高的。我们给它的优先级是 1000,这种写法不推荐使用,特别是对新手来说。这也完全违背了内容和显示分离的思想。DIV+CSS 的优点也不能再有任何体现。

怎么提升CSS选择器性能?

1、避免使用通用选择器

.content  {color: red;}

浏览器匹配文档中所有的元素后分别向上逐级匹配 class 为 content 的元素,直到文档的根节点。因此其匹配开销是非常大的,所以应避免使用关键选择器是通配选择器的情况。


2、避免使用标签或 class 选择器限制 id 选择器

避免使用

button#backButton {…}

避免使用

.menu-left#newMenuIcon {…}

推荐使用

#backButton {…}

推荐使用

#newMenuIcon {…}

3、避免使用标签限制 class 选择器

避免使用

treecell.indented {…}

推荐使用

.treecell-indented {…}

最优使用

.hierarchy-deep {…}

4、避免使用多层标签选择器。使用 class 选择器替换,减少 css 查找

避免使用

treeitem[mailfolder="true"] > treerow > treecell {…}

推荐使用

.treecell-mailfolder {…}

5、避免使用子选择器

避免使用

treehead treerow treecell {…}

BETTER, BUT STILL BAD 

treehead > treerow > treecell {…}

推荐使用

.treecell-header {…}

6、使用继承

避免使用

#bookmarkMenuItem > .menu-left { list-style-image: url(blah) }

推荐使用

#bookmarkMenuItem { list-style-image: url(blah) }


简洁、高效的CSS

所谓高效的 CSS 就是让浏览器在查找 style 匹配的元素的时候尽量进行少的查找,下面列出一些我们常见的写 CSS 犯一些低效错误:


高效的CSS


不要在ID选择器前使用标签名

一般写法:DIV#divBox

更好写法:#divBox

解释: 因为ID选择器是唯一的,加上 div 反而增加不必要的匹配。


不要再class选择器前使用标签名

一般写法:span.red

更好写法:.red

解释:同第一条,但如果你定义了多个 .red,而且在不同的元素下是样式不一样,则不能去掉,比如你 CSS 文件中定义如下:

p.red{color:red;}  

span.red{color:#ff00ff}

如果是这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写


尽量少使用层级关系

一般写法:#divBox p .red{color:red;}

更好写法:.red{..}


使用class代替层级关系

一般写法:#divBox ul li a{display:block;}

更好写法:.block{display:block;}


必须记住的30类CSS选择器

大概大家都知道“id”,“class”以及“descendant”选择器,并且整体都在使用它们,那么你正在错误拥有更大级别的灵活性的选择方式。下面提到的大部分选择器都是在CSS3标准下的,所以它们只能在相应最新版本的浏览器中才能生效,你完全应该把这些都记在你聪明的脑袋里面。

1.*

*{

margin: 0;

padding: 0;}

在我们看比较高级的选择器之前,应该认识下这个众所周知的清空选择器。星号呢会将页面上所有每一个元素都选到。许多开发者都用它来清空 margin 和 padding。当然你在练习的时候使用这个没问题,但是我不建议在生产环境中使用它。它会给浏览器凭添许多不必要的东西。* 也可以用来选择某元素的所有子元素。

#container * {

border: 1px solid black;}

它会选中 #container 下的所有元素。当然,我还是不建议你去使用它,如果可能的话。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

2. #X

#container {

width: 960px;

margin: auto;}

在选择器中使用#可以用 id 来定位某个元素。大家通常都会这么使用,然后使用的时候大家还是得相当小心的。需要问自己一下:我是不是必须要给这个元素来赋值个 id 来定位它呢?

id选择器是很严格的并且你没办法去复用它。如果可能的话,首先试试用标签名字,HTML5中的新元素,或者是伪类。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

3. .X

.error {

color: red;}

这是个 class 选择器。它跟id选择器不同的是,它可以定位多个元素。当你想对多个元素进行样式修饰的时候就可以使用 class。当你要对某个特定的元素进行修饰那就是用 id 来定位它。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

4. X Y

li a {

text-decoration: none;}

下一个常用的就是 descendant 选择器。如果你想更加具体的去定位元素,你可以使用它。例如,假如,你不需要定位所有的 a 元素,而只需要定位li标签下的 a 标签?这时候你就需要使用 descendant 选择器了。

专家提示:如果你的选择器像 X Y Z A B.error 这样,那你就错了。时刻都提醒自己,是否真的需要对那么多元素修饰。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

5. X

a { color: red; }

ul { margin-left: 0; }

如果你想定位页面上所有的某标签,不是通过id或者是‘class’,这简单,直接使用类型选择器。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

6. X:visited and X:link

a:link {color:red;}

a:visited {color: purple;}

我们使用:link这个伪类来定位所有还没有被访问过的链接。

另外,我们也使用:visited来定位所有已经被访问过的链接。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

7. X+Y

ul + p {

color: red;}

这个叫相邻选择器。它指挥选中指定元素的直接后继元素。上面那个例子就是选中了所有ul标签后面的第一段,并将它们的颜色都设置为红色。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

8. X>Y

div#container > ul {

border: 1px solid black;}

X Y 和 X > Y的差别就是后面这个指挥选择它的直接子元素。看下面的例子:

<div id="container">

<ul><li> List Item

<ul><li> Child </li>

</ul></li><li> List Item </li><li> List Item </li><li> List Item </li></ul>

</div>

#container > ul 只会选中id为‘container’的div下的所有直接ul元素。它不会定位到如第一个 li 下的 ul 元素。

由于某些原因,使用子节点组合选择器会在性能上有许多的优势。事实上,当在 javascript 中使用 css 选择器时候是强烈建议这么做的。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

9. X ~ Y

ul ~ p {

color: red;}

兄弟节点组合选择器跟 X+Y 很相似,然后它又不是那么的严格。ul + p选择器只会选择紧挨跟着指定元素的那些元素。而这个选择器,会选择跟在目标元素后面的所有匹配的元素。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

10. X[title]

a[title] {

 color: green;}

这个叫属性选择器,上面的这个例子中,只会选择有title属性的元素。那些没有此属性的锚点标签将不会被这个代码修饰。那再想想如果你想更加具体的去筛选?那…

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

11. X[href="foo"]

a[href="http://strongme.cn" rel="external nofollow" target="_blank" ] {

color: #1f6053; /* nettuts green */}

上面这片代码将会把 href 属性值为http://strongme.cn 的锚点标签设置为绿色,而其他标签则不受影响。

注意我们将值用双引号括起来了。那么在使用 Javascript 的时候也要使用双引号括起来。可以的话,尽量使用标准的 CSS3 选择器。

这样可以用了,但是还是有点死,如果不是这个链接,而是类似的链接,那么这时就得用正则表达式了。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

12. X[href="strongme"]

a[href="strongme"] {

color: #1f6053;}

Tada,正是我们需要的,这样,就指定了strongme这个值必须出现在锚点标签的href属性中,不管是strongme.cn还是strongme.com还是www.strongme.cn都可以被选中。
但是记得这是个很宽泛的表达方式。如果锚点标签指向的不是strongme相关的站点,如果要更加具体的限制的话,那就使用^$,分别表示字符串的开始和结束。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

13. X[href^="href"]

a[href^="http"] {

background: url(path/to/external/icon.png) no-repeat;

padding-left: 10px; }

大家肯定好奇过,有些站点的锚点标签旁边会有一个外链图标,我也相信大家肯定见过这种情况。这样的设计会很明确的告诉你会跳转到别的网站。
用克拉符号就可以轻易做到。它通常使用在正则表达式中标识开头。如果我们想定位锚点属性href中以http开头的标签,那我们就可以用与上面相似的代码。

注意我们没有搜索​http://​,那是没必要的,因为它都不包含​https://​。

那如果我们想找到所有指向一张图片的锚点标签呢?那我们来使用下&字符。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

14. X[href$=".jpg"]

a[href$=".jpg"] {

color: red; }

这次我们又使用了正则表达式$,表示字符串的结尾处。这段代码的意思就是去搜索所有的图片链接,或者其它链接是以.jpg结尾的。但是记住这种写法是不会对gifspngs起作用的。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

15. X[data-*="foo"]

a[data-filetype="image"] {

color: red;}

在回到第8条,我们如何把所有的图片类型都选中呢png,jpeg,’​jpg​’,'​gif​’?我们可以使用多选择器。看下面:

a[href$=".jpg"],

a[href$=".jpeg"],

a[href$=".png"],

a[href$=".gif"] {

color: red; }

但是这样写着很蛋疼啊,而且效率会很低。另外一个办法就是使用自定义属性。我们可以给每个锚点加个属性data-filetype指定这个链接指向的图片类型。
[html]
Image Link 那有了这个钩子,我们就可以去用标准的办法只去选定文件类型为image的锚点了。

a[data-filetype="image"] {

color: red; }


兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

16. X[foo~="bar"]

a[data-info~="external"] {

color: red; }

a[data-info~="image"] {

border: 1px solid black; }

这个我想会让你的小伙伴惊呼妙极了。很少有人知道这个技巧。这个~符号可以定位那些某属性值是空格分隔多值的标签。
继续使用第15条那个例子,我们可以设置一个data-info属性,它可以用来设置任何我们需要的空格分隔的值。这个例子我们将指示它们为外部连接和图片链接。

 Click Me, Fool

给这些元素设置了这个标志之后,我们就可以使用~来定位这些标签了。

/ Target data-info attr that contains the value "external" /

a[data-info~="external"] {

color: red;}

/ And which contain the value "image" /

a[data-info~="image"] {

border: 1px solid black;}

## 17. X:checked

input[type=radio]:checked {

border: 1px solid black; }

上面这个伪类写法可以定位那些被选中的单选框和多选框,就是这么简单。

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

18. X:after

beforeafter这俩伪类。好像每天大家都能找到使用它们的创造性方法。它们会在被选中的标签周围生成一些内容。
当使用.clear-fix技巧时许多属性都是第一次被使用到里面的。

.clearfix:after {

    content: "";

    display: block;

    clear: both;

    visibility: hidden;

    font-size: 0;

    height: 0;

  }

.clearfix { 

   display: inline-block; 

   _height: 1%;

}

上面这段代码会在目标标签后面补上一段空白,然后将它清除。这个方法你一定得放你的聚宝盆里面。特别是当overflow:hidden方法不顶用的时候,这招就特别管用了。

根据 CSS3 标准规定,可以使用两个冒号::。然后为了兼容性,浏览器也会接受一个双引号的写法。其实在这个情况下,用一个冒号还是比较明智的。

兼容性

  • IE8+

  • Firefox

  • Chrome

  • Safari

  • Opera

19. X:hover

div:hover {

background: #e3e3e3; }

不用说,大家肯定知道它。官方的说法是user action pseudo class.听起来有点儿迷糊,其实还好。如果想在用户鼠标飘过的地方涂点儿彩,那这个伪类写法可以办到。

注意旧版本的IE只会对加在锚点a标签上的:hover伪类起作用。

通常大家在鼠标飘过锚点链接时候加下边框的时候用到它。

a:hover {

 border-bottom: 1px solid black;

}

专家提示:​border-bottom:1px solid black​;比​text-decoration:underline​;要好看很多。

兼容性

  • IE6+(IE6只能在锚点标签上起作用)

  • Firefox

  • Chrome

  • Safari

  • Opera

20. X:not(selector)

div:not(#container) {

   color: blue;

}

取反伪类是相当有用的,假设我们要把除idcontainer之外的所有div标签都选中。那上面那么代码就可以做到。

或者说我想选中所有出段落标签之外的所有标签。

:not(p) {

  color: green;

}

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

21. X::pseudoElement

p : : first-line {

  font-weight: bold;

  font-size:1.2em;

}

我们可以使用::来选中某标签的部分内容,如第一段,或者是第一个字没有。但是记得必须使用在块式标签上才起作用。

伪标签是由两个冒号 ​::​ 组成的。

定位第一个字

p::first-letter {

   float: left;

   font-size: 2em;

   font-weight: bold;

   font-family: cursive;

   padding-right: 2px;

}

上面这段代码会找到页面上所有段落,并且指定为每一段的第一个字。

它通常在一些新闻报刊内容的重点突出会使用到。

定位某段的第一行

p::first-line {

   font-weight: bold;

   font-size: 1.2em;

}

::first-line相似,会选中段落的第一行 。

为了兼容性,之前旧版浏览器也会兼容单冒号的写法,例如:first-line,:first-letter,:before,:after.但是这个兼容对新介绍的特性不起作用。

兼容性

  • IE6+

  • Firefox

  • Chrome

  • Safari

  • Opera

22. X:nth-child(n)

li:nth-child(3) {

   color: red;

}

还记得我们面对如何取到推跌式标签的第几个元素是无处下手的时光么,有了nth-child那日子就一去不复返了。

请注意nth-child接受一个整形参数,然后它不是从0开始的。如果你想获取第二个元素那么你传的值就是li:nth-child(2).

我们甚至可以获取到由变量名定义的个数个子标签。例如我们可以用li:nth-child(4n)去每隔3个元素获取一次标签。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

23. X:nth-last-child(n)

li:nth-last-child(2) {

   color: red;

}

假设你在一个ul标签中有N多的元素,而你只想获取最后三个元素,甚至是这样li:nth-child(397),你可以用nth-last-child伪类去代替它。

这个技巧可以很正确的代替第16个TIP,不同的就是它是从结尾处开始的,倒回去的。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

  • Opera

24. X:nth-of-type(n)

ul:nth-of-type(3) {

   border: 1px solid black;

}

曾几何时,我们不想去选择子节点,而是想根据元素的类型来进行选择。

想象一下有5个ul标签。如果你只想对其中的第三个进行修饰,而且你也不想使用id属性,那你就可以使用nth-of-type(n)伪类来实现了,上面的那个代码,只有第三个ul标签会被设置边框。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

25. X:nth-last-of-type(n)

ul:nth-last-of-type(3) {

   border: 1px solid black;

}

同样,也可以类似的使用nth-last-of-type来倒序的获取标签。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

  • Opera

26. X:first-child

ul li:first-child {

   border-top: none;

}

这个结构性的伪类可以选择到第一个子标签,你会经常使用它来取出第一个和最后一个的边框。

假设有个列表,每个标签都有上下边框,那么效果就是第一个和最后一个就会看起来有点奇怪。这时候就可以使用这个伪类来处理这种情况了。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

27. X:last-child

ul > li:last-child {

   color: green;

}

first-child相反,last-child取的是父标签的最后一个标签。

例如
标签

 List Item    

 List Item 

 List Item 

这里没啥内容,就是一个了 List。

ul {

 width: 200px;

 background: #292929;

 color: white;

 list-style: none;

 padding-left: 0;

}

li {

 padding: 10px;

 border-bottom: 1px solid black;

 border-top: 1px solid #3c3c3c;

}

上面的代码将设置背景色,移除浏览器默认的内边距,为每个li设置边框以凸显一定的深度。

背景色

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

28. X:only-child

div p:only-child {

   color: red;

}

说实话,你会发现你几乎都不会用到这个伪类。然而,它是可用的,有会需要它的。

它允许你获取到那些只有一个子标签的父标签。就像上面那段代码,只有一个段落标签的div才被着色。

 My paragraph here. 

 Two paragraphs total. 

 Two paragraphs total. 

上面例子中,第二个div不会被选中。一旦第一个div有了多个子段落,那这个就不再起作用了。

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

29. X:only-of-type

li:only-of-type {

   font-weight: bold;

}

结构性伪类可以用的很聪明。它会定位某标签只有一个子标签的目标。设想你想获取到只有一个子标签的ul标签?

使用ul li会选中所有li标签。这时候就要使用only-of-type了。

ul > li:only-of-type {

   font-weight: bold;

}

兼容性

  • IE9+

  • Firefox 3.5+

  • Chrome

  • Safari

  • Opera


30. X:first-of-type first-of-type

伪类可以选择指定标签的第一个兄弟标签。

测试

My paragraph here.    

 List Item 1   

 List Item 2       

 List Item 3     

 List Item 4 

来你把List Item 2取出来,如果你已经取出来或者是放弃了,来继续。

解决办法1
办法很多,我们看一些比较方便的。首先是first-of-type

ul:first-of-type > li:nth-child(2) {

   font-weight: bold;

}

找到第一个ul标签,然后找到直接子标签li,然后找到第二个子节点。
解决办法2
另一个解决办法就是邻近选择器。

p + ul li:last-child {

   font-weight: bold;

}

这种情况下,找到p下的直接ul标签,然后找到它的最后一个直接子标签。

解决办法3
我们可以随便玩耍这些选择器。来看看:

ul:first-of-type li:nth-last-child(1) {

   font-weight: bold;

}

先获取到页面上第一个ul标签,然后找到最后一个子标签。

兼容性

  • IE9+

  • Firefox 3.5+

  • Chrome

  • Safari

  • Opera

结论

如果你想向旧版本浏览器妥协,比如IE6,那你用这些新的选择器的时候还是得小心点。但别让IE6阻止你去学这些新的技能。那你就对自己太残忍了。记得多查查兼容性列表,或者使用Dean Edward's excellent IE9.js script 来让你的浏览器具有这些特性。

第二个,使用向 jQuery 的时候,尽量使用原生的 CSS3 选择器。可能 活让你的代码跑的很快。这样选择器引擎就可以使用浏览器原生解析器,而不是选择器自己的。



我们在使用 CSS 来布局时经常需要进行居中,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是应该选择哪种正确的方法。比如我们都知道 margin:0 auto;的样式能让元素水平居中,而margin: auto;却不能做到垂直居中……下面就 CSS 居中的一些常用方法做个集中的介绍。


首先是水平居中,最简单的办法当然就是:

margin:0 auto;

也就是将 margin-leftmargin-right属性设置为 auto,从而达到水平居中的效果。

文字的水平居中方法:

利用 line-height 设为 height 的一样即可:

实例

.wrap{

line-height: 200px;/*垂直居中关键*/

text-align:center;

height: 200px;

font-size: 36px;

background-color: #ccc;

}


尝试一下 »
效果如下所示:
文字居中

padding填充

利用 paddingbackground-clip 配合实现div的水平垂直居中: 
通过 background-clip 设置为 content-box, 将背景裁剪到内容区外沿,再利用 padding 设为外 div 减去内 div 的差的一半,来实现:

实例

.children {

 width: 100px;

 height: 100px;

 padding: 50px;

 background-color: black;

 background-clip:content-box;/*居中的关键*/


尝试一下 »
效果如下所示:

微信截图_20201112101718

提示:关于 padding 的使用,你可以参考 CSS padding 属性部分。

hacks, hacks(小技巧)

有许多 hacks ,负 margin,影子元素 : : before 等。如果你的内容不是固定大小的话,它们大部分是很脆弱的。

translate(-50%,-50%)

position translate(-50%,-50%) 比较奇特,百分比计算不是以父元素为基准,而是以自己为基准。

示例:

实例

#ex3_content{

left:50%; top:50%; 

transform:translate(-50%,-50%);

-webkit-transform:translate(-50%,-50%);

background-color:gray; color:white; position:absolute; }


尝试一下 »

这个技巧相当嚣张,同样适用于没固定大小的内容,min-widthmax-heightoverflow:scroll等。

绝对定位居中

绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。

父容器元素:position: relative

实例

.Absolute-Center {

  width: 50%;

  height: 50%;

  overflow: auto;

  margin: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »

注意:高度必须定义,建议加 overflow: auto,防止内容溢出。


视口居中

内容元素:position: fixedz-index: 999,记住父容器元素position: relative 

实例

.Absolute-Center.is-Fixed {

  width: 50%;

  height: 50%;

  overflow: auto;

  margin: auto;

  position: fixed;

  top: 0; left: 0; bottom: 0; right: 0;

  z-index: 999;

}


尝试一下 »


响应式

百分比宽高,最大、最小宽度均可以,加 padding 也可以

实例

.Absolute-Center.is-Responsive {

  width: 60%;

  height: 60%;

  min-width: 400px;

  max-width: 500px;

  padding: 40px;

  overflow: auto;

  margin: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »


偏移

只要margin: auto; 在,内容块将垂直居中,top, left, bottom, right 可以设置偏移。

实例

.Absolute-Center.is-Right {

  width: 50%;

  height: 50%;

  margin: auto;

  overflow: auto;

  position: absolute;

  top: 0; left: auto; bottom: 0; right: 20px;

  text-align: right;

}


尝试一下 »


溢出

居中内容比父容器高时,防止溢出,加 overflow: auto (没有任何 padding 时,也可以加 max-height: 100%;)。

实例

.Absolute-Center.is-Overflow {

  width: 50%;

  height: 300px;

  max-height: 100%;

  margin: auto;

  overflow: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »


调整尺寸

resize 属性可以让尺寸可调。 设置 min- /max- 限制尺寸,确定加了 overflow: auto

实例

.Absolute-Center.is-Resizable {

  min-width: 20%;

  max-width: 80%;

  min-height: 20%;

  max-height: 80%;

  resize: both;

  overflow: auto;

  margin: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »

margin填充

首先我们还是定义父子div:

这里我们利用将子 div 的 margin-top 设置为父 div 高度减去子 div 高度的一半,然后再通过 overflow 设置为 hidden 来触发父 div 的 BFC,CSS代码如下:

实例

.parent {

 margin:0 auto;

 height:@parentWidth;

 width:@parentWidth;

 background: red;

 overflow:hidden;/*触发BFC*/

}


尝试一下 »
效果如下所示:
微信截图_20201112105305

absolute定位

利用 position:absolute 搭配topleft 50%,再将 margin 设为负值也可以对 div 进行水平垂直居中,首先还是需要定义父子 div:

实例

.children {

 position:absolute; 

 left:50%; 

 top:50%; 

 margin:-25px 0 0 -25px ;

 height:50px;

 width:50px;

 background-color: black;

}


尝试一下 »
其中的 margin 中的值为该 div 宽度的一半,最后效果图:

微信截图_20201112105956

图片居中

一般的图片居中都是和 text-align 一样,将图片包装在一个 div 中,将该 div 的 text-align 设为 center 即可。  

有一种特殊的方式,利用了一个图片进行占位,以让父容器获得高宽,从而让进行 -50% 偏移的图片能有一个参照容器作百分比计算。优点是可以不知道图片的大小,随便放张尺寸不超过父容器的图片上去都能做到居中。另外,兼容性好,IE6 都是能顺利兼容的。代码如下:

实例

p {

 position:absolute;

 top:50%;

 left:50%;}

.show-img {

 position:absolute;

 right:50%;

 bottom:50%;}


尝试一下 »
效果如下所示:

微信截图_20201112111221

transform居中

上面讲到的 div 居中的例子中,div 的宽度都是固定的,然而实际项目中,有可能遇到不定宽的 div,特别是响应式或者移动端的设计中,更加常见。所以下面介绍一种不需要定宽的 div 水平垂直居中方法。 
先上代码:

实例

.children-inline {

 position: relative;

 left: -50%;

 -webkit-transform : translate3d(0, -50%, 0);

 transform : translate3d(0, -50%, 0);

 background-color: black;

 color:white;

}


尝试一下 »
效果如下所示:

微信截图_20201112111417

首先我们利用 float,将需要居中的div的父 div 也就是 children 的宽度收缩,然后 left:50%,将 children 的左边与水平中线对齐。这个时候,还没有真正居中,我们需要将 children-inner 左移动 -50%,这样就水平居中了。 

再来说说垂直方向,先将 children 的 top 设为50%,然后其上边和垂直中线对齐了,同样,我们需要将children-inner 上移动 -50%。但是这个 50% 是计算不出来的,所以我们用到了 transform : translate3d(0, -50%, 0); 
这个方法非常好用噢。

flex居中

最后来介绍一下 CSS3 中的 display:flex 来实现的水平垂直居中的方法。

实例

.parent {

 display:flex;

 align-items: center;/*垂直居中*/

 justify-content: center;/*水平居中*/

 width:100%;

 height:100%;

 background-color:red;

}


尝试一下 »
效果如下所示:

微信截图_20201112111606
这种方式最为简便,就是兼容性不好,不过随着时间的前进,各大浏览器一定会都兼容的。

扩展阅读

flex 除了可以用于表示居中之外,它还是一个强大的开源应用程序框架,允许使用相同的编程模型,工具和代码库构建针对浏览器,移动设备和桌面的传统应用程序。你可以在本站的《Flex教程》中掌握更多有关于Flex框架的详细信息。


如今我们的网站、页面更加需要注重细节,不论是字体的样式、还是图片的分辨率清晰度都会影响到用户的访问体验和 PV,以及用户以后是否会回访我们的网站/博客。为了让我们的网页变得更加美观个性化,我们需要了解更多的 CSS 样式属性。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化,CSS 拥有对网页对象和模型样式编辑的能力。为了方便大家学习 CSS 样式,下面大家整理 CSS 样式知识点及参考样式合集。


css样式

一些常见不必要 CSS 样式

1、与默认 CSS 样式一致

我们有时候写的 CSS 样式会与浏览器默认的 CSS 样式一致,有时候您自己都可能没有意识到。

常见的例子有:

div{width:auto; height:auto;}

对于一些刚使用 CSS 的朋友,有时候,其为了表达这段 div 高度是自动适应于内部元素的,会情不自禁的加上 height:auto; 的样式。很显然,这段样式是没有必要的,默认的任何块状元素的高度几乎都是 auto。

我们来看看人人网个人首页的 CSS 样式文件(链接点这里),在 chrome 浏览器下 Ctrl+F 搜索  height:auto,居然显示了九条(见下图)。

height:auto

height:auto;的样式

按照常规来讲,height:auto 只有在使用 CSS 优先级抹掉之前的 height 定值的样式的时候使用,其余情况基本上都是可以去掉的。就像是上面人人网的例子,居然9个 height:auto,这里至少有一半是没有必要的。

body,p,h1,h2,h3,h4,h5,h6{margin:0; padding:0;}

v

上面有关 body,p 等标签的样式中有个样式是无效的,与默认值一致的,这个样式就是 padding:0;,对于 body,p,h1~6 这些标签,本身的 padding 值就是0,所以只需要 margin:0 就可以了。


在CSS reset中,为了方便,都是一堆标签直接套个 margin:0;padding:0; 了事。还拿人人网的 CSS 样式文件举例,人人网个人首页样式第一行就是一长串标签带个 margin:0;padding:0; 先不管其把 span,div,em 之类的标签也加进入,就算是没有这些标签,也是极不推荐这种写法,完全的浪费资源,浪费 CSS 的渲染。比较推荐的做法是把 ul,ol 独立出来,因为ul,ol还要独立设置 list-style 样式,而且常用的标签就 ul,ol 列表元素有默认的 padding 值,所以高效的写法应该是:

body,p,h1,h2,h3,h4,h5,h6{margin:0;}

ul,ol{list-stype:none; margin:0; padding:0;}

span{display:inline; float:left; margin-left:3px;}

这也是常出现的。出现这种情况的原因可能与 IE6 的浮动双边距 bug 有关,我们可以用设置 display:inline 的方法修复 IE6 的这个 bug,但是,如果对这个 bug 理解不够,对 CSS 的理解不足,就会出现滥用的情况。上面是滥用的情况之一,对于 span/a/em/cite/i/b/strong 等行内元素默认就是 display:inline 的,所以给其设置 display:inline 属性是多此一举。


类似的情况还有对本身就是 block 水平的元素设置 display:block 属性,例如:

li{display:block; padding:4px 0;}

上面的情况屡见不鲜,甚至在比较优秀的网站上也会有这类低级的样式问题。


其他一些情况

div{margin:auto;}

textarea{overflow:auto;}

img,input,button{vertical-align:baseline;}

div{background-position:0 0;}


css参考样式集合

一. 字体属性:(font)

1. 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD

2. 样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)

3. 行高 {line-height: normal;}(正常) 单位:PX、PD、EM

4. 粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常)

5. 变体 {font-variant: small-caps;}(小型大写字母) normal;(正常)

6. 大小写 {text-transform: capitalize;}(首字母大写) uppercase;(大写) lowercase;(小写) none;(无)

7. 修饰 {text-decoration: underline;}(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁)


二. 常用字体: (font-family)

"Courier New", Courier, monospace, "Times New Roman", Times, serif, Arial, Helvetica, sans-serif, Verdana


三. 背景属性: (background)

1. 色彩 {background-color: #FFFFFF;}

2. 图片 {background-image: none;}

3. 重复 {background-repeat: no-repeat;}repeat-x(水平);repeat-y(垂直)

4. 滚动 {background-attachment: fixed;}(固定) scroll;(滚动)

5. 位置 {background-position: left;}(水平) top(垂直);

简写方法 {background:#000 url(..) repeat fixed left top;} /*简写·这个在阅读代码中经常出现.


四. 区块属性: (Block)

1. 字间距 {letter-spacing: normal;} 数值 

2. 对齐 {text-align: justify;}(两端对齐) left;(左对齐) right;(右对齐) center;(居中)

3. 缩进 {text-indent: 数值px;}

4. 垂直对齐 {vertical-align: baseline;}(基线) sub;(下标) sup;(上标) top; text-top; middle; bottom; text-bottom;

5. 词间距word-spacing: normal; 数值

6. 空格white-space: pre;(保留) nowrap;(不换行)

7. 显示 {display:block;}(块) inline;(内嵌) list-item;(列表项) run-in;(追加部分) compact;(紧凑) marker;(标记) table; inline-table; table-raw-group; table-header-group; table-footer-group; table-raw; table-column-group; table-column; table-cell; table-caption;(表格标题) /*display 属性的了解很模糊*/


css


五. 方框属性: (Box)

1. width:; height:; float:; clear:both; margin:; padding:; 顺序:上右下左


六. 边框属性: (Border)

1. border-style: dotted;(点线) dashed;(虚线) solid; double;(双线) groove;(槽线) ridge;(脊状) inset;(凹陷) outset; border-width:; 边框宽度

border-color:#;

简写方法border:width style color; /*简写*/


七. 列表属性: (List-style)

1. 类型list-style-type: disc;(圆点) circle;(圆圈) square;(方块) decimal;(数字) lower-roman;(小罗码数字) upper-roman; lower-alpha; upper-alpha;

2. 位置list-style-position: outside;(外) inside;

3. 图像list-style-image: url(..);


八. 定位属性: (Position)

1.Position: absolute; relative; static;

visibility: inherit; visible; hidden;

overflow: visible; hidden; scroll; auto;

clip: rect(12px,auto,12px,auto) (裁切)


九. CSS文字属性:

1. color : #999999; /*文字颜色*/

2. font-family : 宋体,sans-serif; /*文字字体*/

3. font-size : 9pt; /*文字大小*/

4. font-style:itelic; /*文字斜体*/

5. font-variant:small-caps; /*小字体*/

6. letter-spacing : 1pt; /*字间距离*/

7. line-height : 200%; /*设置行高*/

8. font-weight:bold; /*文字粗体*/

9. vertical-align:sub; /*下标字*/

10. vertical-align:super; /*上标字*/

11. text-decoration:line-through; /*加删除线*/

12. text-decoration: overline; /*加顶线*/

13. text-decoration:underline; /*加下划线*/

14. text-decoration:none; /*删除链接下划线*/

15. text-transform : capitalize; /*首字大写*/

16. text-transform : uppercase; /*英文大写*/

17. text-transform : lowercase; /*英文小写*/

18. text-align:right; /*文字右对齐*/

19. text-align:left; /*文字左对齐*/

20. text-align:center; /*文字居中对齐*/

21. text-align:justify; /*文字分散对齐*/

vertical-align属性

22. vertical-align:top; /*垂直向上对齐*/

23. vertical-align:bottom; /*垂直向下对齐*/

24. vertical-align:middle; /*垂直居中对齐*/

25. vertical-align:text-top; /*文字垂直向上对齐*/

26. vertical-align:text-bottom; /*文字垂直向下对齐*/


十. CSS边框空白

1. padding-top:10px; /*上边框留空白*/

2. padding-right:10px; /*右边框留空白*/

3. padding-bottom:10px; /*下边框留空白*/

4. padding-left:10px; /*左边框留空白


CSS 样式表中的样式覆盖顺序

有时候在写 CSS 的过程中,某些限制总是不起作用,这就涉及了 CSS 样式覆盖的问题,如下所示:

#navigator {  

    height: 100%;  

    width: 200;  

    position: absolute;  

    left: 0;  

     border: solid 2 #EEE;  }    

.current_block {  

     border: solid 2 #AE0;  }  

在一些教材中,只说 CSS 的顺序是“元素上的 style” > “文件头上的 style 元素” >“外部样式文件”,但对于样式文件中的多个相同样式的优先级怎样排列,没有详细说明。经过测试和继续搜索,得知优先级如下排列:
 
1. 样式表的元素选择器选择越精确,则其中的样式优先级越高:

id选择器指定的样式 > 类选择器指定的样式 > 元素类型选择器指定的样式
所以上例中,#navigator 的样式优先级大于.current_block 的优先级,及时 .current_block 是最新添加的,也不起作用。
 
2. 对于相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高:

注意,这里是样式表文件中越靠后的优先级越高,而不是在元素 class 出现的顺序。比如 .class2 在样式表中出现在 .class1 之后:

.class1 {  

    color: black;  }    

.class2 {  

    color: red;  }

而某个元素指定 class 时采用 class="class2 class1"这种方式指定,此时虽然class1在元素中指定时排在class2的后面,但因为在样式表文件中class1处于class2前面,此时仍然是class2的优先级更高,color的属性为red,而非black。

 

3. 如果要让某个样式的优先级变高,可以使用!important来指定:

.class1 {  

    color: black !important;  }    

.class2 {  

    color: red;  } 

这时 class 将使用 black,而非 red。

 

对于一开始遇到的问题,有两种解决方案:

1. 将 border 从 #navigator 中拿出来,放到一个class .block中,而.block放到.current_block之前:

#navigator {  

    height: 100%;  

    width: 200;  

    position: absolute;  

    left: 0;  }    

.block {  

    border: solid 2 #EEE;  }    

.current_block {  

    border: solid 2 #AE0;  }  

 需要默认为#navigator元素指定class="block"

2. 使用!important:

#navigator {  

    height: 100%;  

    width: 200;  

    position: absolute;  

    left: 0;  

    border: solid 2 #EEE;  }    

.current_block {  

    border: solid 2 #AE0 !important;  }  

此时无需作任何其他改动即可生效。可见第二种方案更简单一些。 

大家都知道CSS的全称叫做“层叠样式表”,但估计很多人都不知道“层叠”二字的含义。其实,“层叠”指的就是样式的覆盖,当一个元素被运用上多种样式,并且出现重名的样式属性时,浏览器必须从中选择一个属性值,这个过程就叫“层叠”。样式覆盖(这种叫法更大众化些)遵循一定的规则。


首先需要明确的是,很多情况都会导致一个元素被运用上多种样式,样式覆盖的规则也需要根据不同的情况来定,具体规则如下。


规则一:由于继承而发生样式冲突时,最近祖先获胜。

CSS的继承机制使得元素可以从包含它的祖先元素中继承样式,考虑下面这种情况:

<style>

body

 {color:black;}

p

 {color:blue;}

</style>

<p>welcome to <strong>51coolma</strong></p>

strong分别从bodyp中继承了color属性,但是由于p在继承树上离strong更近,因此strong中的文字最终继承p的蓝色。

规则二:继承的样式和直接指定的样式冲突时,直接指定的样式获胜。

在上面的例子中,假如还指定了strong元素的样式,如:

strong

 {color:red;}

那么根据规则二,strong中的文字最终显示为红色。

规则三:直接指定的样式发生冲突时,样式权值高者获胜。

样式的权值取决于样式的选择器,权值定义如下表。


css选择器

可以看到,内联样式的权值>>ID选择器>>类选择器>>标签选择器,除此以外,后代选择器的权值为每项权值之和,比如#nav .current a”的权值为100 + 10 + 1 = 111。

规则四:样式权值相同时,后者获胜。

考虑下面这种情况

<p class="byline">Written by <a class="email" href="mailto:3400982550@qq.com">Jean Graine de Pomme</a></p>

.byline a {color:red;}

p .email {color:blue;}

.byline ap .email都直接指定了上面的a元素,且权值都为11,根据规则四,最终显示蓝色。

由于样式表可以是外部的,也可以是内部的,规则四提醒我们要注意外部样式表引入的顺序(及<link>元素的顺序),以及外部样式表与内部样式表的出现位置。一般来说,内部样式表出现在所有外部样式表的引入之后,一般是在</head>之前。


规则五:!important的样式属性不被覆盖。

!important可以看做是万不得已的时候,打破上述四个规则的”金手指”。如果你一定要采用某个样式属性,而不让它被覆盖的,可以在属性值后加上!important,以规则四的例子为例,.byline a {color:red !important;}可以强行使链接显示红色。大多数情况下都可以通过其他方式来控制样式的覆盖,不能滥用!important

JQuery中操作CSS样式的方法

//1、获取和设置样式

$("#tow").attr("class")获取ID为tow的class属性

$("#two").attr("class","divClass")设置Id为two的class属性。

//2、追加样式

$("#two").addClass("divClass2")为ID为two的对象追加样式divClass2

//3、移除样式

$("#two").removeClass("divClass")移除 ID为two的对象的class名为divClass的样式。

$(#two).removeClass("divClass divClass2")移除多个样式。

//4、切换类名

$("#two").toggleClass("anotherClass") //重复切换anotherClass样式

//5、判断是否含有某项样式

$("#two").hasClass("another")==$("#two").is(".another");

//6、获取css样式中的样式

$("div").css("color") 设置color属性值. $(element).css(style)

//设置单个样式

$("div").css("color","red")

//设置多个样式

$("div").css({fontSize:"30px",color:"red"})

$("div").css("height","30px")==$("div").height("30px")

$("div").css("width","30px")==$("div").width("30px")

//7.offset()方法

//它的作用是获取元素在当前视窗的相对偏移,其中返回对象包含两个属性,即top和left 。

//注意:只对可见元素有效。

var offset=$("div").offset();

var left=offset.left;         //获取左偏移

var top=offset.top;        //获取右偏移

//8、position()方法

//它的作用是获取元素相对于最近的一个position样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,它返回的对象也包括两个属性即top和left。

//9、scrollTop()v方法和scrollLeft()方法

$("div").scrollTop();        //获取元素的滚动条距顶端的距离。

$("div").scrollLeft();         //获取元素的滚动条距左侧的距离。

//10、jQuery中的 toggle和slideToggle 方法,都可以实现对一个元素的显示和隐藏。区别是:

//toggle:动态效果为从右至左。横向动作。

//slideToggle:动态效果从下至上。竖向动作。

//比如想实现一个树由下至上收缩的动态效果,就使用slideToggle就ok了。

$('input').attr("readonly",true)//将input元素设置为readonly

$('input').attr("readonly",false)//去除input元素的readonly属性

$('input').attr("disabled",true)//将input元素设置为disabled

$('input').attr("disabled",false)//去除input元素的disabled属性


看完 51coolma《css 教程》中的《css 图像透明/不透明》,你对 CSS 中的半透明颜色可能已经有了基础的了解,CSS 透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情。目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效,但是总得来说它是一个巨大的变革。关于 CSS 透明度,有一点需要注意的是,它虽然使用了很多年,但它一直以来都不是一个标准属性,它是一种非标准技术,应该是 CSS3 规范的一部分。


css透明度

怎样在CSS样式中设置背景的透明度

怎样在 CSS 样式中设置背景的透明度,下面给出一个具体的实例。把类为 box 的层设为透明。

实例

.box{

   width:300px;

   height:200px;

   margin:0 auto;

   boxder:1px solid #ccc;

   background:#000;

   filter:alpha(opacity:30);

   opacity:0.3;

   color:red;}


尝试一下 »
其中 background:#000; filter:alpha(opacity:30); opacity:0.3;为关键代码,当 opacity 值为1时,表示完全不透明,为0时表示完全透明。

其他的属性介绍如下:
opacity: 0.3;这是“最重要的”,因为它是在 CSS 的现行标准。这将在 Firefox,Safari 和 Opera 的大多数版本的工作。这将是你所需要的一切如果所有的浏览器都支持目前的标准。当然是他们不会错。

filter:alpha(opacity=30);这一个是针对IE浏览器

-moz-opacity:0.3;你需要这一个支持老版本的 Mozilla 浏览器如 Netscape Navigator。

-khtml-opacity: 0.3;这是旧版本的 Safari(1.×)当渲染引擎是使用仍被称为 kthml,而不是目前的WebKit。

CSS 中用 javascript 或 jquery 实现透明度的改变

如何用 CSS 实现背景半透明效果?我们一般的做法是用两个层,一个用于放文字,另一个用于做透明背景,因为透明滤镜的效果会影响到里面的内容。


不过如果你只需求在 IE 下实现,使用 CSS 实现透明度有很多方案,这里只是介绍大家通用的方法:

.transparent_class {

filter:alpha(opacity=50);//标准的css透明度,在大部分的标准浏览器Firefox, Safari, and Opera都有效

opacity:0.5;//兼容IE解决方案

-moz-opacity:0.5;//老的Mozilla browsers如NetscapeNavigator.几乎没有可以不需要

-khtml-opacity:0.5;//兼容老的Safari (1.x) 版本,很少可以不用    }


知道了CSS改变透明度的原理,那么使用 javascript 动态改变透明度就简单了:

实例

<script>

   window.onload =function(){

   var myDiv = document.getElementById("transparent_div");

   myDiv.onclick =function(){

       myDiv.style.opacity =".4";//针对所有通用浏览器

       myDiv.style.filter ="alpha(opacity=40)";//针对IE浏览器}}

</script>


尝试一下 »

jQuery改变透明度实现如下:

实例

$(document).ready(function(){

$("#btn1").click(function(){

$("#box").animate({opacity:"0"});});

$("#btn2").click(function(){

$("#box").animate({opacity:"1"});});});


尝试一下 »

CSS透明技巧汇总

一、旧的Opacity设置


以下代码是 Firefox 和 Safari 旧版本所需的透明度设置:

#myElement {  -khtml-opacity: .5;  -moz-opacity: 0.5;  }

-khtml-opacity 设置是针对旧版本的Webkit渲染引擎,这种专用属性现在已经过时了,除非你还有需要兼容Safari 1.x.的用户。

第二行使用专用属性 -moz-opacity是 为了兼容 Mozilla 渲染引擎的早期版本,以及追溯到 Netscape Navigator。 Firefox 0.9 以后就不要求使用 -moz-opacity 属性,Firefox 3.5(现在使用 Gecko 引擎)已经不在支持这个属性。

透明样例


二、在Firefox, Safari, Chrome和Opera下的CSS透明度 

以下代码是除了IE外的所有当前浏览器的最简单,最新的不透明度设置的CSS语法:

#myElement { opacity: 0.7; }

上述语法将设置一个元素为70%不透明(或30%透明)。设置opacity:1将使元素不透明,而设置opacity:0将使得元素完全不可见。你 只要记住“opacity”等同于“不透明”就很容易记住了,opacity值越小就越接近透明。
opacity属性可以精确地小数点后两位,所以值取".01"和".02"实际上是不同的,虽然可见度很难被发觉。一般情况下,精确到一位就可以了,取值如".3"或".7"。

三、IE下的CSS透明度

IE下照旧有别于其他浏览器,并且目前也有三个不同版本的IE在广泛使用,透明度设置是不同的,有时需要额外的CSS来控制:

#myElement {      filter: alpha(opacity=40);  }

上面的CSS使用专用的filter属性来设置IE6-8透明度。对于IE6和IE7需要注意:为了使得透明设置生效,元素必须是“有布局”。一个元素 可以通过使用一些CSS属性来使其被布局,有如width和position。

另外一个设置IE8的CSS透明度的方法语法如下:

#myElement {      filter: progid:DXImageTransform.Microsoft.Alpha(opacity=40);

/* 第一行在IE6, IE7和IE8下有效 */

-ms-filter:       “progid:DXImageTransform.Microsoft.Alpha(opacity=40)”;

/*第二行仅在IE8下有效 */}

第一行代码针对当前所有IE版本,第二行仅针对 IE8。
注意两行代码的不同之处:在第二行代码中,在filter属性前跟着-ms-前缀,并且属性值有加引号,这些都是语法所必须的。
说实在,有了之前一个例子中用 alpha(opacity=40)的语法来作用于任何版本的 IE 下的任何有布局的元素之后,并不能确定是否还有必要用”progid“的方法

CSS 如何值改变背景透明的,不改变子元素透明度?

一般情况下,我们可以使用 css 的 opcity 属性改变某个元素的透明度,但是其元素下的子元素的透明度也会被改变,即使对子元素重新定义也没有用,例如:

实例

<div style="opacity:0.4; background-image:url(/statics/images/w3c/intro.png)">


尝试一下 »
文字元素的透明度也会是 0.4。于是想一想,如果有方法只改变背景的透明度就能解决此问题了。
 
方法1:使用一张透明的图片做背景可以达成效果,但是有没有更简单的方法呢?
 
方法2:使用 RGBA。

例如:

实例

<div style="background-color:rgba(0, 0, 0, 0.4)">  


尝试一下 »

CSS在设置了透明度的层里,怎么让里面的层不透明

在外层DIV设置了CSS代码如下

实例

opacity: 0.8;

-moz-opacity: 0.8;

filter: alpha(opacity=80);


尝试一下 »
但在此层里面的层都透明了,怎么让里面的层不透明?

方法:
如果是颜色,完全可以用背景色透明 rgba 来代替 opacity,
如果是图片,就用 ps 简单处理一下即可。
opacity 这个属性指定的透明是包括里面的元素的,不可能只有外面透明,里面不透明

css里边写透明样式怎么写

如果是用样式的话需要用到滤镜
style="filter:Alpha(Opacity=opacity, FinishOpacity=finishopacity,Style=style, StartX=startX,StartY=startY,FinishX=finishX,FinishY=finishY)"

说明:
Opacity:起始值,取值为0~100, 0为透明,100为原图。
FinishOpacity:目标值。
Style:1或2或3
StartX:任意值
StartY:任意值

语法如下:

filter:Alpha(Opacity="0",FinishOpacity="75",Style="2") 

但是因为滤镜的兼容性问题,最好是不要用,可以用 ps 做图的时候,把背景调一下透明度后导成 png 格式的图片就行了,如果透明的背景颜色一样的话,那么你可以切成 1px*1px 大小的 png 图片平铺,gif 只支持透明度 100% 也就是完全透明的图片,半透明的不支持,而 png 格式的图片则不存在什么问题,唯一会有问题的地方就只是 IE6 不兼容透明 png 格式而已。


写 CSS 样式的时候,恐怕最头疼的就是各个浏览器下的兼容性问题,即 CSS hack,不同的浏览器对 CSS 的解析结果是不同的,因此会导致相同的 CSS 输出的页面效果不同,这就需要 CSS hack来解决浏览器局部的兼容性问题。使用 CSS 、 hack将会使用你的 CSS 代码部分失去作用,然后借助条件样式,使用其原 CSS 代码在一些浏览器解析,而 CSS hack代码在符合条件要求的浏览器中替代原 CSS 那部分代码。

 CSS hack除了可以处理与浏览器不兼容的 CSS 代码,也能够让我们通过 CSS hack给不同版本的浏览器定制编写不同的CSS效果。

css hack

css hack基本概念

CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack 就是让你记住这个标准),以达到应用不同的 CSS 样式的目的,比如 .kwstu{width:300px;_width:200px;},一般浏览器会先给元素使用 width:300px; 的样式,紧接着后面还有个_width:200px; 由于下划线 _width 只有 IE6 可以识别,所以此样式在 IE6 中实际设置对象的宽度为200px,后面的把前面的给覆盖了,而其他浏览器不识别 _width 不会执行 _width:200px; 这句样式,所以在其他浏览器中设置对象的宽度就是 300px;

简单地讲, CSS hack 指各版本及各品牌浏览器之间对 CSS 解释后出现网页内容的误差(比如我们常说错位)的处理。由于各浏览器的内核不同,所以会造成一些误差就像 JS 一样,一个 JS 网页特效,在微软 IE6、IE7、IE8 浏览器有效果,但可能在火狐(Mozilla Firefox)谷歌浏览器无效,这样就叫做 JS hack ,所以我们对于 CSS 来说他们来解决各浏览器对 CSS 解释不同所采取的区别不同浏览器制作不同的 CSS 样式的设置来解决这些问题就叫作 CSS Hack。


CSS Hack常见的有三种形式:CSS 属性 Hack、CSS 选择符 Hack 以及 IE 条件注释 Hack, Hack 主要针对IE 浏览器。

1、属性级 Hack:比如 IE6 能识别下划线_和星号 * ,IE7 能识别星号 * ,但不能识别下划线_,而 firefox 两个都不能认识。

2、选择符级 Hack:比如 IE6 能识别 *html .class{},IE7能识别 *+html .class{} 或者 *:first-child+html .class{}。

3、IE 条件注释 Hack:IE条件注释是微软从 IE5 开始就提供的一种非标准逻辑语句。比如针对所有IE:<!–[if IE]><!–您的代码–><![endif]–>,针对 IE6 及以下版本:<!–[if lt IE 7]><!–您的代码–><![endif]–>,这类 Hack 不仅对 CSS 生效,对写在判断语句里面的所有代码都会生效。


PS:条件注释只有在 IE 浏览器下才能执行,这个代码在非 IE 浏览下被当做注释视而不见。可以通过IE条件注释载入不同的 CSS、JS、HTML 和服务器代码等。

提示:有个 CSS hack 三种常见形式的更多解释,你可以查阅《CSS3学习笔记》的“CSS hack合集”部分的内容。


各浏览器下 Hack 的写法

1、Firefox

@-moz-document url-prefix() { .selector { property: value; } }
上面是仅仅被Firefox浏览器识别的写法,具体如:

@-moz-document url-prefix() { .demo { color:lime; } }
支持Firefox的还有几种写法:

/* 支持所有firefox版本 */ #selector[id=selector] { property: value; } 或者: @-moz-document url-prefix() { .selector { property: value; } } /* 支持所有Gecko内核的浏览器 (包括Firefox) */ *>.selector { property: value; }

2、Webkit 内核核浏览器(chrome and safari)

@media screen and (-webkit-min-device-pixel-ratio:0) { Selector { property: value; } }
上面写法主要是针对Webkit内核的浏览器,如Google Chrome 和 Safari浏览器:

@media screen and (-webkit-min-device-pixel-ratio:0) { .demo { color: #f36; } }

3、Opera 浏览器

html:first-child>body Selector {property:value;} 或者: @media all and (min-width:0) { Selector {property: value;} } 或者: @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body Selector { property: value; } }

上面则是Opera浏览器的Hack写法:

@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body .demo { background: green; } }

4、IE9浏览器

:root Selector {property: value9;}
上面是IE9的写法,具体应用如下:

:root .demo {color: #ff09;}

5、IE9以及IE9以下版本

Selector {property:value9;}
这种写法只有IE9以及IE9以下版本能识别,这里需要注意此处“9”只能是“9”不能是别的,比如说“8”,不然会失去效果的,如:

.demo {background: lime9;}

css hack 区分

6、IE8浏览器

@media screen{

Selector {property: value;}     }


7、IE8以及IE8以上的版本

Selector {property: value;}
这种写法只有IE8以及IE8以上版本支持,如

.demo {color: #ff0;}

8、IE7浏览器

*+html Selector{property:value;} 或 *:first-child+html Selector {property:value;}
上面两种是IE7浏览器下才能识别,如:

*+html .demo {background: green;} 或者: *:first-child+html .demo {background: green;}

9、IE7及IE7以下版本浏览器

Selector {*property: value;}
上面的写法在IE7以及其以下版本都可以识别,如:

.demo {*background: red;}


10、IE6浏览器

Selector {_property/**/:/**/value;} 或者: Selector {_property: value;} 或者: *html Selector {property: value;}
具体应用如下:

.demo {_width/**/:/**/100px;} 或者: .demo {_width: 100px;} 或者: *html .demo {width: 100px;}
上面具体介绍了各种版本浏览器下如何识别各种的Hack写法,包括了IE6-9以及现代版本的浏览器写法。综合上面的所述,我们针对不同浏览器的Hack写法主要分为两种从CSS选择器和CSS属性上来区别不同的Hack写法。



慎用的CSS Hack

在 Web 页面制作中尽量不要使用 CSS Hack 来处理兼容问题。因为任何浏览器下出现渲染不一致都极有可能是我们自己的结构或样式不符合 W3C 的某些要求,或者说违背了浏览器的某些规则而造成的,所以我们应该尽量通过结构或 CSS 的修改来达到各浏览器渲染一致效果,除非到了万不得已情况下,才考虑CSS的Hack。

网上许多与 CSS Hack 相关的文章中说,在 CSs 的属性值和分号之间添加字符 ,可以实现对 IE 8 或  IE 9的 CSS hack (有的说,仅支持 IE8)。

网上的示例是这样的:

.css-hack {

    color: red; /* 其他浏览器显示红色 */

    color: blue; /* IE8、IE9 显示蓝色 */

    +color: green; /* IE7 显示绿色 */

    _color: brown; /* IE6 显示棕色 */

}

通过实际测试发现,关于使用字符 实现的上述 CSS Hack 有3点需要注意。

1、IE10 也能够识别添加了字符 的 CSS 属性值(笔者这里没有 IE 11,不知道 IE 11 是否也能识别)。

2、属性值和 之间不能有空格,有一个空格的话(例如:blue ),在 IE 8 中就失效了,仅对 IE 9/IE 10有效。

3、如果我们只想对 IE 8/IE 9进行CSS Hack 呢?这个时候,我们去掉后面两行与 IE6、IE7 有关的代码。

.css-hack {

    color: red; /* 其他浏览器显示红色 */

    color: blue; /* IE8、IE9 显示蓝色 */

}

这个时候,在 IE 6、IE 7 浏览器中,你会发现你看到的不是红色,而是黑色(也就是默认的字体颜色)!

这是因为一般浏览器的思路是,先过滤掉无效的css属性值,然后再从正确的属性设置中根据优先级获取最后面的css属性值。而 IE 6/7 浏览器不是先过滤掉无效的属性值,而是先根据优先级,获取最后面的 CSS 属性值,然后再来判断该属性值是否,无效就忽略掉。因此,如果按照网上所说,仅仅使用 来实现 IE 8+ 的 CSS Hack,则会对 IE6/7 中的显示效果造成破坏。你必须通过额外的css属性设置来复原IE6/7的样式。

因为,我们不能够简单地下结论说,使用 可以实现对 IE 8、IE 9 甚至 IE 10 +的 CSS Hack。

浏览器识别字符标准对应表

<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->

<!--[if IE]> 所有的IE可识别 <![endif]-->

<!--[if IE 6]> 仅IE6可识别 <![endif]-->

<!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->

<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->

<!--[if IE 7]> 仅IE7可识别 <![endif]-->

<!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->

<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->

<!--[if IE 8]> 仅IE8可识别 <![endif]-->

<!--[if IE 9]> 仅IE9可识别 <![endif]-->

从上表可以分析出以下几种情况:

1.大部分特殊字符 IE 浏览器支持,其他主流浏览器 firefox,chrome,opera,safari不支持 (opera 可识别除外)。
2. 9    :所有 IE 浏览器都支持
3. _和-  :仅 IE6 支持
4. *     :IE6、E7 支持
5.    :IE8、IE9 支持,opera 部分支持
6. 9  :IE8 部分支持、IE9 支持
7. 9  :IE8、IE9 支持


css hack兼容技巧

1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但 IE 不会.(可用 !important 解决)

2, 居中问题
①.垂直居中.将 line-height 设置为 当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)
②.水平居中. margin: 0 auto;(当然不是万能)

3, 若需给 a 标签内内容加上样式, 需要设置 display: block;(常见于导航标签)

4, FF 和 IE 对 BOX 理解的差异导致相差 2px 的还有设为 float的div在ie下 margin加倍等问题

5, ul 标签在 FF 下面默认有 list-style 和 padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)

6, 作为外部 wrapper 的 div 不要定死高度, 最好还加上 overflow: hidden.以达到高度自适应

7, 关于手形光标. cursor: pointer. 而hand 只适用于 IE


针对 firefox ie6 ie7 的 css 样式
现在大部分都是用 !important 来 hack,对于 ie6 和 firefox 测试可以正常显示,但是 ie7 对 !important 可以正确解释,会导致页面没按要求显示!找到一个针对 IE7 不错的 hack 方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。

现在写一个CSS可以这样:

#1 { color: #333; } /* Moz */

* html #1 { color: #666; } /* IE6 */

*+html #1 { color: #999; } /* IE7 */

那么在 firefox 下字体颜色显示为#333,IE6 下字体颜色显示为 #666,IE7 下字体颜色显示为#999。


CSS 布局中的居中问题


主要的样式定义如下:

body {TEXT-ALIGN: center;}

#center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; }

说明:


首先在父级元素定义 text-align: center; 这个的意思就是在父级元素内的内容居中;对于 IE 这样设定就已经可以了。


但在 mozilla 中不能居中。解决办法就是在子元素定义时候设定时再加上margin-right: auto;margin-left: auto;


需要说明的是,如果你想用这个方法使整个页面要居中,建议不要套在一个 DIV 里,你可以依次拆出多个div,
只要在每个拆出的 div 里定义 margin-right: auto;margin-left: auto; 就可以了。


盒模型不同解释

#box{ width:600px; //for ie6.0- width:500px; //for ff+ie6.0}

#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-}

浮动 IE 产生的双倍距离

#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略}

这里细说一下 block,inline 两个元素,Block 元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,…不可控制(内嵌元素);


#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的的效果 diplay:table;



IE 不认得 min-这个定义,但实际上它把正常的 widthheight 当作有 min 的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用 min-widthmin-height 的话,IE下面根本等于没有设置宽度和高度。比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:


#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}


css

页面的最小宽度


min-width 是个非常方便的 CSS 命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但 IE 不认得这个,而它实际上把 width 当做最小宽度来使。为了让这一命令在 IE 上也能用,可以把一个<div> 放到 <body> 标签下,然后为 div 指定一个类:


然后 CSS 这样设计:

#container{ min-width: 600px; width:expression(document.body.clientWidth < 600? “600px”: “auto” );}

第一个min-width是正常的;但第2行的 width 使用了 JavaScript,这只有IE才认得,这也会让你的 HTML 文档不太正规。它实际上通过 Javascript 的判断来实现最小宽度。


清除浮动

.hackbox{ display:table; //将对象作为块元素级的表格显示}或者.hackbox{ clear:both;}

或者加入 :after(伪对象),设置在对象后发生的内容,通常和 content 配合使用,IE 不支持此伪对象,非 IE 浏览器支持,

所以并不影响到 IE/WIN 浏览器。这种的最麻烦的……

#box:after{ content: “.”; display: block; height: 0; clear: both; visibility: hidden;}


属性选择器(这个不能算是兼容,是隐藏 CSS 的一个bug)


p[id]{}div[id]{}
这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的。



IE捉迷藏的问题


当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。


解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。



高度不适应


高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用
marginpadding 时。

例:

实例

#box {background-color:#eee; }

#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }


尝试一下 »

解决方法:在 P 对象上下各加 2个空的 div 对象 CSS 代码:.1{height:0px;overflow:hidden;}或者为 DIV 加上 border 属性。


都说用 DIV+CSS 布局来设计网站便于优化,容易被收录,那么你对 DIV+CSS 布局的用法是否了解?CSS 布局是网页html通过 DIV 标签 +CSS 样式表代码开发制作的(html)网页的统称。DIV+CSS 布局是现在非常流行的布局方法,替代了原来的表格布局。下面我们先来看下学习 DIV+CSS 布局的基本步骤:

DIV+CSS


一、认清学习的要求

1、弄清目的,首先要认识为什么要学习 CSS?
2、心态不能急,如果你很急躁,否则会很快丧失兴趣。
3、坚持,这个不是一到两天的事情,是一个漫长的过程(至少两个月)。


二、基础学习

1、了解 CSS 作用是什么?(即 CSS、html 和 JS 的关系是什么,HTML 结构重要性)
2、CSS 基础知识、CSS 属性样式
3、HTML

上面几点,一般都是很快的掌握了,也不需要做到精通,了解大概就可以。

差不多时候,开始在网上找一些 psd 设计稿,自己做做看,做完之后发现问题,并把他们进行总结。


三、学会分析别人网页布局

当你做 psd 设计的代码,发现问题,可能找不到答案或没有人帮你回答,也不要急,这时最好看看别人网页的布局结构,主要看 html 布局框架,进行借鉴(当然网上还有很多结构代码很槽糕)。然后了解美工图如何分析、如何使用 PS 工具切出需要的素材、如何使用这些切出的图片素材进行布局、布局技巧、兼容性解决与避免等。

总之:就是让自己布局时候能知道大的布局结构如何布局,建立布局思想与技巧。


四、代码的规范

当你看完很多别人的网页代码之后,你会发现,他们都有规范,这些规范网上有很多,你需要总结和背诵,当然不是死记硬背,主要在切图上多做多实践,熟了就能记住。


五、大量练习

练习是从始到终的,不要断,即使找一些简单的网页进行布局实践,开始可能开发很慢,会遇到很多小问题,也不急。


制作DIV CSS网页前思考布局:

首先我们拿到一张网页美工图片我们将从上下、上中下、左右、上中(中包括左右)下布局框架来思考。

下面通过一个实例讲解下 CSS 布局分析,我们以 DIV CSS5 列表页面分析 CSS 布局:

制作DIV CSS网页前思考布局

首先我们可以分析出我们 DIV CSS 布局重构此页面结构框架,我们可以看出是上、中、下结构,其中又包括了左右结构。

由此我们就要写此页面 CSS 和 html 时候就先从上到下从外到内原则写 CSS 与 html。

我们首先建一个 web 的文件夹并在此文件夹里新建 html 页面命名为 index.html,CSS 文件命名为index.css。这里有个诀窍就是可以导入模板方式来建 CSS 与 html 初始页面,然后将 CSS 文件引用到 html,再在 CSS 模板的基础上再写再添加 CSS。

以下是 index.html 的 html 代码:
以下为引用的内容:

实例

<div id="header">我是头部(上)</div> 

<div id="centers"> 

    <div class="c_left">我是中的左</div> 

    <div class="c_right">我是中的右</div> 

    <div class="clear"> </div> 

</div> 

<div id="footer">我是底部(下)</div> 


尝试一下 »

index.css 的CSS代码如下:
以下为引用的内容:

body,div,address,blockquote,iframe,ul,ol,dl,dt,dd,li,dl,h1,h2,h3,h4,h5,h6,p,pre,table,  

caption,th,td,form,legend,fieldset,input,button,select,textarea{margin:0;padding:0;  

font-weight:normal;font-style:normal;font-size:100%;font-family:inherit;}  

ol,ul,li{list-style:none;}  

img{border:0;}  

body{color:#000;background:#FFF;text-align:center;font:12px/1.5Arial,Helvetica,sans-serif;}  

.clearfix:after{clear:both;content:".";display:block;height:0pt;visibility:hidden;overflow:hidden;}  

.clear{clear:both;height:1px;margin-top:-1px;width:100%;}  

.dis{display:block;}  

.undis{display:none;}  

/*此上面代码是初始CSS模板,下面是新写CSS布局框架代码*/  

#header,#centers,#footer{width:100%;margin:0auto;  

clear:both;font-size:18px;line-height:68px;font-weight:bold;}  

#header{height:68px;border:1px solid #CCCCCC;}  

#centers{padding:8px0;}  

#footer{border-top:1px solid #CCCCCC;background:#F2F2F2;}  

#centers.c_left{float:left;width:230px;border:1px solid #00CC66;  

background:#F7F7F7;margin-right:5px;}  

#centers.c_right{float:right;width:500px;border:1px solid #00CC66;background:#F7F7F7}  

你可以考出此两段代码新建个试试。

按以下步骤来建设一个网站的页面:

1、顶部部分,其中包括了LOGO、MENU和一幅Banner图片;

2、页面中间部分,那就是我们的主体了,要求打开首页快速,所以我们在网站发布的信息设计为三列。

3、底部,包括一些版权信息。

根据以上设想,我们定义如下 div 的结构

DIV结构如下:
  
│body {} /*这是一个HTML元素*/
  
└#Container {} /*页面层容器*/
     
├#Header {} /*页面头部*/
     
├#MianBody {} /*页面主体*/
     
│ ├#mainbody-left {} /*主体页面左边*/
     
│ └#mainbody-center {} /*主体页面中间*/
│ └#MainBody -right{} /*主体页面右边*/
 
└#footer {} /*页面底部*/


用 DIV+CSS 做一个导航栏是非常容易的,而且我们可以通过
 CSS 来对导航栏的样式方便的作出调整。用div设置导航栏一般就用<ul>和<li>标签。

4、高度显示效果不同
一般情况下只需要使用 height: 100px; 即可,当显示效果不同时,则可以 _height: 100px; 来对 IE6 的高度进行设置。

5、嵌套效果不同.
有些情况下如果 div 中嵌套的图片大于外层 div 的高度,则 IE6 中对高度的设置始终无效,这时要注意对该css添加 overflow 属性,overloaw:hidden,则可隐藏超出边界的部分。

DIV+CSS网页布局常用的一些基础知识整理


一.文件命名规范

全局样式:global.css;
框架布局:layout.css;
字体样式:font.css;
链接样式:link.css;
打印样式:print.css;

二.常用类/ID命名规范

页 眉:header
内 容:content
容 器:container
页 脚:footer
版 权:copyright 
导 航:menu
主导航:mainMenu
子导航:subMenu
标 志:logo
标 语:banner
标 题:title
侧边栏:sidebar
图 标:Icon
注 释:note
搜 索:search
按 钮:btn
登 录:login
链 接:link
信息框:manage
……

常用类的命名应尽量以常见英文单词为准,做到通俗易懂,并在适当的地方加以注释。对于二级类/ID命名,则采用组合书写的模式,后一个单词的首字母应大写:诸如“搜索框”则应命名为“searchInput”、“搜索图标”命名这“searchIcon”、“搜索按钮”命名为“searchBtn“等等。


CSS书写规范

CSS书写规范及方法


一. 常规书写规范及方法

1. 选择 DOCTYPE:

XHTML 1.0 提供了三种DTD声明可供选择:

过渡的(Transitional):要求非常宽松的 DTD,它允许你继续使用 HTML4.01 的标识(但是要符合 xhtml 的写法)。完整代码如下:

XML/HTML代码

严格的(Strict):要求严格的 DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:


XML/HTML 代码

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>  

框架的(Frameset):专门针对框架页面设计使用的 DTD,如果你的页面中包含有框架,需要采用这种 DTD。完整代码如下:


XML/HTML代码

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“> 

理想情况当然是严格的 DTD,但对于我们大多数刚接触 web 标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种 DTD 还允许我们使用表现层的标识、元素和属性,也比较容易通过 W3C 的代码校验。


2. 指定语言及字符集:

为文档指定语言: XML/HTML代码

<html xmlns=”http://www.w3.org/1999/xhtml” lang=”en”>  

为了被浏览器正确解释和通过W3C代码校验,所有的XHTML文档都必须声明它们所使用的编码语言;

如常用的语言定义:


XML/HTML代码

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />  

标准的XML文档语言定义:


XML/HTML代码

<?xml version=”1.0″ encoding=” utf-8″?>  

针对老版本的浏览器的语言定义:


XML/HTML代码

<meta http-equiv=”Content-Language” content=” utf-8″ />  

为提高字符集,建议采用“utf-8”。


3. 调用样式表:

外部样式表调用:

页面内嵌法:就是将样式表直接写在页面代码的 head 区。 如:


XML/HTML代码

<style type=”text/css”><!– body { background : white ; color : black ; } –> </style>  

外部调用法:将样式表写在一个独立的 .css 文件中,然后在页面 head 区用类似以下代码调用。


XML/HTML代码

<link rel=”stylesheet” rev=”stylesheet” href=”css/style.css” type=”text/css” media=”all” />  

在符合 web 标准的设计中,推荐使用外部调用法,可以不修改页面只修改.css文件而改变页面的样式。如果所有页面都调用同一个样式表文件,那么改一个样式表文件,可以改变所有文件的样式。


4、选用恰当的元素:

根据文档的结构来选择 HTML 元素,而不是根据HTML元素的样式来选择。例如,使用P元素来包含文字段落,而不是为了换行。如果在创建文档时找不到适当的元素,则可以考虑使用通用的 div 或者是 span;

避免过渡使用 div 和 span。少量、适当的使用 div 和 span 元素可以使文档的结构更加清晰合理并且易于使用样式;

尽可能少地使用标签和结构嵌套,这样不但可以使文档结构清晰,同时也可以保持文件的小巧,在提高用户下载速度的同时,也易于浏览器对文档的解释及呈视;


5、派生选择器:

可以使用派生选择器给一个元素里的子元素定义样式,在简化命名的同时也使结构更加的清晰化,如:


XML/HTML代码

.mainMenu ul li {background:url(images/bg.gif;)}  


6、辅助图片用背影图处理:

这里的”辅助图片”是指那些不是作为页面要表达的内容的一部分,而仅仅用于修饰、间隔、提醒的图片。将其做背影图处理,可以在不改动页面的情况下通过CSS样式来进行改动,如:


XML/HTML代码

#logo {background:url(images/logo.jpg) #FEFEFE no-repeat right bottom;}  



7、结构与样式分离:

在页面里只写入文档的结构,而将样式写于css文件中,通过外部调用CSS样式表来实现结构与样式的分离。



8、文档的结构化书写:

页面CSS文档都应采用结构化的书写方式,逻辑清晰易于阅读。如:


XML/HTML代码

实例

#mainMenu {   

width:100%;   

height:30px;   

background:url(images/mainMenu_bg.jpg) repeat-x;   }   

#mainMenu ul li {   

float:left;   

line-height:30px;   

margin-right:1px;   

cursor:pointer;   } 


尝试一下 »


9、鼠标手势:

在XHTML标准中,hand只被IE识别,当需要将鼠标手势转换为“手形”时,则将“hand”换为“pointer”,即“cursor:pointer;”


二.注释书写规范

1、行间注释:

直接写于属性值后面,如:


XML/HTML代码

.search{   

border:1px solid #fff;/*定义搜索输入框边框*/   

background:url(../images/icon.gif) no-report #333;/*定义搜索框的背景*/   

}  



2、整段注释:

分别在开始及结束地方加入注释,如:


XML/HTML代码

/*=====搜索条=====*/   

.search {   

border:1px solid #fff;   

background:url(../images/icon.gif) no-repeat #333;   }   

/*=====搜索条结束=====*/  


css+div样式属性


三.样式属性代码缩写

1、不同类有相同属性及属性值的缩写:

对于两个不同的类,但是其中有部分相同甚至是全部相同的属性及属性值时,应对其加以合并缩写,特别是当有多个不同的类而有相同的属性及属性值时,合并缩写可以减少代码量并易于控制。如:


XML/HTML代码

#mainMenu {   

background:url(../images/bg.gif);   

border:1px solid #333;   

width:100%;   

height:30px;   

overflow:hidden;   

}   

#subMenu {   

background:url(../images/bg.gif);   

border:1px solid #333;   

width:100%;   

height:20px;   

overflow:hidden;   

}  


两个不同类的属性值有重复之处,刚可以缩写为:


XML/HTML代码

#mainMenu,#subMenu {   

background:url(../images/bg.gif);   

border:1px solid #333;   

width:100%;   

overflow:hidden;   

}   

#mainMenu {height:30px;}   

#subMenu {height:20px;}  



2、同一属性的缩写:

同一属性根据它的属性值也可以进行简写,如:


XML/HTML代码

.search {   

background-color:#333;   

background-image:url(../images/icon.gif);   

background-repeat: no-repeat;   

background-position:50% 50%;   

}   

.search {   

background:#333 url(../images/icon.gif) no-repeat 50% 50%;   

}  



3、内外侧边框的缩写:

在CSS中关于内外侧边框的距离是按照上、右、下、左的顺序来排列的,当这四个属性值不同时也可直接缩写,如:


XML/HTML代码

.btn {   

margin-top:10px;   

margin-right:8px;   

margin-bottom:12px;   

margin-left:5px;   

padding-top:10px;   

padding-right:8px;   

padding-bottom:12px;   

padding-left:8px;   

}  

则可缩写为:


XML/HTML代码

.btn {   

Margin:10px 8px 12px 5px;   

Padding:10px 8px 12px 5px;   

}  

而如果当上边与下边、左边与右边的边框属性值相同时,则属性值可以直接缩写为两个,如:


.btn {   

margin-top:10px;   

margin-right:5px;   

margin-bottom:10px;   

margin-left:5px;   

XML/HTML代码

缩写为:


XML/HTML代码

.btn {margin:10px 5px;}  

而当上下左右四个边框的属性值都相同时,则可以直接缩写成一个,如:


XML/HTML代码

.btn {   

margin-top:10px;   

margin-right:10px;   

margin-bottom:10px;   

margin-left:10px;   

}  

缩写为:


XML/HTML代码

.btn{margin:10px;}  



4、颜色值的缩写:

当RGB三个颜色值数值相同时,可缩写颜色值代码。如:


XML/HTML代码

.menu { color:#ff3333;}  

可缩写为:


XML/HTML代码

.menu {color:#f33;}  



四.hack书写规范 

因为不同浏览器对W3C标准的支持不一样,各个浏览器对于页面的解释呈视也不尽相同,比如IE在很多情况下就与FF存在3px的差距,对于这些差异性,就需要利用css 的hack来进行调整,当然在没有必要的情况下,最好不要写hack来进行调整,避免因为hack而导致页面出现问题。

1、 IE6、IE7、Firefox之间的兼容写法:

写法一:


XML/HTML代码

IE都能识别*;标准浏览器(如FF)不能识别*;   

IE6能识别*,但不能识别 !important,   

IE7能识别*,也能识别!important;   

FF不能识别*,但能识别!important;   

根据上述表达,同一类/ID下的CSS  hack可写为:   

.searchInput {   

background-color:#333;/*三者皆可*/   

*background-color:#666 !important; /*仅IE7*/   

*background-color:#999; /*仅IE6及IE6以下*/   

}  

一般三者的书写顺序为:FF、IE7、IE6.



写法二:

IE6可识别“_”,而IE7及FF皆不能识别,所以当只针对IE6与IE7及FF之间的区别时,可这样书写:


XML/HTML代码

.searchInput {   

background-color:#333;/*通用*/   

_background-color:#666;/*仅IE6可识别*/   

}  


写法三:


XML/HTML代码

*+html 与 *html 是IE特有的标签, Firefox 暂不支持。   

.searchInput {background-color:#333;}   

*html .searchInput {background-color:#666;}/*仅IE6*/   

*+html .searchInput {background-color:#555;}/*仅IE7*/  


屏蔽IE浏览器:

select 是选择符,根据情况更换。第二句是 MAC上safari 浏览器独有的。


XML/HTML代码

*:lang(zh) select {font:12px  !important;} /*FF的专用*/   

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


IE6可识别:

这里主要是通过CSS注释分开一个属性与值,注释在冒号前。


XML/HTML代码

select { display /*IE6不识别*/:none;}


IE的if条件hack写法:

所有的IE可识别:


XML/HTML代码

<!–[if IE]> Only IE <![end if]–>  

只有IE5.0可以识别:   

<!–[if IE 5.0]> Only IE 5.0 <![end if]–>  

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

<!–[if gt IE 5.0]> Only IE 5.0+ <![end if]–>  

仅IE6可识别:   

<!–[if lt IE 6]> Only IE 6- <![end if]–>  

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

<!–[if gte IE 6]> Only IE 6/+ <![end if]–>  

仅IE7可识别:   

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


2、清除浮动:

在 Firefox 中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除浮动的 HACK 来对父级做一次定义,那么就可以解决这个问题。


XML/HTML 代码

select:after {   

content:”.”;   

display:block;   

height:0;   

clear:both;   

visibility:hidden;   

}


很多初学的朋友学完HTML后开始学习CSS,在学习中常常遇到 div+css,但是不知道什么意思。网上很多资料说div就是取代〈table〉的,并且搜索引擎喜欢 div,更容易被搜索引擎收录,反正很多。但到底 div+css(或者div)是什么意思?为什么用它?为什么不用〈table〉呢?这样,我们先科普一下 css 是什么,然后再一起了解下 div+css 是什么。 css 是 Cascading Style Sheets (层叠样式表)的简称,css 语言是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语言)。


div+css

在学习 css 之前你应该掌握哪些基础知识

1.什么是网页,什么是超文本语言(html)。

2.会使用 Dreamweaver 等常用的网页编辑器。

Dreamweaver 是现今最好的网站编辑工具之一,而 Dreamweaver8 增加的对 css 的支持更是你容易得来使用 css,用它来给制作网页的 css 样式表会更简单、更方便。

CSS 是什么

CSS 就是 Cascading Style Sheets,中文翻译为“层叠样式表”,简称样式表,它是一种制作网页的新技术。

网页设计最初是用HTML标记来定义页面文档及格式,例如标题<h1>、段落<p>、表格<table>、链接<a>等,但这些标记不能满足更多的文档样式需求,为了解决这个问题,在1997年W3C(The World Wide Web Consortium)颁布 HTML4 标准的同时也公布了有关样式表的第一个标准 CSS1, 自CSS1的版本之后,又在1998年5月发布了 CSS2 版本,样式表得到了更多的充实。W3C 把 DHTML(Dynamic HTML)分为三个部分来实现:脚本语言(包括JavaScript、Vbscript等)、支持动态效果的浏览器(包括 Internet Explorer、Netscape Navigator等)和CSS样式表。

怎样使用CSS

css 层叠样式,层叠指的是上级标签的样式会自动继承到其所有下级标签,如针对<body>设置的标签选择器所设的字体样式会自动应用到<body>下的<p>中,除非<p>重写了相关样式将其覆盖。

css 语义化的命名是指用易于理解的名称对 html 标签附加的 class 或 id 命名,如对于页面上方的<div>,可将其 id 设为 header;页面下方的<div>设为 footer,可以增强 CSS 的可维护性。

基本上层叠的意思就是“继承”、“权重”、“覆盖”,通过良好的层级命名更好的实现效果,更少的代码,更多的功能


 比如下面的一个代码我们这样写:

<div class="box">

<div class="h2">这是区块标题</div>

<div class="bd">这是区块内容</div>

<div> 

使用 CSS 样式,通常有3种方法:元素中直接添加样式、从页面头部<style>元素中调用、采用链接的形式调用。其中元素中直接添加样式优先级最高、从页面头部调用次之、采用链接外部CSS样式最低。


你可以在你的 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>

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


w3c

css语法基础

CSS 的定义是由三个部分构成:选择符(selector),属性(properties)和属性的取值(value)。

基本格式如下:

selector {property: value;}

(选择符 {属性:值})

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

body {color: black;}

选择符 body 是指页面主体部分,color 是控制文字颜色的属性,black是颜色的值,此例的效果是使页面中的文字为黑色。

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

p {font-family: "sans serif";}

(定义段落字体为sans serif)

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

p {text-align: center; color: red;}

(段落居中排列;并且段落中的文字为红色)

为了使你定义的样式表方便阅读,你可以采用分行的书写格式:

p

{ text-align: center;

color: black;

font-family: arial; }

(段落排列居中,段落中文字为黑色,字体是arial)

2. 选择符组

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

h1, h2, h3, h4, h5, h6 { color: green; }

(这个组里包括所有的标题元素,每个标题元素的文字都为绿色)

p, table{ font-size: 9px; }

(段落和表格里的文字尺寸为9号字)

效果完全等效于:

p { font-size: 9pt; }

table { font-size: 9pt; }


3. 类选择符

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

p.right {text-align: right;}

p.center {text-align: center;}

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

<p class="right"> 这个段落向右对齐的

</p> 

<p class="center">

这个段落是居中排列的

</p>

注意:类的名称可以是任意英文单词或以英文开头与数字的组合,一般以其功能和效果简要命名。

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

.center {text-align: center;}

(定义.center的类选择符为文字居中排列)

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

<h1 class="center">

这个标题是居中排列的

</h1>

<p class="center">

这个段落也是居中排列的

</p>

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

4. ID选择符

在HTML页面中ID参数指定了某个单一元素,ID选择符是用来对这个单一元素定义单独的样式。ID选择符的应用和类选择符类似,只要把CLASS换成ID即可。将上例中类用ID替代:

<p id="intro">

这个段落向右对齐

</p>

定义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; }


css

5. 包含选择符

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

table a

{font-size: 12px;}

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

6. 样式表的层叠性

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

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

……

<div>

<p>

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

</p>

</div>

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

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

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

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

p {color: blue;}

……

<div>

<p>

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

</p>

</div>

我们可以看到段落里的文字大小为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 */

}


div+css是什么

一句话解释:div 是框架,css 是样式,用来装饰框架。JS 让它们动起来。再说详细点,div就是给整个网页布局,css 就是负责控制div的样式,想让 div 在哪里怎么显示,都可以通过 css 来实现,简单的说网页布局就像盖房子,div 负责把这栋房子盖起来,而 css 负责告诉他怎么盖!
table

div是什么

1、DIV是html其中一个常用标签,如span、table、h1等之类标签

2、在HTML中DIV标签我们用的最多,具有代表性

3、div配合css类,布局出网页

div语法

<div>内容</div>
<div class="divcss5">内容</div>
<div id="divcss5">内容</div>

为什么用div+css取代〈table〉

很久很久以前,web 工程师通过 table 进行页面布局(现在Google 的 picasa 等应用还能找到table布局应用的例子),现在页面布局大都推荐 div+css 方式。 

在WEB前端开发中,HTML,CSS,JS 这三家三驾马车分别代表着结构,展示,和交互。在 web1.0的时代,页面的逻辑并不是特别复杂,对用户体验的要求也不是很高,table被大量开发者用来做布局元素,横跨结构和展示两个部分,是很“重”的。

但是在如今 web 前端逻辑越来越复杂,用户体验要求越来越高的情况下,对这三者的解耦是必须的。此时再用 table 拿来做布局就不太合适了,因为 table 标签的语言根本不是用来做布局的,而是用来传递数据的。而 div+css 是符合解耦这一思想的,div 用来控制布局,css 用来控制样式。好处从小了说是整个页面的代码组织结构更合理,耦合度更低,从大了说是更利于前端开发的深度分工和复杂合作。

所谓的 div+css 是指通过 css 控制 div 的布局。其实这儿 div 可以理解为统称,实际应用的不仅是div,还有p,span,img,table 等任意节点的定位都可以通过 css 来控制。 

简要对比一下: 

1、div+css 相对于 table 更为灵活,用 table 布局,代码臃肿。 

2、语义性问题。从语义上来说,table 应该只是表格数据的容器,不应该是布局的工具。 

3、样式渲染问题。table 布局要等内容全部加载完毕后才渲染样式,如果用户网速不好,这样用户体验会很差。

DIV+CSS布局该怎么学?基本流程及实例介绍


css 是一个网页的外衣,网页好不好看取决于 css 样式,而布局是 css 中比较重要的部分,当产品把一个需求设计交到手中,我首先要做的是一点点的解剖这些需求,首先想到的是 html 的结构,根据要兼容的浏览器,数据的拼接,代码的可维护性,扩展性来选择 css 的布局方法。有时候,一个好的布局可以减少很多代码,用 css 处理网页布局的时候有很多技巧性的东西,下面就给大家介绍一些 css 布局技巧实例及 css 布局模型。


css的基础布局方法

1.块区域介绍

<body>

  <div>

   <p>这是一个段落.</p>

  </div>

 </body>

p 元素的包含块是 div 元素,因为作为块级元素,表单元格或行内元素,这是最近的祖先元素,类似的,div 的包含块是 body. 因此,p 的布局依赖于 div 的布局,而 div 的布局则依赖于 body 的布局。

块级元素会自动重启一行


2. 块级元素
正常流布局

块级元素

一般的,一个元素的width被定义为从左内边界右内边界height则是从上内边界下内边界的距离。

不同的宽度,高度,内边距和外边距相结合,就可以确定文档的布局。


水平布局

简单规则,正常流中块级元素框的水平部分 总和 就等于父元素的 width . 假设一个div中有两个段落,这两个段落的外边距设置为 1 em,段落内容宽度 width 在加上其左,右内边距,边框或外边距加在一起正好是 div 内容的 width.


7大属性:margin-left, border-left, padding-left, width, padding-right, border-right, margin-right

这 7 个属性的值加在一起必须是父块元素的 width 值. ( 其中 margin-left, margin-right, width 可以设置成auto ) 设置成 auto, 会按照以上规则自动匹配到父块的宽度,例如 7个属性的和必须为 400像素,没有设置内边距或边距 ( 默认为 0) 而右外边距和width设置为100px, 左外边距为  auto,那么左外边距的宽度将是200px. 可以用 auto 弥补实际值与所需综合的差距。注:如果3个可以设置 auto,都没设置成 auto,而且宽度加在一起还不够父块区域的宽度的话,会默认将 margin-right 设置成 auto 来满足总和与父块相等的要求。

如果两个外边距设置成 auto,那么,它们会是等长的,因此将元素在其父亲元素中居中。

如果这3个属性都设置成auto, 那么, 外边距会是0,而让 width  尽可能的长。

可以使用百分数,但是边框的宽度不能是百分数。

垂直布局
7大属性:margin-top, border-top, padding-top, height, padding-bottom, border-bottom, margin-bottom , 同样,这7个属性的值的总和是父元素 height 值。

其中 , margin-top, height, margin-bottom 也可以设置成 auto. ( 如果 margin-top, margin-bottom设置成 auto, 那么它们就会自动设置成 0 ).

3.浮动与定位( 确认基本布局 )

(1) 浮动
一个元素浮动时,其他内容会“环绕”该元素,浮动元素要设置一个width.

float ( left , right , none ) , none 的情况一般用在文档内部,用来覆盖式样表,一般很少使用 none.

浮动元素会自动生成一个块级框。

浮动元素规则
浮动元素不能超过包含它的块的左右边界。(1,2 左右边界受限 )

浮动元素规则

浮动元素之前如果出现浮动元素,则必须在该浮动元素之后(不能覆盖 ) ( 2 左边受限 )

左边受限

如果浮动元素加一起太宽,会自动向下。。(宽度受限 )

宽度受限

垂直方向要顶头不能超过块区域,同样不能超过在它上面的浮动元素。( 上边界受限 )

上边界受限

第一个浮动元素之后,第二个在它的下边,因为他们,第3个在它的右边。( 2 上边受限 )


浮动元素的顶端,不能比之前所有浮动元素或块级别元素的顶端更高 ( 顶端受限 )


顶端受限

浮动元素之间左右的边界不能覆盖,如下1,2,3, 之间不能覆盖 ( 元素之间受限 )

元素之间受限

浮动元素会尽可能高的放置

浮动元素

浮动元素会尽可能向左向右

向左向右

clear , 可以防止指定了 clear 元素的两边存在浮动元素

(2) 定位
利用定位,可以准确的定义元素框相对于其正常位置应该出现在哪里,或者相对于父元素,另一个元素甚至浏览器窗口。

position : static | relative | absolute | fixed

static : 元素框正常生成

relative : 元素框偏移某个距离

absolute : 元素框从文档流完全删除,并相对于其包含块定。包含块可能是文档中的另一个元素或初始包含块。

fixed : 类似 absolute,不过其包含块是视窗本身。

包含块:
根元素( html或body ) , 初始包含块是一个视窗大小的矩形.

非根元素 :

- 非根元素, 如果其 positionrelative 或  static, 则包含块由最近的块级框,表单元格或行内块构成。

- 非根元素, 如果其 positionabsolute , 包含块为最近的 position值不是 static的祖先元素

这里有一点很重要,元素可以定位到其包含块的外面。

css布局技巧

1、多元素水平居中


效果: 

多元素水平居中

上图显示效果为多元素水平居中,即无论元素(小黑框)基数为多少,它们都能作为一个整体,水平居中。

在网站布局中,很多时候,子元素中使用行内元素如span或块元素li标签且标签个数不定,而我们又想让这一块不管个数有多少个(子元素的总体宽度不定),始终都能居中显示。这就需要设置子元素display:inline-block。同时,根据display:inline-block的属性,子元素本身具备inline的特性,因此父元素需要设置text-align:center,来实现子元素作为一个整体在父元素中水平居中。

main{

  text-align:center;

}

div{

  display:inline-block;

  *display:inline;/*hack IE*/

  *zoom:1;/*hack IE*/

}

使用display:inline-block属性,可以使行内元素或块元素能够不加float属性就可以定义自身的宽、高,同时又能使该元素在父元素居中显示。

在内联元素上定义display:inline-block属性,发现IE6、IE7中的显示效果同其它浏览器一致,但事实是ie7及更低版本的ie浏览器不支持display:inline-block这个属性。 

在IE下,display: inline-block只是触发了元素的layout。比如将display: inline-block设置到div上,只能保证这个div拥有块元素的特征(可以设置宽度,高度等),但还是会产生换行。接下来要设置display: inline,使其不产生换行。将display:inline-block;display:inline;写在同一个样式上,inline-block属性是不会触发元素的layout的,因此我们还要额外加上 zoom:1来触发layout

除了以上所提到的有效方法之外,还有另外一种方法:

先使用 display:inline-block 属性触发块元素,然后再定义 display:inline,让块元素呈递为内联对象(两个display 要先后放在两个 CSS 样式声明中才有效果,这是 IE 的一个经典 bug ,如果先定义了 display:inline-block,然后再将 display 设回 inlineblocklayout 不会消失)。

div {display:inline-block;...}div {*display:inline;}

但是要注意的是,display:inline-block元素间会产生多余空白。解决方法:父元素定义font-size:0 去掉行内块元素水平方向空白;子元素定义vertical-align 属性去掉行内块元素垂直方向空白。


提示:如果您希望设置元素的水平垂直定位,那么您可以参考本站的“CSS如何使元素水平垂直定位”部分的内容!

2、栏栅化布局

效果:

栏栅化布局

display: flex;

flex-direction: column;//上面两行等同于flex-flow:colomn

flex-wrap: wrap;// 显示 wrap一行显示不完的时候换行

height: 440px;

width: 660px;

一个Flexbox布局是由一个伸缩容器(flex containers)和在这个容器里的伸缩项目(flex items)组成。

伸缩方向与换行(flex-flow)

伸缩容器有一个CSS属性“flex-flow”用来决定伸缩项目的布局方式。

如果伸缩容器设置了“flex-flow”值为“row”,伸缩项目排列由左向右排列。

flex-flow

如果flex-flow值设置为column,伸缩项目排列由上至下排列。

column

制作一个20%、60%、20%网格布局

.main-content {

      width: 60%;

}

.main-nav,.main-sidebar {

     -webkit-box-flex: 1;      /* OLD - iOS 6-, Safari 3.1-6 */

      -moz-box-flex: 1;         /* OLD - Firefox 19- */

      width: 20%;               /* For old syntax, otherwise collapses. */

      -webkit-flex: 1;          /* Chrome */

      -ms-flex: 1;              /* IE 10 */

      flex: 1;                  /* NEW, Spec - Opera 12.1, Firefox 20+ */ }


3、未知高度多行文本垂直居中


方法一,使用display:inline-block+伪元素:http://codepen.io/floralam/pen/WbBrwV?editors=110

未知高度多行文本垂直居中

.container{

   position: fixed;

    left: 0;

    top:0;

    height: 100%;

    width: 100%;

    text-align: center;

}

.mask:after{

    content: " ";

    display: inline-block;

    vertical-align: middle;

    height: 100%

}

.dialog{

    display: inline-block;

    border: 3px solid lightblue;

}

box 容器通过after或者before 生成一个高度 100% 的「备胎」,他的高度和容器的高度是一致的,相对于「备胎」垂直居中,在视觉上表现出来也就是相对于容器垂直居中了。


 方法二(感谢超级课程表胡晋哥哥的提示),使用display:table-cell:


http://codepen.io/floralam/pen/yNeMPg

通过display转化成为表格的形式,再采用垂直居中的方法得到需要的结果。

display:table    此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。    

display:table-cell 此元素会作为一个表格单元格显示(类似<td> <th>


方法三(感谢超级课程表胡晋哥哥的提示),flexbox布局:


http://codepen.io/floralam/pen/yNeMvM

flexbox属性:

伸缩容器:一个设有display:flexdisplay:inline-flex的元素
伸缩项目:伸缩容器的子元素
主轴、主轴方向:用户代理沿着一个伸缩容器的主轴配置伸缩项目,主轴是主轴方向的延伸。
主轴起点、主轴终点:伸缩项目的配置从容器的主轴起点边开始,往主轴终点边结束。
主轴长度、主轴长度属性:伸缩项目的在主轴方向的宽度或高度就是项目的主轴长度,伸缩项目的主轴长度属性是widthheight属性,由哪一个对着主轴方向决定。
侧轴、侧轴方向:与主轴垂直的轴称作侧轴,是侧轴方向的延伸。
侧轴起点、侧轴终点:填满项目的伸缩行的配置从容器的侧轴起点边开始,往侧轴终点边结束。
侧轴长度、侧轴长度属性:伸缩项目的在侧轴方向的宽度或高度就是项目的侧轴长度,伸缩项目的侧轴长度属性是「width」或「height」属性,由哪一个对着侧轴方向决定。


另外,对于单行文本,设置line-height=height代码更加简洁:


http://codepen.io/floralam/pen/eNJvyE

父元素设置宽度高度,然后设置属性

text-align:center; /* 水平居中 */
line-height: 300px; /* line-height = height */


提示:如果你想要深入了解flexbox布局,请参考“CSS3 Flexbox属性与弹性盒模型”部分的内容。

4、多栏自适应布局


对于移动设备浏览器:http://codepen.io/floralam/pen/NPVwgz?editors=110

.container{

  display:-webkit-box;

}

.left{

  -webkit-box-flex:1;

}

.right{

  -webkit-box-flex:1;

}

实现左右两侧元素,右侧元素的文字不会溢出到左侧位置。
多栏自适应布局

1)让左边的图片左浮动或者绝对定位,

http://codepen.io/floralam/pen/wBbPPj

.right{

    margin-left: 150px;

}


2)让左边的图片左浮动或者绝对定位,

http://codepen.io/floralam/pen/gbJogQ

.right{

  overflow:hidden;/*让右侧文字和左侧图片自动分栏*/

}


3)左侧图片设置为左浮动,

http://codepen.io/floralam/pen/bNyaaX?editors=110

.right{

  display: table-cell;/*让右侧文字和左侧图片自动分栏*/

}


两栏或多栏自适应布局的通用类语句是(block水平标签,需配合浮动):

http://codepen.io/floralam/pen/vEwpjV

.cell{

  padding-right:10px;

  display: table-cell;

  *display: inline-block;

  *width: auto;

}


浮动

5、强制不换行

white-space:nowrap;

自动换行

word-wrap: break-word; //性允许长单词或 URL 地址换行到下一行

word-break: normal; //让浏览器实现在任意位置的换行

word-wrap是控制换行的。break-word 是控制是否断词的。


强制英文单词断行

div{

  word-break:break-all;

}

 

6、li超过一定长度,以省略号显示

http://codepen.io/floralam/pen/zxQjrK

nowrap li{

   white-space:nowrap;

   width:100px;

   overflow:hidden;

   text-overflow: ellipsis;

}


7、左侧导航

左侧导航

.nav{

  position:relative;

  float:left;width:190px;

  margin-right:-190px;

  background:lightblue;

}

.container{

  float:right;

  width:100%;

  background:pink;

}

.content{

  margin-left:200px;

}


8、 修复侧边栏

在外容器的添加导航和主内容,当导航和主内容的宽度加上内外边距的数值大于外容器的宽度减去内边距的值,会导致导航和主内容(其中一个,html代码排后面的元素)被挤下。

修复侧边栏

http://codepen.io/floralam/pen/XJLRYq?editors=110


解决方案:

1) Section元素上使用box-sizing:border-box;模拟IE6中,使得内元素的宽度为width的值,而非width加上paddingmargin的值。


2)width:-moz-calc(75% -1rem * 2);width:-webkit-calc(75% - 1rem * 2); width: calc(75% - 1rem * 2); width属性中减去padding


3)http://codepen.io/floralam/pen/yydPOE

在元素内部增加一个额外的容器,并将padding放在这个新增的内部容器中,这是一种修复方法,而且得到众多浏览器支持。


9、css描绘三角形

http://codepen.io/floralam/pen/azgGmZ

很多关于使用css3来描绘特定图像,使用代码而非图片实现(多座小山包,返回顶部)的题目,都离不开描绘三角形。


10、清除浮动的技巧

清除浮动
在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(floatleftright)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

1)添加最后一个元素<div style ="clear:both"></div>


2) 父元素设置overflow: hidden;


3) 使用CSS的:after伪元素

通过CSS伪元素在容器的内部元素最后添加了一个看不见的空格"020"或点".",并且赋予clear属性来清除浮动。需要注意的是为了IE6和IE7浏览器,要给clearfix这个class添加一条zoom:1;触发haslayout


图片的居中显示 css 有很多方法,但在很多情况下有的方法无效,这是件很头疼的事情,比如

一般设置图片属性

text-align:center

水平居中,但这个方法经常无效,

很多前端工程师都有研究过或者说是搜索过 

CSS

 图片居中方法吧。

但其实 CSS 图片居中有多种不同的情况,也有多种不同的解决方法,具体方法如下所示:

图片居中又分为水平居中和垂直居中

提示:在你开始阅读以下内容之前,你可以先了解CSS图片的基础内容。


一、水平居中:


1、单独文字垂直居中我们只需要设置 CSS 样式line-height属性即可。


2、文字与图片同排,在设置div高度同时再对此 CSS 样式的图片“img”样式设置​vertical-align:middle​垂直居中属性,如:​ img{vertical-align:middle;}​ 。


3 不确定宽度的块级元素设置水平居中的方法


(1)是使用​ table​ 作为容器的方法来实现。当然不大推荐使用这种方法,因为添加了无意义的标签。这里就稍微介绍一下吧。​Table​ 标签本身并不是块级元素,当我们不设置​table​的宽度的话,他里面的宽度是由他内部元素的宽度撑起来的。但即使我们没有设置​table​的宽度,直接设置​table​的外边距​margin:0 auto;​就可以实现水平居中了!这样我们就可以通过设置​table​水平居中,间接使里面的内容居中。

(2)相对于用​table​的方法的好处是不用增加无语义标签,简化标签嵌套深度。这个思路是这样的,通过改变块级元素的​display​属性值为​inline​类型,然后设置​text-align:center​来实现居中。这种方法也有一定不妥之处就是把块级元素改为行内元素后,行内元素比块元素少了一些功能。比如说设定长宽值等,在项目运用中可能会有一些限制,大家可以自行选择。

(3)通过给父元素设置浮动​float​,再设置父元素的​position​属性为​relative​和​left:50%;​子元素设置​position:relative​和​left:-50%​来实现水平居中。这个好处是可以保留块级元素仍然是以​display:block​的形式显示,不会添加无意义的标签,不添加嵌套深度。确点是设置了​position:relative;​带来了一些副作用。下面是第三种方法的实例代码,放到​body​标签里面就可以了。


二、垂直居中:


对这个CSS居中问题,我们可以使用设置背景图片的方法。举例:


body {BACKGROUND: url(”图片文件”) #FFF no-repeat center;}


关键就在于这个​center​属性,它表示让该背景图片在容器中居中。你也可以把​center​换成​top left​或者直接写上数字来调整它的位置。


方法一: 

实例

 div {

   width:500px;

   height:500px;

   border:1px solid #666;

   overflow:hidden;

   position:relative;

   display:table-cell;

   text-align:center;

   vertical-align:middle;}


尝试一下 »

方法二:

实例

div p {

 position:static;

 +position:absolute;

 top:50%

    }

img {

  position:static;

  +position:relative;

  top:-50%;left:-50%;

  vertical-align:middle

}


尝试一下 »

方法三:

实例

img {

position:static;

+position:relative;

top:-50%;left:-50%;

vertical-align:middle; }


尝试一下 »

方法四:

实例

* {margin:0;padding:0;}

div {

  width:500px;border:1px solid #666;

  height:500px;

  background:url("/statics/images/w3c/intro.png") center no-repeat;}


尝试一下 »


三、css图片居中用text-align:center无效怎么回事?

实例

div{

    border:1px solid red;

    margin:20px;

    text-align:center;

}


尝试一下 »


四、如何让图片在DIV中水平和垂直两个方向都居中?

方法一:

思路:利用​text-align​属性将图片水平居中,然后设置​padding-top​的值使其垂直居中。


结构如下:

<div>

<img src="images/tt.gif" width="150" height="100" />

</div>


CSS样式如下:

div {width:300px; height:150px; background-color:#CCC; border:#000 1px solid; text-align:center; padding-top:50px;}


运行结果如下:


图片居中


释义:

图片的尺寸为150x100px,DIV的大小为300x200px;


background-color:#CCC; border:#000 1px solid;为DIV加个边框和背景色,便于观察效果。


text-align:center​,实现图片的水平居中;​padding-top:50px​,50px这个数值是经过计算得到的,​padding-top​的值具体算法如下:(DIV的高度 – 图片的高度)/2,但这里要注意,根据盒模型原理,我们还要将DIV原来的高度200减去​padding-top​的值,这样显示的才是正确的,否则DIV会变高。


方法二:
思路:只用​padding​属性,通过计算求得居中

结构代码同上;

CSS样式如下:

div {width:225px; height:150px; background-color:#eee; border:#000 1px solid; padding-top:50px; padding-left:75px;}

备注:这里DIV的宽高计算都遵循盒模型原理,计算方法同上。


方法三:
思路:利用图片的​margin​属性将图片水平居中,利用DIV的​padding​属性将图片垂直居中。

结构代码同上;

CSS代码如下:

div {width:300px; height:150px; background-color:#eee; padding-top:50px; border:#000 1px solid;}

img {display:block; margin:0 auto;}

备注:

Img​是内联元素,要设置其​margin​属性使其居中,就要将其转换为块元素​display:block;​然后利用​margin:0 auto;​实现图片的水平居中;(有的设计师为图片再加个 div 标签,然后通过 div 标签的​margin​实现居中,也可以,不过,在结构中就又多了对 div,相对麻烦点)至于垂直居中的方法和前面的都一样,就不再重述。

以上方法都是有前提的,就是必须知道 DIV 与图片的尺寸,否则无法完成垂直居中的效果。


用一行css居中并裁剪图片的方法

设置图片的裁剪尺寸非常简单,你只需在 CSS 里使用这行代码:

img {

     object-fit: cover;

}

就是这样。不需要语义、包装 div 或者其他没意义的代码。

这种技术能很好地把大小不合适的头像图片裁剪为正方形或者圆形的图片。以下面那只熊的宽图片来举例。一旦把 ​object-fit:cover ​技术应用在这种图片上,并且设置好宽和高,图片自己就会进行裁剪和居中。


图片居中裁剪

object-fit:cover​的裁剪方式和​background-size:cover​的完全相同,不过它是用来为 imgs、videos 和其他的媒体标签设置样式的,而不是给背景图片设置样式。
相当多的最新浏览器都支持 object-fit 技术,并且还有 polyfill 项目让你能在更老的浏览器(IE8+)里使用该技术。


如今,淘宝撑起了中国电商的半边天,淘宝店铺多如麻,淘宝竞争越来越激烈,除了大打价格战就是靠精美的店铺装修来吸引浏览者的驻足。淘宝导航CSS代码相信很多店铺经营者都懂得,但是如何运用CSS代码做出精致的淘宝导航却是很多人都不清楚的,导航对于买家来说是指路灯,这样一看就能出导航的重要性了。有时候看到别人家的店铺导航栏好有个性,也想照着做一个,那么应该怎么操作呢?那么下面就给大家整理一些超好用的淘宝css导航代码及使用方法和技巧。


让别人的导航栏CSS代码为你所用的方法

1.首先找到别人店铺的首页,右键单击导航栏空白处,查看源代码。

查看源代码

2.打开以后看到的代码


如果没有找到这个标识说明这是用 sdk 高级模版装修的,所以就没有代码了。

找到这几个标识,这里就是我们要找的 CSS 文件。下面的就是我们要找的 CSS 文件。跟着我们将它用浏览器打开,或者下载个 notepad 程序,双击打开就可以看到相应的代码。


代码


3.打开文件,点击“替换”


替换


4.然后复制下面这段代码 #page#content.tshop-pbsm-shop-nav-ch
  

粘贴进查找内容框里,替换为后面的框不要填写,直接点击"全部替换"按钮。那么,这样的 CSS代码就可以为我们所用了。


粘贴代码

5.最后,我们把 CSS 代码做好后,粘贴到自己的店铺里,却发现分类是没有底色的。解决方法不难,我们只需要设置一下页头背景就可以了。

淘宝导航栏

淘宝 CSS 导航参考代码

以下文字内容可以一同复制使用,不会影响到使用效果

  • /* 导航条背景色*/    .skin-box-bd .menu-list{background: none repeat scroll 0 0 #00ad08;}
  • /*首页/店铺动态背景色*/    .skin-box-bd .menu-list .link{background: none repeat scroll 0 0 #00ad08;}
  • /*首页/店铺动态右边线* /    .skin-box-bd .menu-list .menu{border-right:1px #006205 solid;}
  • /*首页/店铺动态文字颜色*/    .skin-box-bd .menu-list .menu .title{color:#ff0000}
  • /*所有分类背景色*/    .all-cats .link{background: none repeat scroll 0 0 #00ad08;}
  • /*所有分类右边线*/    .all-cats .link{border-right:1px #006205 solid;}
  • /*所有分类文字颜色*/    .skin-box-bd .all-cats .title{color:#ff0000}

  1. 所有分类背景,可以用图片:.skin-box-bd .link{background:url(图片链接);}
  2. 修改整个导航的背景色背景:.skin-box-bd .menu-list{background:#000000;}
  3. 修改最右边留下的一小块:.skin-box-bd{background:#000000;}
  4. 修改成图片的代码如下:.skin-box-bd{background:url(图片链接);}
  5. 字外:.skin-box-bd .menu-list .menu-selected .link{background:#000000;}
  6.  字里:.skin-box-bd .menu-list .menu-selected .link .title{background:#000000;}
  7. 字外+字里=全部!
  8. 1.导航背景色代码(除去“所有分类”)如下:.menu-list .link{background:#000000;}
  9. 导航栏文字(除去“所有分类”)如下:.menu-list .menu .title{color:#颜色代码;font-size:字号px;}
  10. “所有分类”的背景色代码如下:.all-cats .link{background:#000000;}
  11. “所有分类”的文字代码如下:.all-cats .link .title{color:#颜色代码;font-size:字号px;}
  12. 最新代码,解决字体改大后导航右侧消失的情况!代码如下:.all-cats .link .title{font-size:字号px;}.all-cats .link {background:#3BAFFF;margin:0;padding:0px 3px;}
  13. 二级分类文字代码如下:.popup-content .cats-tree .fst-cat .cat-name{font-size:字号px;color:#颜色代码;font-weight:bold/bolder/normal;}
  14. 二级分类背景代码如下:.popup-content{background:#000000;}
  15. 三级分类文字代码(除去“所有宝贝”分类)如下.popup-content .cats-tree .snd-pop-inner{font-size:字号px;color:#颜色代码;font-weight:bold/bolder/normal;}
  16. 三级分类文字代码(包括“所有宝贝”分类字体大小)这样就无法改变字体颜色,我们会继续完善该代码!如下 .popup-content .cats-tree .snd-pop-inner{font-size:字号px;color:#颜色;} 
  17. 三级分类背景代码:.popup-content .cats-tree .snd-pop-inner{background:#000000;}
  18. 一级导航分类(除去“所有宝贝”分类)分隔线颜色代码如下:.menu-list .menu{border-color:#000000;}
  19. 一级导航“所有宝贝”分类分隔线颜色代码如下:.all-cats .link{border-color:#000000;}
  20. 一级导航分类的宽度修改代码如下:.menu-list .menu{background:#颜色;margin:0;padding:0px 增加的宽度px;}
  21. 鼠标滑过一级分类导航文字变换背景色代码如下:.menu-list .menu-hover .link{background:#000000;}
  22. 鼠标滑过一级分类导航文字变换颜色代码如下:.menu-list .menu-hover .link .title{color:#FFFFFF;}
  23. 鼠标滑过二级分类导航文字变换背景色代码如下:.popup-content .cats-tree .cat-hd-hover{background:#000000;}
  24. 鼠标滑过二级分类导航文字变换颜色代码如下:.skin-box-bd .popup-content .cats-tree .cat-hd-hover .cat-name{color:#ff0000;}
  25. 鼠标滑过三级分类导航文字变换背景色代码如下:.popup-content .cats-tree .snd-cat-hd-hover{background:#000000;}
  26. 二级分类上加空间代码如下:.popup-content .cats-tree{margin:0 0 50px 0;}
  27. 修改“所有宝贝”右边小图标代码如下:.all-cats .link .popup-icon{background:url(图片连接);}
  28. 修改二级分类右侧图标代码如下(有三级分类才会显示):.popup-content .cats-tree .fst-cat-icon{background:url(图片连接);}
  29. 在三级分类前加上小块白色代码如下:.popup-content .cats-tree .snd-cat-icon{display:block;height:3px;width:3px;}

全透明导航CSS代码

很多时候在装修的过程中,需要淘宝店铺的导航变成透明的,不想被系统导航的颜色是挡住,这样可以看到自己设置的店铺背景图;这时我们需要用到一个淘宝导航透明代码,网上很多代码都不是很完整(所有分类无法透明)。​font-size:15px;​​font-weight:bold;​这个分别是字体大小和粗体。
  1. .skin-box-bd{background:none;border:none;} 
  2. .menu-list{background:none;} 
  3. .link{background:none;border:none;} 
  4. .menu{background:none;} 
  5. .all-cats{background:none;} 
  6. .skin-box-bd .all-cats .link{border:none;} 
  7. .skin-box-bd .menu-list .menu{border:none;} 
  8. .menu-list .menu .title{color:#000000;font-size:15px;font-weight:bold;} 
  9. .all-cats .link .title{color:#000000;font-size:15px;font-weight:bold;} 
  10. .skin-box-bd .menu-list .menu-selected .link{background:none;} 
  11. .skin-box-bd .menu-list .menu-selected .link .title{background:none;} 

淘宝天猫导航CSS样式代码在线生成工具

http://www.ahatao.com/menucss/

淘宝店铺导航CSS代码使用修改技巧


很多 CSS 初学者在前端开发过程中,经常会用到 CSS 虚线样式,但是不知道 CSS 虚线样式该如何实现,比如一个 CSS 这样写:​border-style:dotted solid double dashed; ​出来的框就是:上边框是点状,右边框是实线,下边框是双线,左边框是虚线,如果一个 CSS 这样写:border-bottom:1px dashed #000000;出来的框就是一条宽度为1像素的黑色下划虚线··· CSS 关于“线”的类型还真是挺多的,其中新手们比较关注的还是“虚线的实现方法”。


css虚线实现方法

定义和用法:
border-style 属性用于设置元素所有边框的样式,或者单独地为各边设置边框样式。只有当这个值不是 ​none​ 时边框才可能出现。

这里边框属性的虚线边框 ​border ​控制虚线。以下配置的 CSS 高度(CSS height)和 CSS 宽度( CSS width)为350像素。

1、四边为虚线边框
border:1px dashed #000;​ 黑色虚线边框

实例:


实例

.hackhome{border:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置边框缩写形式解释 ​hackhome​ 挑选器四边边框为1px的黑色虚线边框

2、左边为虚线:

实例

.hackhome-1{border-left:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了左边一边为黑色虚线边框

3、右边为虚线:

实例

.hackhome-1{border-right:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了右边一边为黑色虚线边框

4、顶部边(上边)为虚线:

实例

.hackhome-1{border-top:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了顶边(上边线)一边为黑色虚线边框

5、底部边(下边)为虚线:

实例

.hackhome-1{border-bottom:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了底边(下边线)一边为黑色虚线边框

6、随意一边不为虚线,其它三边为虚线状况
参与右边边框不为虚线而没有边线,其它三边为黑色虚线边框

实例

.hackhome{ border:1px dashed #000;border-right:0; height:50px;width:350px; }

尝试一下 »
这里先配置了该对象四边为黑色1px 虚线边框,紧接着又配置一边边线为0的配置,这样相当于配置了3边的边框虚线属性,但是这里留意边框属性配置前后顺序

常用css虚线样式

例1
border-style:dotted solid double dashed; 
上边框是点状
右边框是实线
下边框是双线
左边框是虚线

例2
border-style:dotted solid double;
上边框是点状
右边框和左边框是实线
下边框是双线

例3
border-style:dotted solid;
上边框和下边框是点状
右边框和左边框是实线

例4
border-style:dotted;
所有 4 个边框都是点状

怎么用CSS实现链接的虚线下划线效果

修改您的样式表,找下边这段(一般都在开头)

a {

color:#3399FF;

font-weight:Normal; /*字体效果 普通 可以改成bold粗体*/

text-decoration:none; /*下划线效果:无下划线*/

}

a:hover {

color:#4499EE;

text-decoration:none; /*下划线效果:无下划线*/

border-bottom: 1px #0099CC dotted /*加一个只有下边的框 边框为虚线*/

}

a{}控制连接的效果 a:hover{}控制鼠标移上去的效果。


css分割线虚线代码应用实例

实心的线条:

<hr align=left width=490 color=#990099 SIZE=3 noShade>

实心线条
竖直线:

<HR align=center width=1 color=red size=100>

竖直线

虚线:

<hr size=1 style="color: blue;border-style:dotted;width:490">


虚线size

双线:

<hr size=1 style="COLOR:#ff9999;border-style:double;width:490">


双线



很多朋友在网页设计中要自定义滚动条样式的情景,滚动条的样式我们可以通过css来控制的,比如网易邮箱的滚动条样子很好看,就是利用的CSS来设置实现的。但是css控制的滚动条应该如何实现和隐藏呢?滚动条能不能换颜色或者做的更好看一些呢?下面通通告诉你。

在开始本节内容前,你可以复习一下CSS overflow 属性的内容。


1、​overflow-y​ : 设置当对象的内容超过其指定高度时如何管理内容;​overflow-x ​: 设置当对象的内容超过其指定宽度时如何管理内容。

参数:
visible​:扩大面积以显示所有内容

auto​:仅当内容超出限定值时添加滚动条

hidden​:总是隐藏滚动条

scroll​:总是显示滚动条

2、​height​ : 设置滚动条的高度(修改其后数值即可)。

3、滚动条颜色参数设置:

scrollbar-3d-light-color ​设置或检索滚动条亮边框颜色

scrollbar-highlight-color ​设置或检索滚动条3D界面的亮边(ThreedHighlight)颜色

scrollbar-face-color​  设置或检索滚动条3D表面(ThreedFace)的颜色

scrollbar-arrow-color ​ 设置或检索滚动条方向箭头的颜色

scrollbar-shadow-color​  设置或检索滚动条3D界面的暗边(ThreedShadow)颜色

scrollbar-dark-shadow-color ​设置或检索滚动条暗边框(ThreedDarkShadow)颜色

scrollbar-base-color ​ 设置或检索滚动条基准颜色

设置滚动条样式

在原来的 html 的时候,我们可以这样定义整个页面的滚动条
body{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
   scrollbar-highlight-color:#fff; /*- 左二 -*/
   scrollbar-face-color:#E4E4E4; /*- 面子 -*/
   scrollbar-arrow-color:#666; /*- 箭头 -*/
   scrollbar-shadow-color:#808080; /*- 右二 -*/
   scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
   scrollbar-base-color:#D7DCE0; /*- 基色 -*/
   scrollbar-track-color:#;/*- 滑道 -*/
}

但是同样的代码,我们应用在 xhtml 下就不起作用了,我相信好多朋友也遇到过同样的问题
那么怎么才能在 xhtml 下应用滚动条样式呢?看下列代码
html{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
   scrollbar-highlight-color:#fff; /*- 左二 -*/
   scrollbar-face-color:#E4E4E4; /*- 面子 -*/
   scrollbar-arrow-color:#666; /*- 箭头 -*/
   scrollbar-shadow-color:#808080; /*- 右二 -*/
   scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
   scrollbar-base-color:#D7DCE0; /*- 基色 -*/
   scrollbar-track-color:#;/*- 滑道 -*/
}

这段代码和上一段唯一的不同就是在 CSS 定义的元素上,一个是 body 一个是 html。我们再测试一下,把 html 页面的"body"修改成"html"测试一下,发现依然可以实现效果。那到底是为什么呢?

从字面上来看,xhtml 比 html 多一个 x,那么这个 x 其实也就是 xml,为什么要加一个 xml 在里面?其实最根本的原因就是要让 html 更加结构化标准化(因为 html 实在是太烂)。我们在 html 里面定义的是 body,因为 html 不是很标准所以这样可以生效,而在xhtml里面这样就不行了,我看看那个图很明显,body 标签本身不是根元素,只有 html 才是根元素,而页面的滚动条也是属于根元素的,所以这就是我们为什么定义 body 没有效果的原因,因为我们定义的只是一个子原素。ok,我们知道了原理,来做一个试验如果把定义"body"或"xhtml"换成​*​,
*{
scrollbar-3dlight-color:#D4D0C8; 
   scrollbar-highlight-color:#fff; 
   scrollbar-face-color:#E4E4E4; 
   scrollbar-arrow-color:#666; 
   scrollbar-shadow-color:#808080; 
   scrollbar-darkshadow-color:#D7DCE0; 
   scrollbar-base-color:#D7DCE0; 
   scrollbar-track-color:#;
}

在html和xhtml都通过,因为*就是定义页面上的任何标签当然也包括了“html”这个标签。

(ps:其实与其说是 html 与 xhtml 的区别到不如说是有无 XHTML 1.0 transitional doctype的区别,但是如果你把页面的 XHTML 1.0 transitional doctype 去掉的话,那么这个页面就没有 doctype,默认的显示方式就是html4.01,不过你要把XHTML 1.0 transitional doctype 修改成 HTML 4.01 doctype 同样页面定义 body 也不会有效果的,虽然这个页面的标准是html 4.01) 

CSS 隐藏滚动条(横向,坚向)

网上都说使用 ​overflow-y:hidden​ 可以隐藏滚动条,但是只能针对 div 元素,并不能隐藏浏览器,而一些资料说 <boby>里加入​scroll="no"​,可隐藏滚动条;在<boby>里加入​style="overflow-x:hidden"​,可隐藏水平滚动条;加入​style="overflow-y:hidden"​,可隐藏垂直滚动条。

1、完全隐藏

  在里加入​scroll="no"​,可隐藏滚动条;

2、在不需要时隐藏

  指当浏览器窗口宽度或高度大于页面的宽或高时,不显示滚动条;反之,则显示;

3、样式表方法

  在里加入​style="overflow-x:hidden"​,可隐藏水平滚动条;

  加入​style="overflow-y:hidden"​,可隐藏垂直滚动条。

body{ overflow-x:hidden; } 在标准 DTD 下是不可以的

html { overflow: scroll; }

  • 强制隐藏滚动条:html { overflow: hidden; }
  • 隐藏IE的水平滚动条:html { overflow-x: hidden; }
  • 隐藏IE的垂直滚动条:html { overflow-y: hidden; }
  • 强制显示IE的水平滚动条:html { overflow-x: scroll; }
  • 强制显示IE的垂直滚动条:html { overflow-y: scroll; }
  • 强制显示Mozilla的水平滚动条:html { overflow:-moz-scrollbars-horizontal; }
  • 注意: 仅仅强制显示水平滚动条. 也就是说, 即使需要显示垂直滚动条时, 垂直滚动条也不会出现.
  • 强制显示Mozilla的垂直滚动条:html { overflow:-moz-scrollbars-vertical; }
  • 注意: 仅仅强制显示垂直滚动条. 也就是说, 即使需要显示水平滚动条时, 水平滚动条也不会出现.


最终的解决办法:

在页面添加:

<style>

html { overflow-x:hidden; //隐藏水平滚动条overflow-y:hidden;//隐藏垂直滚动条}

</style>


CSS怎么美化滚动条

各种浏览器对CSS滚动条的支持情况:

这里说的 Webkit 浏览器包括谷歌浏览器,苹果公司的 Safari 浏览器,以及最新的 Opera 浏览器。这些浏览器加起来占有超过半数的桌面浏览器市场份额。对于移动端浏览器,基本上是谷歌浏览器和 Safari 浏览器的天下。唯一的遗憾是火狐浏览器,至今没有对CSS滚动条属性做任何的改进。至于IE浏览器,我们期待吧。

鉴于目前浏览器市场的格局,我们很有信心相信 CSS 滚动条美化功能会有很好的很光明的前景。

很多年前谷歌浏览器就已经开始支持对滚动条的 CSS 美化。这些 Webkit 浏览器专属的CSS属性需要使用 -webkit- 浏览器引擎前缀,我们在这里将只会使用一些基本的CSS滚动条属性,在代码里会增加一些必要的解释说明。

::-webkit-scrollbar {

  width: 15px;

} /* 这是针对缺省样式 (必须的) */

当 CSS 中出现伪元素样式时,Webkit 引擎将会关闭它的缺省滚动条样式输出,只使用CSS里提供的样式信息。

这里是其它一些伪元素样式:

::-webkit-scrollbar-track {

  background-color: #b46868;

} /* 滚动条的滑轨背景颜色 */

::-webkit-scrollbar-thumb {

  background-color: rgba(0, 0, 0, 0.2); 

} /* 滑块颜色 */

::-webkit-scrollbar-button {

  background-color: #7c2929;

} /* 滑轨两头的监听按钮颜色 */

::-webkit-scrollbar-corner {

  background-color: black;

} /* 横向滚动条和纵向滚动条相交处尖角的颜色 */

加上了这些 CSS 属性,你将会看到下面的效果(再次提醒:你需要使用 Webkit 浏览器,比如谷歌浏览器才能看到效果)。


谷歌浏览器的用户是最幸福的。但我们也不能放弃火狐浏览器和IE浏览器用户。对于这些浏览器,有一个非常有效的补救方案,就是使用 javascript 插件。网上有不少人推荐一个由 Kelvin Luck 开发的一个 jQuery 插件:jScrollPane。但也有人评论这个插件是“PITA”,我翻了一下字典,发现“PITA”中文意思是“让人蛋疼”。经过试用,感到它的确是让人蛋疼。不推荐使用它。我发现了另外一个插件 malihu-custom-scrollbar-plugin,感觉相当不错,它的用法是:

<link rel="stylesheet" href="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.min.css">

<!-- latest jQuery direct from google's CDN -->

<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>

<script type="text/javascript" src="js/jquery-migrate-1.2.1.min.js"></script>

<script src="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js"></script>

<script>

if (!$.browser.webkit) {

$.mCustomScrollbar.defaults.scrollButtons.enable=true; //enable scrolling buttons by default

$.mCustomScrollbar.defaults.axis="yx"; //enable 2 axis scrollbars by default

$(".container").mCustomScrollbar({theme:"dark"});

}

</script>

火狐浏览器中的效果截图:

火狐浏览器

已经有很多网站都使用了这些滚动条的 CSS 美化技巧,特别是谷歌的一些应用和网站上,比如 Gmail 和 Google+。相信很快火狐浏览器和IE浏览器也会提供自己的解决方案。

用CSS调整滚动条配色

IE浏览器可以通过调整CSS的方式,来给滚动条换色。

代码如下:

.uicss-cn

{

height:580px;overflow-y: scroll;

scrollbar-face-color:#EAEAEA;

scrollbar-shadow-color:#EAEAEA;

scrollbar-highlight-color:#EAEAEA;

scrollbar-3dlight-color:#EAEAEA;

scrollbar-darkshadow-color:#697074;

scrollbar-track-color:#F7F7F7;

scrollbar-arrow-color:#666666;

}

具体样式对应的滚动条区域如图所示:

滚动条变色


导航条是一个网站的基础,美观易用的导航条对于任何网站都是非常重要的。按照传统的方法,导航条是由放在一行表格单元里的图形图像构成。由于人们不再推荐用表格来定位任何非表格的页面内容,所以很多人都用结构化的 XHTML 标记和 CSS 格式来创建导航条。下面先来看一下最简单的 CSS 导航条是怎么实现的:


css导航条

首先,我们来给这个下拉菜单写一个 HTML 的代码.先创建一个 div 来做为容器,然后把这个导航菜单放到这个容器里.正如下面的代码,我们用无序列表来创建这个导航菜单.在这个导航菜单中 Portfolio 项下有一个子菜单,用粗体表示出来,别忘了关闭</li>。

<div id="nav"> 

<ul> 

<li class="first"><a href="#">Home</a></li> 

<li><a href="#">About Me</a></li> 

<li><a href="#">Portfolio</a> 

<ul> 

<li><a href="#">Web</a></li> 

<li><a href="#">Print</a></li> 

<li><a href="#">Photos</a></li> 

</ul> 

</li> 

<li><a href="#">Contact Me</a></li> 

</ul> 

</div> 

The CSS


首先,我们来给#nav div设置一个样式,给它一个宽度,高度,字体大小.并把默认的无序列表样式给去掉.。

*{ margin:0px; padding: 0px; } 

#nav { 

font-family: arial, sans-serif; 

position: relative; 

width: 390px; 

height:56px; 

font-size:14px; 

color:#999; 

margin: 0 auto; 

#nav ul { 

list-style-type: none; 

在这一步我们给<li>设置左浮动让整个导航水平.并且设置相对,记<li>成为一个祖元素,这样我们下面就可以利用到绝对定位了。

#nav ul li { 

float: left 

position: relative; 

在这一步我们给<a>标签设置一个样式被它看起来像一个按扭(div css教程-如何使用css创建一个类似按扭的导航) 

#nav ul li a { 

text-align: center; 

border-right:1px solid #e9e9e9; 

padding:20px; 

display:block; 

text-decoration:none; 

color:#999; 

最重要的部分 
这部分将展示给你看如何让下拉菜单的显示和隐藏。当光标没有移动到Portfolio里下拉菜单不显示,当光标移动到Portfolio上面时下拉菜单显示,我们用display的属性来实现这个效果。

#nav ul li ul { 

display: none 

#nav ul li:hover ul { 

display: block; 

position: absolute; 

我们给下拉菜单的悬停状态设置样式 

#nav ul li:hover ul li a { 

display:block; 

background:#12aeef; 

color:#ffffff; 

width: 110px; 

text-align: center; 

border-bottom: 1px solid #f2f2f2; 

border-right: none; 

#nav ul li:hover ul li a:hover { 

background:#6dc7ec; 

color:#fff; 

完整的CSS 

实例

#nav ul li:hover ul { 

display: block; 

position: absolute; } 

#nav ul li:hover ul li a { 

display:block; 

background:#12aeef; 

color:#ffffff; 

width: 110px; 

text-align: center; 

border-bottom: 1px solid #f2f2f2; 

border-right: none; } 

#nav ul li:hover ul li a:hover { 

background:#6dc7ec; 

color:#fff; }


尝试一下 »

查看在线运行效果

css导航条素材下载


4色横向CSS导航条菜单
4色横向CSS导航
点此下载


纯CSS实现的彩色导航菜单

纯CSS彩色导航
点此下载


左侧导航布局CSS网页模板

左侧导航

点此下载

CSS中英文双语导航菜单

中英文双语导航

点此下载


CSS水平下拉菜单

水平下拉菜单

点此下载


div css下拉导航菜单分类代码

导航菜单分类

点此下载


五款漂亮的CSS横向下拉菜单导航条

样式一

样式三

样式四

样式五

点此下载


我们都对“两端对齐”并不陌生,在 word、powerpoint、outlook 等界面工具栏里,都有两端对齐(分散对齐)的功能按钮,只是平时使用的并不是太多,从编辑习惯上来说基本都是用左对齐、居中对齐、右对齐的方式来对齐页面的文本或模块,而当我们在做表单的时候经常遇到比如姓名, 手机号码, 出生地等等字段长短不一的情况,此时就需要用css让两个字段的词语两端对齐才能使整体表单看起来比较协调,如下图所示:


微信截图_20201110164641


CSS 文字两端对齐

text-align:Justify (火狐);


text-justify:inter-ideograph (IE)


如果有需要,你可以先阅读CSS text-align属性部分的内容。

text-justify(IE)
基本语法

text-justify : auto | distribute | distribute-all-lines | distribute-center-last | inter-cluster | inter-ideograph | inter-word | kashida | newspaper


语法取值

auto​ : 默认值。允许浏览器代理用户确定使用的两端对齐法则

distribute​ : 处理空格很像 newspaper ,适用于东亚文档。尤其是泰文

distribute-all-lines​ : 两端对齐行的方式与

distribute​ 相同,也同样不包含两段对齐段落的最后一行。适用于表意字文档

distribute-center-last :​ 未实现

inter-cluster​ : 调整文本无词间空格的行。这种模式的调整是用于优化亚洲语言文档的

inter-ideograph​ : 为表意字文本提供完全两端对齐。他增加或减少表意字和词间的空格

inter-word​ : 通过增加字之间的空格对齐文本。该行为是对齐所有文本行最快的方法。它的两端对齐行为对段落的最后一行无效

kashida​ : 通过拉长选定点的字符调整文本。这种调整模式是特别为阿拉伯脚本语言提供的。需要IE5.5+支持

newspaper : 通过增加或减少字或字母之间的空格对齐文本。是用于拉丁文字母表两端对齐的最精确格式

应用代码实例

如上图所示的注册表单,我们就要用到 text-aligntext-justify样式了。 text-align 直接设为 justify 就行了, text-justify 的情况相对比较复杂 。
HTML代码如下:

<form>

<div>

<span>用 户 名</span>

<input id='username' type="text" name="" />

<strong></strong>

</div>

<div>

<span>密 码</span>

<input type="password" name="" />

<strong></strong>

</div>

<div>

<span>确 认 密 码</span>

<input type="password" name="" />

<strong></strong>

</div>

<div>

<span>兴 趣 爱 好</span>

<input type="text" name="" />

<strong></strong>

</div>

<div class='reg'>

<input type="button" value='点此注册' name="" />

</div>

</form

注意,在没两个字符之间是有一个空格的 

样式代码:

/*CSS reset 顶部为css的重置代码*/ html{color:#000;background:#FFF;font-family:Microsoft YaHei,sans-serif,Arial,'宋体';} body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td,strong{padding:0;margin:0;font-family:Microsoft YaHei,sans-serif,Arial;} table{border-collapse:collapse;border-spacing:0;} fieldset,img{border:0;} a{text-decoration:none; color:#; outline:none;}/*此处待添加默认链接颜色*/ a:hover{text-decoration:none;color:#cb1114}; var,em,strong{font-style:normal;} address,caption,cite,code,dfn,em,strong,th,var, optgroup{font-style:inherit;font-weight:inherit;} del,ins{text-decoration:none;} li{list-style:none;} caption,th{text-align:left;} h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} q:before,q:after{content:'';} abbr,acronym{border:0;font-variant:normal;} sup{vertical-align:baseline;} sub{vertical-align:baseline;} legend{color:#000;} input,button,textarea,select,optgroup,option{font-family:inherit; font-size:inherit;font-style:inherit;font-weight:inherit;} input,button,textarea,select{*font-size:100%;} .clear {clear:both;height:0px;overflow:hidden;} body{-webkit-user-select:none;-webkit-text-size-adjust:none;-webkit-transform-style:preserve-3d;} *{-webkit-tap-highlight-color:rgba(0,0,0,0);} /*form 从此处起为表单的样式处理*/ form{width:430px;margin:20px auto 0;} div{ 

width:430px; 

height:40px; 

line-height:40px; 

clear:both; 

word-spacing:-1em;/*调整文本,以防止使用两端对齐之后字间距过大*/ 

text-align:justify; 

text-justify:distribute-all-lines;/*ie6-8*/ 

text-align-last:justify;/* ie9*/ 

-moz-text-align-last:justify;/*ff*/ 

-webkit-text-align-last:justify;/*chrome 20+*/ 

} @media screen and (-webkit-min-device-pixel-ratio:0){/* 兼容chrome*/ div span:after{ content:"."; display: inline-block; width:100%; overflow:hidden; height:0; } } span{float:left;width:65px;height:40px;line-height:40px;margin-right:10px;} strong{float:left;width:140px;height:40px;line-height:40px;margin-left:10px;background:#ccf;} input[type=text]{float:left;width:200px;height:20px;margin:10px 0;} input[type=password]{float:left;width:200px;height:20px;margin:10px 0;} input[type=button]{color:#00f;width:100px;height:30px;} .reg{text-align:center;margin:20px auto 0;}

使用 text-align:justify;text-justify:inter-ideograph; 设置文字两端对齐的效果,无论是英文还是中文,在IE和 chrome 下都不起作用。解决方法如下:

加入样式代码:

实例

div.justify 

{text-align: justify; width:200px; font-size:15px; color:red; 

border:1px solid blue; height:18px;}

div.justify > span 

{display: inline-block /* Opera */; 

padding-left: 100%; }


尝试一下 »
效果图:
微信截图_20201110162040 

从效果图可以看到,除了要在块级元素加 ​text-align:justify ​样式外,还需要在里面加一个空的​ span​ 元素,并应用样式。另外,对于中文还必须用空格隔开汉字,否则也没有两端对齐的效果。英文每个单词都有空格隔开,所以没问题。

微信截图_20201110164756

两端对齐英文文字的 CSS 代码

代码如下:
<div style="text-align:justify;">
中间是英文资料
</div>
<div align="justify">
中间是英文资料
</div>
这样就英文显示就可以对齐了,单词也不会断开。
但是有时候我们需要单词断开就在后面加个“-”,怎样做呢?代码如下:
<div style="text-align:justify;text-justify:inter-ideograph;">
中间是英文资料
</div>
这样就可以了,不过这个代码好像只有在 IE 里用。
--------------------------------------------------------------------

如果上面代码没效果,可以参考下面的示例:

实例

div.justify { text-align: justify; width:200px; font-size:15px; color:red; border:1px solid blue; height:18px;}

div.justify > span { display: inline-block /* Opera */; padding-left: 100%; }


尝试一下 »
除了要在块级元素加 ​text-align:justify ​样式外,还需要在里面加一个空的​ span​ 元素,并应用样式。另外,对于中文还必须用空格隔开汉字,否则也没有两端对齐的效果。英文每个单词都有空格隔开,所以没问题。


当我们在做网页的时候,有时为了整体页面搭配的美观,需要设置层样式为透明或者半透明,因为透明往往能产生不错的网页视觉效果。在使用的背景的页面中,如果不设置页面内容区为半透明状态,突出不了背景的作用,也显得不那么协调。用传统的 CSS 实现背景半透明效果的方法是用两个层,一个放文字,另一个做透明背景,但是透明滤镜的效果会影响到里面的内容。如果只需要在IE下实现,是有更简单的方法可以实现的。

CSS半透明属性

兼容主流浏览器的 CSS 透明代码:

.transparent_class {

filter:alpha(opacity=50);

-moz-opacity:0.5;

-khtml-opacity: 0.5;

opacity: 0.5;

}

上面的几个属性分别是:

opacity: 0.5; 这是最重要的,因为它是 CSS 标准.该属性支持 Firefox, Safari 和 Opera.

②filter:alpha(opacity=50); 这个是为 IE6 设的,可取值在 0-100,其它三个 0 到 1.

③-moz-opacity:0.5; 这个是为了支持一些老版本的 Mozilla 浏览器。

④-khtml-opacity: 0.5; 这个为了支持一些老版本的 Safari 浏览器。

CSS 透明度继承问题

CSS 的透明属性涉及到一个继承问题,当为父级元素设置透明度后,子元素将自动继承其透明度,比如下图的效果:


css透明度继承


即使你又为子元素指定透明度为1也是无效的。


对于子元素是文字的情况,一般的解决方法是如果多少还能够看清,就不管。另一个折中的方法是,为文本子元素指定一个相对更深的颜色。也就是说,当子元素继承透明度后,所得到的文本颜色正好就是你想要的。前提是这个颜色还有加深的可能,和需要详细的计算颜色和透明度的值。


还有“取消透明度继承”的说法,这个说法是不太准确的,实际上没有任何取消透明度继承的方法。只能说,当想要实现“多个元素覆盖,只让指定的元素透明”时,可以使用的一些Hack。


还有一种不错的实现方法:添加一个空元素作为透明层,和不想透明但是要实现覆盖效果的元素为同级元素。父级元素使用 position:relative 定位; 两个子元素使用 position:absolute 定位,实现覆盖。具体解释说明请点击本链接


半透明

IE下实现半透明

HTML代码:

<div class="alpha1"> 

<div class="ap2"> 

<p>背景为红色(#FF0000),透明度20%。</p> 

</div> 

</div>

CSS代码:

.alpha1{  

width:300px;  

height:200px;  

background-color:#FF0000;  

filter:Alpha(Opacity=30);  }  

.ap2{  

position:relative;   }

实例

.alpha1{  

width:300px;  

height:200px;  

background-color:#FF0000;  

filter:Alpha(Opacity=30);  }


尝试一下 »

兼容FF、OP的写法:

两个层重叠的方法改下页面结构与CSS样式

HTML代码:

<div class="alpha1"> 

<div class="ap2"> 

<p>背景为红色(#FF0000),透明度20%。</p> 

</div> 

<div class="alpha2"> 

</div>

</div>

CSS代码:

.alpha1,.alpha2{  

width:100%;  

height:auto;  

min-height:250px;/*必需*/  

_height:250px;/*必需*/  

overflow:hidden;  

background-color:#FF0000;/*背景色*/  }  

 .alpha1{  

filter:alpha(opacity=20);/*IE透明度20%*/  }  

.alpha2{  

background-color:#FFFFFF;  

-moz-opacity:0.8;/*MozFF透明度20%*/  

opacity:0.8;/*支持CSS3的浏览器(FF1.5也支持)透明度20%*/  }  

.ap2{  

position:absolute;  }  

实例

.alpha1,.alpha2{  

width:100%;  

height:auto;  

min-height:250px;/*必需*/  

_height:250px;/*必需*/  

overflow:hidden;  

background-color:#FF0000;/*背景色*/  } 


尝试一下 »


有很多刚刚接触 CSS 的新手有时会遇到 CSS 加载失败这个问题,但测试时,网页上没有显示该样式的问题,这就说明 CSS 加载失败了。出现这种状况一般是因为的 CSS 路径书写错,或者是在浏览器中禁止掉了 CSS 的加载,可以重新启动浏览器刷新,在文件中 CSS 的调用,一般都是通过 link 加上你的路径来实现,具体可以看下代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>index</title>

<link rel='stylesheet' type='text/css' href='./css/index1.css'>//注意好文件名的书写就没问题了。

造成 CSS 加载失败的原因有很多,这可能跟你代码出错,浏览器、路径、编码等等都是有关联的。所以在具体情况具体分析。最常见的失败原因有以下几类:


1.网络原因

IIS空间不足、浏览者网速慢、空间速度慢等网络因素是造成 CSS 加载失败的原因之一,其具体表现为:当我们打开网页时,网页布局完整,但却没有任何布局样式显示。

2.路径错误或者代码不兼容

如果网页打开时,没有显示 CSS 设定的样式,只以原始状态显示。那么就可能是我们 CSS 文件路径出错或者 CSS代码不兼容了。 

3.if造成失败 

第三个原因是,我们编在写 CSS 时,可能使用了if判断语句对什么浏览器调用什么 CSS 文件时疏忽造成if调用的混乱,导致在某些浏览器上能正常显示,在某些浏览器上不能正常显示。对于这个原因,解决方法就是好好检查造成 CSS 加载失败的 if 判断设置。

  

4.另类CSS加载失败 

何为另类 CSS 加载失败?这是由于我们本身的 CSS 代码写法有问题,没有设置好造成在各浏览器显示不同布局差距效果。在 CSS 里面,我们称为css hack


css

5、浏览器导致

在 Chrome 浏览器的错误控制台下看看 CSS 文件有没有加载进来,确定已加载的话,检查元素的类名与 CSS 中定义的类名是否相同。可能局限于 IE 浏览器,你用谷歌浏览器就会出现错误。所以尝试换个浏览器,然后等会在用,也可能修复故障。 

6、编码不对

如果不是上述问题则看一看你的 CSS 文件的字符集是否和你的调用 CSS 文件的网页的字符集是否一致,就是 charset 属性那里。在你使用浏览器进行浏览效果的时候,ie浏览器中菜单栏上有一个“查看--编码”,在查看编码上面 UTF-8 或者 GBK 看看是不是同一个编码。可能是编码不一致所造成。

  

以上就是造成 CSS 加载失败最常见的六大原因。我们了解这些原因后,如果在实际操作中遇到类似问题,便可逐一对照排查,对症下药解决问题。


我们都知道 HTML 和 CSS 是作用不相同的两种语言,但是它们对一个网页能够同时产生作用,网页(webPage)= 内容(html) + 表现(css) + 行为(javascript)。因此需要把 CSS 引入 HTML 一起使用。要想在浏览器中显示出预期的 CSS 样式表效果,就要让浏览器识别并正确调用 CSS。当浏览器读取样式表时,要依照文本格式来读,而且当 CSS 样式表放在不同的地方,所产生的作用范围也是不同的。在 HTML 中,主要用四种方法引入 CSS:行内式、内嵌式、导入式和链接式。


HTML引入CSS

(1)行内式

<p style=”color:red”>网页中css的导入方式</p>

即在标记的style属性中设定CSS样式,这种方式本质上没体现出CSS的优势,因此不推荐使用。


(2)嵌入式

<style type=”text/css”>

p{ color:red }

</style>

在对页面中各种元素的设置集中写在<head>和</head>之间的,对于单个页面来说,这种方式很方便。但是这种方法的使用情况要少的多,最长见得就是访问量大的门户网站。或者访问量较大的企业网站的首页。与第一种方法比起来,优点突出,弊端也明显。优点:速度快,所有的 CSS 控制都是针对本页面标签的,没有多余的 CSS 命令;再者不用外链 CSS 文件。直接在 HTML 文档中读取样式。缺点就是改版麻烦些,单个页面显得臃肿,CSS 不能被其他 HTML 引用造成代码量相对较多,维护也麻烦些。但是采用这种方法的公司大多有钱,对他们来说用户量是关键,他们不缺人进行复杂的维护工作。


(3)导入式

<!-- 导入外部样式:在内部样式表的<style></style>标记之间导入一个外部样式表,导入时用@import。 -->  

<style type="text/css">  

 @import "jisuan.css";  

</style>


(4)链接式

<link href="jisuan.css" rel=”stylesheet” type=”text/css” />


导入式和链接式差不多,都是从外部引入 CSS 文件。但是链接式对于客户端用户浏览网站时,效果会好些。

链接式可以说是现在占统治地位的引入方法。如同 IE 与浏览器。这也是最能体现 CSS 特点的方法;最能体现 DIV+CSS 中的内容与显示分离的思想,也最易改版维护,代码看起来也是最美观的一种。

如果希望用 javascript 来动态决定引入哪个 css 文件,则必须使用连接式才能实现。大多数的网站还是比较喜欢使用链接的方式引用外部 CSS 的。


css链接式

采用导入式和链接式的区别:

1、导入式:会在整个页面装载完成后再装载 CSS 文件,对于有的浏览器来说,在一些情况下,如果网页文件的体积比较大,则会出现先显示无样式的页面,闪烁一下之后再出现设置样式后的效果,从浏览者的感受来说,这是导入式的一个缺陷。


2、链接式:会在装载页面主体部分之前装载 CSS 文件,这样显示出来的网页从一开始就是带有样式效果的。


对于一些比较大的网站,为了便于维护,可能会希望把所有的 CSS 样式分类别放到几个 CSS 文件中,这样如果使用连接式引入,就需要几个语句分别导入 CSS 文件。如果要调整 CSS 文件的分类,就需要同时调整 HTML 文件,这对于维护工作来说,是一个缺陷,如果使用导入式,则可以只引进一个总的 CSS 文件,在这个文件中再导入其他独立 CSS 文件;而链接式则不具备这个特性。


因此给大家的建议是:如果仅需要引入一个 CSS 文件,则使用链接方式,如果需要引入多个 CSS 文件,则首先用链接方式引入一个“目录”CSS 文件,这个“目录”CSS 文件中再使用导入式引入其他 CSS 文件。

link 和@import 的区别

Quote link的定义
HTML 和 XHTML 都有一个结构,它使网页作者可以增加于 HTML 文档相关的额外信息。这些额外资源可以是样式化信息(CSS)、导航助手、属于另外形式的信息(RSS)、联系信息等等。

Quote @import 的定义

指定导入的外部样式表及目标设备类型。其实 link 和@import 的最根本区别就是,link 是一个 HTML 的一个标签,而@import 是 CSS 的一个标签,link 除了调用 CSS 外还可以有其他作用譬如声明页面链接属性,声明目录,rss等等,而@import 就只能调用 CSS。如果单独从外部引用 CSS 来说,他们的作用是基本一样,只不过上面的老大不一样而已。


link和import哪个更好些?

上面说了因为上面的老大不一样,所以在使用上就会有一些细节的区别,不能说总体谁好谁坏,只能说具体情况具体分析。
1、如果要用 javascript 进行样式选择:
这个时候就要用 link,因为l ink 是 html 元素,可用 javascript 去控制 dom 元素最后达到改变样式的效果。

2、如果要应用打印样式;
打印样式顾名思义就是打印页面时候的样式。
这个样式在普通浏览下是没有效果的,只有在打印的时候生效。
如果要为页面单独引用打印样式的话,link 和@import 都可以的。

3、如果要引用多个样式;
如果要在一个页面上引用多个样式组合产生效果的话,link 和@import 也是都可以的。

最后,其实这种@import 文件导入的方式已经很少用了,建议用 link 方式。原因是 link 载入时是和 HTML 的载入同步加载的,而@import 则是在页面内容载入完成之后再引用的。如果网速慢的话,可能会导致页面的样式混乱。另外使用@import 时要注意添加地方,在 CSS 手册中提到:该规则必须在样式表头部最先声明。并且其后的分号是必需的,如果省略了此分号,外部样式表将无法正确导入,并会生成错误信息。IE 使用@import无法引入超过35条的样式表。


我们对Windows各种各样的鼠标样式都不陌生,当鼠标移动到不同的地方时,当鼠标执行不同的功能时,当系统处于不同的状态时,都会使鼠标的形状发生变化。而在网页上往往只有当鼠标在超级链接上时才出现一个手形,在其它地方似乎没有什么变化,同充满动感的网页显得不怎么和谐。这里教大家用CSS来定义20种种鼠标样式形状。在CSS中,使用cursor属性来定义鼠标的样式。


用css控制鼠标样式的语法如下:

<span style="cursor:*">文本或其它页面元素</span>

把 * 换成如下20个可选值的一种:

cursor属性取值如下,默认值为default。大家可能会说,cursor属性值这么多,怎么记呀?其实大家不用担心,在实际开发中,我们一般只用到“default”和“pointer”这两个属性值,其他的一般都很少用得上。如果实在没办法还需要其他的,那就回来查这种表就行了。

crosshair;


十字准心

The cursor render as a crosshair

光标表现为十字准线

cursor: pointer; 
cursor: hand;
写两个是为了照顾IE5,它只认hand。

 

The cursor render as a pointer (a hand) that indicates a link

光标标以暗示(手指)的形式来表明有一个连接

cursor: wait;

 

等待/沙漏

The cursor indicates that the program is busy (often a watch or an hourglass)
光标暗示当前程序正忙(一般为一块表或是一个沙漏)

cursor: help;

 

帮助

The cursor indicates that help is available (often a question mark or a balloon)
光标暗示当前位置可得到帮助(一般为问号或是气球)

cursor: no-drop;

 

无法释放

cursor: no-drop;

cursor: text;

 

文字/编辑

The cursor indicates text
光标暗示当前所处位置为文字内容

cursor: move;

 

可移动对象

The cursor indicates something that should be moved
光标暗示一些东西应该被移动

cursor: n-resize;

 

向上改变大小(North)

The cursor indicates that an edge of a box is to be moved up (north)
边缘可向上移动(北)

cursor: s-resize;

 

向下改变大小(South)

The cursor indicates that an edge of a box is to be moved down (south)
边缘可向下方移动(南)

cursor: e-resize;

 

向右改变大小(East)

The cursor indicates that an edge of a box is to be moved right (east)
box边缘可向右(东)边移动

cursor: w-resize;


向左改变大小(West)

The cursor indicates that an edge of a box is to be moved left (west)
边缘可向左移动(西)

cursor: ne-resize;

 

向上右改变大小(North East)

The cursor indicates that an edge of a box is to be moved up and right (north/east)
光标暗示box的边缘可向右上方移动(东北方向)

cursor: nw-resize;

 

向上左改变大小(North West)

The cursor indicates that an edge of a box is to be moved up and left (north/west)
边缘可向左上方移动(西北)

cursor: se-resize;

 

向下右改变大小(South East)

The cursor indicates that an edge of a box is to be moved down and right (south/east)
边缘可向右下方移动(东南)

cursor: sw-resize;

 

向下左改变大小(South West)

The cursor indicates that an edge of a box is to be moved down and left (south/west)
边缘可向左下方移动(西南)

cursor: auto;

 

自动

The browser sets a cursor
浏览器设置一个光标

cursor:not-allowed;

 

禁止

cursor:not-allowed;

cursor: progress;

 

处理中

cursor: progress;

cursor: default;

 

系统默认

The default cursor (often an arrow)
默认的光标状态(通常为一个箭头)

cursor: url(' # ');
# = 光标文件地址      (注意文件格式必须为:.cur 或 .ani)。

 

用户自定义(可用动画)

The url of a custom cursor to be used.
自定义光标的url位置

Note: Always define a generic cursor at the end of the list in case none of the url-defined cursors can be used
注意:在定义完自定义的光标之后在末尾加上一般性的光标,以防那些url所定义的光标不能使用


cursor的pointer与hand区别

cursor:hand 与 cursor:pointer 的效果是一样,都像手形光标。那为什么有两个呢,这两个有什么区别呢?

用浏览器测试得出以下结论:
cursor:hand :IE完全支持。但是在 firefox 是不支持的,没有效果。
cursor:pointer :是 CSS2.0 的标准。所以 firefox 是支持的,但是 IE5.0 既之前版本不支持。IE6 开始支持。
所以为了兼容各个主流浏览器,尽量使用 cursor:pointer,而不要使用 cursor:hand。

实例:

实例

#div_default{cursor:default;}

#div_pointer{cursor:pointer;}


尝试一下 »
在浏览器预览效果如下:

css鼠标样式

CSS Cursor鼠标指针样式兼容性参考表

下面分享一个鼠标指针样式兼容性在线参考表,黑色图标:表示该属性兼容此浏览器。灰色图标:表示该属性不兼容此浏览器。

CSS Cursor兼容表


为了让用户拥有更好的阅读体验,将文章中数据以更直观的方式展示是非常必要的,因此,拥有良好的表格设计就显得非常重要了。下面,51coolma就和大家分享4款好看且实用的CSS表格样式。


具体操作:直接复制粘贴后即可在浏览器打开显示

     ——CSS快速入门

1. 单像素边框CSS表格

微信截图_20201110143709

 

这是一个简单但是常用的表格样式。

源代码:

实例

table.gridtable {font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #666666;border-collapse: collapse;}

table.gridtable th {border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #dedede;}

table.gridtable td {border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #ffffff;}


尝试一下 »

2. 带背景图的CSS样式表格

QQ截图20201110144413

这个样式和和上面的差不多,只是多了背景图,的视觉上会好看不少。

源代码:

实例

table.imagetable {font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #999999;border-collapse: collapse;}

table.imagetable th {background:#b5cfd2 url('cell-blue.jpg');border-width: 1px;padding: 8px;border-style: solid;border-color: #999999;}

table.imagetable td {background:#dcddc0 url('cell-grey.jpg');border-width: 1px;padding: 8px;border-style: solid;border-color: #999999;}


尝试一下 »

3. 自动换整行颜色的CSS样式表格(需要用到JS)

QQ截图20201110144710

这个CSS表格会自动切换每一行的颜色,这种呈现方式,在我们编辑一个数据庞大的表格时,非常好用。

源代码:

实例

function altRows(id){

if(document.getElementsByTagName){ 

var table = document.getElementById(id); 

var rows = table.getElementsByTagName("tr");

for(i = 0; i < rows.length; i++){         

if(i % 2 == 0){

rows[i].className = "evenrowcolor";

}else{

rows[i].className = "oddrowcolor";

}}}}

window.onload=function(){

altRows('alternatecolor');}


尝试一下 »

4. 鼠标悬停高亮的CSS样式表格 (需要JS)

微信截图_20201110145003

纯CSS显示表格高亮在IE中显示有问题,所以这边使用了JS来做高亮。

注意:不要定义格子的背景色。

源代码:

实例

table.hovertable tr {

background-color:#d4e3e5;}


尝试一下 »

 以上是51coolma为大家推荐的几种比较常见和常用的CSS表格样式了,希望大家喜欢。


  CSS 和 HTML 都是前端技术的核心语言,那么这两者分别是干什么的?又有什么区别呢?

QQ截图20180423112845

  HTML(结构)

  全称 Hyper Text Markup Language(超文本标记语言),该语言是用于定义文档内容结构

  功能:

  1.该语言写的代码通常会被浏览器解析执行

  2.超文本:不止包括文本,还有图片、链接、音乐...

  3.一个页面就是一篇文档,而一篇文档最核心的就是内容,不同含义

  注释格式:<!--注释内容-->


  CSS(布局)

  全称 Cascading Style Sheets (层叠样式表)

  功能:

  1.用于定义 HTML 文档的样式(外观)

  2.页面表现的基础,可以控制布局,控制元素的渲染

  注释格式:/*注释内容*/

  总的来说就是一句话:HTML 是网页的结构,CSS 是网页的样式。打个比方,如果把整个网页比喻成一个人,那么 HTML 就是骨头,CSS 就是衣服。


  相关教程:

  HTML入门教程

  CSS入门教程


CSS 教程导读

通过使用 CSS 来我们可以大大提升网页开发的工作效率!

在我们的 CSS 教程中,您会学到如何使用 CSS 同时控制多重网页的样式和布局。

各章节实例

本 CSS 教程包含了数百个 CSS 在线实例

通过本站的在线编辑器,你可以在线编辑 CSS ,并且可以在线查看修改后的效果。

CSS 实例

body
{background-color:#d0e4fe;}
h1
{color:orange;
text-align:center;}
p
{font-family:"Times New Roman";
font-size:20px;}

尝试一下 »

点击 "尝试一下" 按钮查看 CSS 是如何工作的。


CSS 实战闯关

我们为学习者准备了大量的 CSS 编程实战练习,供大家通过亲自编程实验来熟练编程操作

开始CSS编程闯关


CSS 实例

CSS 在线 150 个实例,通过本站编辑器,你可以学习在线查看修改后 CSS 的运行效果。

尝试一下!

CSS 参考手册

在 W3CSchool 中你可以找到更完整的 CSS 属性、选择器的语法,浏览器支持等资料.

CSS 属性

CSS 选择器参考手册

CSS 声音参考手册

CSS 单位

CSS 颜色参考手册

CSS 简介


你需要具备的知识

在继续学习之前,你需要对下面的知识有基本的了解:

  • HTML / XHTML

如果你希望首先学习这些项目,请在 入门教程 访问相关教程。


什么是 CSS?

  • CSS 指层叠样式表 ( Cascading Style Sheets )

  • 样式定义如何显示 HTML 元素

  • 样式通常存储在样式表

  • 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题

  • 外部样式表可以极大提高工作效率

  • 外部样式表通常存储在 CSS 文件

  • 多个样式定义可层叠为一

  • 样式对网页中元素位置的排版进行像素级精确控制


CSS 实例

一个 HTML 文档可以显示不同的样式: 查看CSS是如何工作的


CSS样式

HTML 标签原本被设计为用于定义文档内容,如下实例:

<h1>这是一个标题</h1>

<p>这是一个段落。</p>

样式表定义如何显示 HTML 元素,就像 HTML 3.2 的字体标签和颜色属性所起的作用那样。样式通常保存在外部的 .CSS 文件中。CSS 样式表极大的提高了工作效率,通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面的布局和外观。

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

当代浏览器都支持 CSS 。

多页面应用同一个样式

通常保存在外部的独立的 .CSS 文件(该文件不属于任何页面文件)可以在多个页面中使用同一个 CSS 样式表。通过在任何的页面文件中引用 .CSS 文件,你可以设置具有一致风格的多个页面。

样式层叠

样式层叠就是对一个元素多次设置同一个样式,这将使用最后一次设置的属性值。

样式层叠次序

当同一个 HTML 元素定义了多个样式时,应该使用哪个样式?

一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 4 拥有最高的优先权。

  1. 浏览器缺省设置
  2. 外部样式表
  3. 内部样式表(位于 <head> 标签内部)
  4. 内联样式(在 HTML 元素内部)

因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明: 标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。


CSS 语法


实例


CSS 实例

CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明:

选择器通常是您需要改变样式的 HTML 元素。

每条声明由一个属性和一个值组成。

属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。


CSS 实例

CSS 声明总是以分号 ( ; ) 结束,声明组以大括号 ({ }) 括起来:

p {color:red;text-align:center;}

为了让 CSS 可读性更强,你可以每行只描述一个属性:

实例

p
{color:red;
text-align:center;}

尝试一下 »

CSS 颜色值的写法

在描述颜色的时候,除了使用英文单词 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 单位。

在本站的编程实战部分中,介绍了CSS使用十六进制代码设置颜色,以及CSS使用rgb属性设置颜色,你可以参考该部分的内容进行更多了解。


CSS 注释

注释是用来解释你的代码,并且可以随意编辑它,浏览器会忽略它。

CSS注释以 "/*" 开始, 以 "*/" 结束, 实例如下:

/*这是个注释*/        

p        

{       

text-align:center;       

/*这是另一个注释*/     

color:black;     

font-family:arial;       

}


CSS IdClass


id 和 class 选择器

如果你要在 HTML 元素中设置 CSS 样式,你需要在元素中设置 "id" 和 "class" 选择器。


id 选择器

id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。

HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以 # 来定义。

以下的样式规则应用于元素属性 id = "para1":

实例

#para1
{ text-align:center;
color:red; }

尝试一下 »

Remark ID 属性不要以数字开头,数字开头的 ID 在 Mozilla/Firefox 浏览器中不起作用。

Remark ID 属性只能在每个 HTML 文档中出现一次。具体的解释,请参阅 XHTML:网站重构


class 类选择器

class 选择器用于描述一组元素的样式,class 选择器有别于 id 选择器,class 可以在多个元素中使用。

class 选择器在 HTML 中以 class 属性表示, 在 CSS 中,类选择器以一个点"."号显示:

在以下的例子中,所有拥有 center 类的 HTML 元素均为居中。

实例

.center {text-align:center;}

尝试一下 »

你也可以指定特定的 HTML 元素使用 class。

在以下实例中, 所有的 p 元素使用 class="center" 让该元素的文本居中:

实例

p.center {text-align:center;}

尝试一下 »

Remark 类名的第一个字符不能使用数字!它无法在 Mozilla 或 Firefox 中起作用。


标签选择器

除了提到的 id 和 class 选择器外,第三种选择器为标签选择器,即以 HTML 标签作为 CSS 修饰所用的选择器。

实例

<style>

h3{color:red;}

</style>

<h3>W3cschool教程</h3>


尝试一下 »

内联选择器

第四种内联选择器即直接在标签内部写 CSS 代码。

实例

<h3 style="color:red;">W3cschool教程</h3>


尝试一下 »

这四种 CS 选择器有修饰上的优先级,即:

内联选择器 > id选择器 > 类选择器 > 标签选择器

扩展阅读

在 HTML 标签中设置 CSS 样式时,有多种 CSS 选择器可供选择,你可以参考本站的CSS3选择器归类整理(包含了CSS3中新增的选择器)来了解更多有关CSS选择器的内容。


CSS 创建


当读到一个样式表时,浏览器会根据它来格式化 HTML 文档。


如何插入样式表

插入样式表的方法有三种:

  • 外部样式表
  • 内部样式表
  • 内联样式

外部样式表

当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用 标签链接到样式表。 标签在(文档的)头部

<head><link rel="stylesheet" type="text/css" href="mystyle.css"></head>

浏览器会从文件 mystyle.css 中读到样式声明,并根据它来格式文档。

外部样式表可以在任何文本编辑器中进行编辑。文件不能包含任何的 html 标签。样式表应该以 .CSS 扩展名进行保存。下面是一个样式表文件的例子:

hr {color:sienna;}            

p {margin-left:20px;}            

body {background-image:url(/images/back40.gif);}

Remark 不要在属性值与单位之间留有空格。假如你使用 "margin-left: 20 px" 而不是 "margin-left: 20px" ,它仅在 IE 6 中有效,但是在 Mozilla/Firefox 或 Netscape 中却无法正常工作。


内部样式表

当单个文档需要特殊的样式时,就应该使用内部样式表。你可以使用 <style> 标签在文档头部定义内部样式表,就像这样:

<head>

<style>

hr {color:sienna;}

p {margin-left:20px;}

body {background-image:url("images/back40.gif");}

</style>

</head>


内联样式

由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。

要使用内联样式,你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。本例展示如何改变段落的颜色和左外边距:

实例

<p style="color:sienna;margin-left:20px">这是一个段落。</p>

尝试一下 »

多重样式

如果某些属性在不同的样式表中被同样的选择器定义,那么属性值将从更具体的样式表中被继承过来。

例如,外部样式表拥有针对 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)会被内部样式表中的规则取代。


多重样式将层叠为一个

样式表允许以多种方式规定样式信息。样式可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在一个外部的 CSS 文件中。甚至可以在同一个 HTML 文档内部引用多个外部样式表。

层叠次序

当同一个 HTML 元素被不止一个样式定义时,会使用哪个样式呢?

一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 4 拥有最高的优先权。

  1. 浏览器缺省设置
  2. 外部样式表
  3. 内部样式表(位于 head 标签内部)
  4. 内联样式(在 HTML 元素内部)

因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明: 标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。

Remark 提示:如果你使用了外部文件的样式在内部样式中也定义了该样式,则内部样式表会取代外部文件的样式。

多重样式优先级深入理解

优先级用于浏览器是通过判断哪些属性值与元素最相关以决定并应用到该元素上的。

优先级仅由选择器组成的匹配规则决定的。

优先级就是分配给指定的CSS声明的一个权重,它由匹配的选择器中的每一种选择器类型的数值决定。

多重样式优先级顺序

下列是一份优先级逐级增加的选择器列表,其中数字 7 拥有最高的优先权:

  1. 通用选择器(*)
  2. 元素(类型)选择器
  3. 类选择器
  4. 属性选择器
  5. 伪类
  6. ID 选择器
  7. 内联样式

!important 规则例外

当 !important 规则被应用在一个样式声明中时,该样式声明会覆盖 CSS 中任何其他的声明,无论它处在声明列表中的哪里。尽管如此,!important 规则还是与优先级毫无关系。使用 !important 不是一个好习惯,因为它改变了你样式表本来的级联规则,从而使其难以调试。

一些经验法则:

  • Always 要优化考虑使用样式规则的优先级来解决问题而不是 !important
  • Only 只在需要覆盖全站或外部 css(例如引用的 ExtJs 或者 YUI )的特定页面中使用 !important
  • Never 永远不要在全站范围的 CSS 上使用 !important
  • Never 永远不要在你的插件中使用 !important

权重计算:

201712181559548677

以下是对于上图的解释:

  • 内联样式表的权值最高 1000
  • ID 选择器的权值为 100
  • Class 类选择器的权值为 10
  • HTML 标签选择器的权值为 1

利用选择器的权值进行计算比较,em 显示蓝色,我们提供了详细的代码参考:

实例

<html>  

<head>   

<style type="text/css">   

#redP p {   

/* 权值 = 100+1=101 */    

color:#F00;  /* 红色 */   

}    

#redP .red em {    

/* 权值 = 100+10+1=111 */    

color:#00F; /* 蓝色 */   

}   

#redP p span em {   

/* 权值 = 100+1+1+1=103 */

color:#FF0;/*黄色*/   

}    

</style>    

</head>   

<body>  

<div id="redP">

<p class="red">red    

<span><em>em red</em></span>   

</p>  

<p>red</p>

</div>

</body>    

</html>


尝试一下 »

CSS 优先级法则:

  •  A 选择器都有一个权值,权值越大越优先;
  •  B 当权值相等时,后出现的样式表设置要优于先出现的样式表设置;
  •  C 创作者的规则高于浏览者:即网页编写者设置的 CSS 样式的优先权高于浏览器所设置的样式;
  •  D 继承的 CSS 样式不如后来指定的 CSS 样式;
  •  E 在同一组属性设置中标有 "!important" 规则的优先级最大;


CSS 背景


CSS 背景属性用于定义 HTML 元素的背景。

CSS 属性定义背景效果:

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position

背景颜色

background-color 属性定义了元素的背景颜色。

页面的背景颜色使用在 body 的选择器中:

实例

body {background-color:#b0c4de;}

尝试一下 »

CSS 中,颜色值通常以以下方式定义:

  • 十六进制 - 如:"#ff0000"
  • RGB - 如:"rgb(255,0,0)"
  • 颜色名称 - 如:"red"

以下实例中, h1, p, 和 div元素拥有不同的背景颜色:

实例

h1 {background-color:#6495ed;}
p {background-color:#e0ffff;}
div {background-color:#b0c4de;}

尝试一下 »

提示:你可以为所有元素设置背景色,包括 body 一直到 ema 等行内元素。

提示:background-color 不能继承,其默认值是 transparent。如果一个元素没有指定背景色,那么背景就是透明的,这样其父元素的背景才可见。


背景图像

background-image 属性描述了元素的背景图像.

默认情况下,背景图像进行平铺重复显示,以覆盖整个元素实体。

页面背景图片设置实例:

实例

body {background-image:url('paper.gif');}

尝试一下 »

下面是一个例子是一个糟糕的文字和背景图像组合。文本可读性差:

实例

body {background-image:url('bgdesert.jpg');}

尝试一下 »


背景图像 - 水平或垂直平铺

如果需要在 HTML 页面上对背景图像进行平铺,可以使用 background-repeat 属性。

默认情况下 background-image 属性会在页面的水平或者垂直方向平铺。

一些图像如果在水平方向与垂直方向平铺,这样看起来很不协调,如下所示: 

实例

body
{background-image:url('gradient2.png'); }

尝试一下 »

如果图像只在水平方向平铺 (repeat-x) , 页面背景会更好些:

实例

body
{background-image:url('gradient2.png');
background-repeat:repeat-x;}

尝试一下 »


背景图像- 设置定位与不平铺

Remark 让背景图像不影响文本的排版

如果你不想让图像平铺,你可以使用 background-repeat 属性:

实例

body
{background-image:url('img_tree.png');
background-repeat:no-repeat;}

尝试一下 »

以上实例中,背景图像与文本显示在同一个位置,为了让页面排版更加合理,不影响文本的阅读,我们可以改变图像的位置。

可以利用 background-position 属性改变图像在背景中的位置:

实例

body
{background-image:url('img_tree.png');
background-repeat:no-repeat;
background-position:right top;}

尝试一下 »

提示:background-position 属性提供值有很多方法。首先,可以使用一些关键字:topbottomleftrightcenter;其次,可以使用长度值,如 100px 或 5cm;最后也可以使用百分数值。不同类型的值对于背景图像的放置稍有差异。

关键字

图像放置关键字最容易理解的作用就像其名字的意义。例如,top left 使图像放置在元素内边距区的左上角。

只要保证不超过两个关键字:一个对应水平方向,另一个对应垂直方向,那么你可以设置位置关键字以任何顺序出现。

如果只有一个关键字,则会默认另一个关键字为 center

所以,如果希望每个段落的中部上方出现一个图像,只需声明如下:

p        

{background-image:url('img_tree.png');        

background-repeat:no-repeat;            

background-position:top;}

下面是等价的位置关键字:

单一关键字等价的关键字
centercenter center
toptop center 或 center top
bottombottom center 或 center bottom
rightright center 或 center right
leftleft center 或 center left

百分数值

百分数值的表现方式更为复杂。假设你希望用百分数值将图像在其元素中居中,你可以按照下面的代码进行设置:

body

{background-image:url('img_tree.png');  

background-repeat:no-repeat;    

background-position:50% 50%;}

这会导致图像适当放置,其中心与其元素的中心对齐。

因此,如果你想把一个图像放在水平方向 2/3、垂直方向 1/3 处,可以这样声明:

body      

{background-image:url('img_tree.png');   

background-repeat:no-repeat;   

background-position:66% 33%;}

长度值

长度值解释的是元素内边距区左上角的偏移,偏移点是图像的左上角。

比如,如果设置值为 50px 100px,图像的左上角将在元素内边距区左上角向右 50 像素、向下 100 像素的位置上:

body

{background-image:url('img_tree.png');

background-repeat:no-repeat;

background-position:50px 100px;}

注意,这一点与百分数值不同,因为偏移只是从一个左上角到另一个左上角。也就是说,图像的左上角与 background-position 声明中的指定的点对齐。


背景- 简写属性

在以上实例中我们可以看到页面的背景颜色通过了很多的属性来控制。

为了简化这些属性的代码,我们可以将这些属性合并在同一个属性中.

背景颜色的简写属性为 "background":

实例

body {background:#ffffff url('img_tree.png') no-repeat right top;}

尝试一下 »

当使用简写属性时,属性值的顺序为::

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position

以上属性无需全部使用,你可以按照页面的实际需要使用.

这个实例使用了先前介绍的 CSS,你可以查看相应实例: CSS 实例


Examples

更多实例

如何设置固定的背景图像
本例演示如何设置固定的背景图像。图像不会随着页面的其他部分滚动。


CSS 背景属性

Property描述
background简写属性,作用是将背景属性设置在一个声明中。
background-attachment背景图像是否固定或者随着页面的其余部分滚动。
background-color设置元素的背景颜色。
background-image把图像设置为背景。
background-position设置背景图像的起始位置。
background-repeat设置背景图像是否及如何重复。


CSS Text 文本格式

通过 CSS 的 Text 属性,你可以改变页面中文本的颜色、字符间距、对齐文本、装饰文本、对文本进行缩进等等,你可以观察下述的一段简单的应用了 CSS 文本格式的段落。

文本格式

       此文本使用一些文本格式属性设置样式。标题使用文本对齐、文本转换和颜色属性。段落缩进、对齐,并指定字符之间的间距。下划线将从“尝试一下”链接中删除。

Text Color

颜色属性被用来设置文字的颜色。

颜色是通过CSS最经常的指定:

  • 十六进制值 - 如"#FF0000"

  • 一个RGB值 - "RGB(255,0,0)"

  • 颜色的名称 - 如"红"

参阅 CSS 颜色值 查看完整的颜色值。

一个网页的背景颜色是指在主体内的选择:

实例

body {color:blue;}
h1 {color:#00ff00;}
h2 {color:rgb(255,0,0);}

尝试一下 »

Remark 对于 W3C 标准的 CSS:如果你定义了颜色属性,你还必须定义背景色属性。


文本的对齐方式

文本排列属性是用来设置文本的水平对齐方式。

文本可居中或对齐到左或右,两端对齐.

text-align 设置为justify,每一行被展开为宽度相等,左,右外边距是对齐(如杂志和报纸)。

实例

h1 {text-align:center;}
p.date {text-align:right;}
p.main {text-align:justify;}

尝试一下 »

提示:如果想把一个行内元素的第一行“缩进”,可以用左内边距或外边距创造这种效果。


文本修饰

text-decoration属性用来设置或删除文本的装饰。

从设计的角度看 text-decoration 属性主要是用来删除链接的下划线:

实例

a {text-decoration:none;}

尝试一下 »

也可以这样装饰文字:

实例

h1 {text-decoration:overline;}
h2 {text-decoration:line-through;}
h3 {text-decoration:underline;}

尝试一下 »

Remark我们不建议强调指出不是链接的文本,因为这常常混淆用户。


文本转换

文本转换属性是用来指定在一个文本中的大写和小写字母。

可用于所有字句变成大写或小写字母,或每个单词的首字母大写。

实例

p.uppercase {text-transform:uppercase;}
p.lowercase {text-transform:lowercase;}
p.capitalize {text-transform:capitalize;}

尝试一下 »

文本缩进

文本缩进属性是用来指定文本的第一行的缩进。

CSS 提供了 text-indent 属性,该属性可以方便地实现文本缩进。

通过使用 text-indent 属性,所有元素的第一行都可以缩进一个给定的长度。

实例

p {text-indent:50px;}

尝试一下 »

文本间隔

word-spacing 属性可以改变字(单词)之间的标准间隔。其默认值 normal 与设置值为 0 是一样的。

实例

指定段字之间的空间,应该是30像素:

p
{
word-spacing:30px;
}

尝试一下 »

Examples

更多实例

指定字符之间的空间
这个例子演示了如何增加或减少字符之间的空间。

指定行与行之间的空间
这个例子演示了如何指定在一个段落中行之间的空间

设置元素的文本方向
这个例子演示了如何改变元素的文本方向。

增加单词之间的空白空间
这个例子演示了如何增加一个段落中的单词之间的空白空间。

在元素内禁用文字环绕
这个例子演示了如何禁用一个元素内的文字环绕。

垂直对齐图像
这个例子演示了如何设置文本的垂直对齐图像。

添加文本阴影
这个例子演示了如何设置文本阴影。


所有CSS文本属性。

属性描述
color设置文本颜色
direction设置文本方向。
letter-spacing设置字符间距
line-height设置行高
text-align对齐元素中的文本
text-decoration向文本添加修饰
text-indent缩进元素中文本的首行
text-shadow设置文本阴影
text-transform控制元素中的字母
unicode-bidi设置或返回文本是否被重写 
vertical-align设置元素的垂直对齐
white-space设置元素中空白的处理方式
word-spacing设置字间距


CSS 字体


CSS字体属性定义字体,加粗,大小,文字样式。


serif 和 sans-serif 字体之间的区别

Serif vs. Sans-serif

Remark在计算机屏幕上,sans-serif 字体被认为是比 serif 字体容易阅读


CSS字型

在CSS中,有两种类型的字体系列名称:

  • 通用字体系列 - 拥有相似外观的字体系统组合(如 "Serif" 或 "Monospace")

  • 特定字体系列 - 一个特定的字体系列(如 "Times" 或 "Courier")

Generic family字体系列说明
SerifTimes New Roman
Georgia
Serif字体中字符在行的末端拥有额外的装饰
Sans-serifArial
Verdana
"Sans"是指无 - 这些字体在末端没有额外的装饰
MonospaceCourier New
Lucida Console
所有的等宽字符具有相同的宽度


Remark 除了各种特定的字体系列外,CSS 定义了 5 种通用字体系列:

  • Serif 字体
  • Sans-serif 字体
  • Monospace 字体
  • Cursive 字体
  • Fantasy 字体

字体系列

font-family 属性设置文本的字体系列。

font-family 属性应该设置几个字体名称作为一种"后备"机制,如果浏览器不支持第一种字体,他将尝试下一种字体。

注意: 如果字体系列的名称超过一个字,它必须用引号,如 Font Family:"宋体"。

多个字体系列是用一个逗号分隔指明:

实例

p{font-family:"Times New Roman", Times, serif;}

尝试一下 »

对于较常用的字体组合,看看我们的 Web安全字体组合


字体样式

主要是用于指定斜体文字的字体样式属性。

这个属性有三个值:

  • 正常 - 正常显示文本

  • 斜体 - 以斜体字显示的文字

  • 倾斜的文字 - 文字向一边倾斜(和斜体非常类似,但不太支持)

实例

p.normal {font-style:normal;}
p.italic {font-style:italic;}
p.oblique {font-style:oblique;}

尝试一下 »

italic 和 oblique 的区别

  • 斜体(italic)是一种简单的字体风格,对每个字母的结构有一些小改动,来反映变化的外观。
  • 倾斜(oblique)文本是正常竖直文本的一个倾斜版本。

通常情况下,italic 和 oblique 文本在 web 浏览器中看上去完全一样。


字体大小

font-size 属性设置文本的大小。

能否管理文字的大小,在网页设计中是非常重要的。但是,你不能通过调整字体大小使段落看上去像标题,或者使标题看上去像段落。

请务必使用正确的HTML标签,就<h1> - <h6>表示标题和<p>表示段落:

字体大小的值可以是绝对或相对的大小。

绝对大小:

  • 设置一个指定大小的文本

  • 不允许用户在所有浏览器中改变文本大小

  • 确定了输出的物理尺寸时绝对大小很有用

相对大小:

  • 相对于周围的元素来设置大小

  • 允许用户在浏览器中改变文字大小

Remark如果你不指定一个字体的大小,默认大小和普通文本段落一样,是16像素(16px=1em)。


设置字体大小像素

设置文字的大小与像素,让您完全控制文字大小:

实例

h1 {font-size:40px;}
h2 {font-size:30px;}
p {font-size:14px;}

尝试一下 »

上面的例子可以在 Internet Explorer 9, Firefox, Chrome, Opera, 和 Safari 调整文本大小。

注意:以上实例不能在IE9以前的版本运行。

虽然可以通过浏览器的缩放工具调整文本大小,但是,这种调整是整个页面,而不仅仅是文本


用em来设置字体大小

为了避免 Internet Explorer 中无法调整文本的问题,许多开发者使用 em 单位代替像素。

em 的尺寸单位由W3C建议。

1em 和当前字体大小相等。在浏览器中默认的文字大小是16px。

因此,1em的默认大小是16px。可以通过下面这个公式将像素转换为em:px/16=em

(注:16 等于父元素的默认字体大小,假设父元素的 font-size 为 30px,那么公式需改为:pixels/30=em

实例

h1 {font-size:2.5em;} /* 40px/16=2.5em */
h2 {font-size:1.875em;} /* 30px/16=1.875em */
p {font-size:0.875em;} /* 14px/16=0.875em */

尝试一下 »

在上面的例子,em 的文字大小是与前面的例子中像素一样。不过,如果使用 em 单位,则可以在所有浏览器中调整文本大小。

不幸的是,仍然是 IE 浏览器的问题。调整文本的大小时,会比正常的尺寸更大或更小。


使用百分比和EM组合

在所有浏览器的解决方案中,设置 <body>元素的默认字体大小的是百分比:

实例

body {font-size:100%;}
h1 {font-size:2.5em;}
h2 {font-size:1.875em;}
p {font-size:0.875em;}

尝试一下 »

我们的代码非常有效。在所有浏览器中,可以显示相同的文本大小,并允许所有浏览器缩放文本的大小。


Examples

更多实例

设置字体加粗
这个例子演示了如何设置字体的加粗。

可以设置字体的转变
这个例子演示了如何设置字体的转变。

在一个声明中的所有字体属性
本例演示如何使用简写属性将字体属性设置在一个声明之内。

设置字体风格

本例演示如何设置字体风格。


在线生成字体CSS样式工具

使用在线生成字体CSS样式工具可以快速生成 CSS 字体样式


 


所有CSS字体属性

Property描述
font在一个声明中设置所有的字体属性
font-family指定文本的字体系列
font-size指定文本的字体大小
font-style指定文本的字体样式
font-variant以小型大写字体或者正常字体显示文本。
font-weight指定字体的粗细。


CSS 链接


不同的链接可以有不同的样式。


链接样式

链接的样式,可以用任何 CSS 属性(如颜色,字体,背景等)。

特别的链接,可以有不同的样式,这取决于他们是什么状态。

这四个链接状态是:

  • a:link - 正常,未访问过的链接
  • a:visited - 用户已访问过的链接
  • a:hover - 当用户鼠标放在链接上时
  • a:active - 链接被点击的那一刻

实例

a:link {color:#FF0000;}      /* 未访问链接*/
a:visited {color:#00FF00;}  /* visited link */
a:hover {color:#FF00FF;}  /* mouse over link */
a:active {color:#0000FF;}  /* selected link */

尝试一下 »

当设置为若干链路状态的样式,也有一些顺序规则:

  • a:hover 必须跟在 a:linka:visited 后面
  • a:active 必须跟在 a:hover 后面

提示:在本站的 CSS 参考手册中,我们对 CSS:link 选择器 做了详细的介绍。


常见的链接样式

根据上述链接的颜色变化的例子,看它是在什么状态。

让我们通过一些其他常见的方式转到链接样式:

文本修饰

text-decoration 属性主要用于删除链接中的下划线:

实例

a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:hover {text-decoration:underline;}
a:active {text-decoration:underline;}

尝试一下 »

背景颜色

背景颜色属性指定链接背景色:

实例

a:link {background-color:#B2FF99;}
a:visited {background-color:#FFFF85;}
a:hover {background-color:#FF704D;}
a:active {background-color:#FF704D;}

尝试一下 »

鼠标形状

常用鼠标形状如下所示:

属性值描述
default默认光标,箭头
pointer超链接的指针,手型
wait指示程序正在忙
help指示可用的帮忙
text指示文本
crosshair鼠标呈现十字状


cursor 属性实例

实例

a:hover {

    color: green;

    cursor: crosshair;

}


尝试一下 »


Examples

More Examples

添加不同样式的超链接
这个例子演示了如何为超链接添加其他样式。

高级 - 创建链接框
这个例子演示了一个更高级的例子,我们结合若干CSS属性显示为方框。


CSS 列表


CSS 列表属性作用如下:

  • 设置不同的列表项标记为有序列表
  • 设置不同的列表项标记为无序列表
  • 设置列表项标记为图像

列表

在 HTML 中,有两种类型的 HTML列表

  • 无序列表 - 列表项的标记使用特殊图形(如小黑点、小方框等)
  • 有序列表 - 列表项的标记使用数字或字母

使用CSS,可以列出进一步的样式,并可用图像作列表项标记。


不同的列表项标记

list-style-type 属性指定列表项标记的类型是:

实例

ul.a {list-style-type: circle;}
ul.b {list-style-type: square;}

ol.c {list-style-type: upper-roman;}
ol.d {list-style-type: lower-alpha;}

尝试一下 »

一些值是无序列表,以及有些是有序列表。

下列是对 list-style-type 属性的常见属性值的描述:

  • none:不使用项目符号
  • disc:实心圆
  • circle:空心圆
  • square:实心方块
  • decimal:阿拉伯数字 
  • lower-alpha:小写英文字母 
  • upper-alpha:大写英文字母 
  • lower-roman:小写罗马数字 
  • upper-roman:大写罗马数字

作为列表项标记的图像

要指定列表项标记的图像,使用列表样式图像属性:

实例

ul
{
list-style-image: url('sqpurple.gif');
}

尝试一下 »

上面的例子在各大主流浏览器中的显示有所差异,IE 和 Opera 显示图像标记比火狐( Firefox ),Chrome 和 Safari 更高一点点。


提示:
  • 利用 list-style-position 可以确定标志出现在列表项内容之外还是内容内部。
  • 如果你想在所有的浏览器放置同样的形象标志,就应使用浏览器兼容性解决方案,方法如下。

浏览器兼容性解决方案

同样在所有的浏览器,下面的例子会显示的图像标记:

实例

ul {
  list-style-type: none;
  padding: 0px;
  margin: 0px;
}
ul li {
  background-image: url(sqpurple.gif);
  background-repeat: no-repeat;
  background-position: 0px 5px;
  padding-left: 14px;
}

尝试一下 »

例子解释:

  • ul :
    • 设置列表样式类型为没有列表项标记
    • 设置填充和边距 0px(浏览器兼容性)
  • ul 中所有 li :
    • 设置图像的 URL ,并设置它只显示一次(无重复)
    • 您需要的定位图像位置(左 0px 和上下 5px )
    • padding-left 属性把文本置于列表中

列表 -简写属性

在单个属性中可以指定所有的列表属性。这就是所谓的简写属性。

为列表使用简写属性,列表样式属性设置如下:

实例

ul {
  list-style: square url("sqpurple.gif");
}

尝试一下 »

如果使用缩写属性值的顺序是:

  1. list-style-type
  2. list-style-position (有关说明,请参见下面的CSS属性表)
  3. list-style-image

在简写属性时,如果上述值丢失一个,其余仍在指定的顺序,就没关系。


Examples

更多实例

所有不同的列表项标记
这个例子演示了所有不同的 CSS 列表项标记。


所有的CSS列表属性

属性描述
list-style简写属性。用于把所有用于列表的属性设置于一个声明中
list-style-image将图象设置为列表项标志。
list-style-position设置列表中列表项标志的位置。
list-style-type设置列表项标志的类型。


CSS 表格


使用 CSS 可以大大提高 HTML 表格的外观。

2020年11月2019年11月程序语言等级更改
12C16.21%+0.17%
23Python12.12%+2.27%
31Java11.68%-4.57%
45C++7.60%+1.99%
55C#4.67%+0.36%
66Visual Basic4.01%-0.22%
77JavaScript2.03%+0.10%
88PHP1.79%0.07%
916R1.64%+0.66%
109SQL1.54%+0.15%

实例

#customers tr:nth-child(even){background-color: #f2f2f2;}  

#customers tr:hover {background-color: #ddd;}


尝试一下 »

表格边框

指定 CSS 表格边框,使用 border 属性。

下面的例子指定了一个表格的 thtd 元素的黑色边框:

实例

table, th, td
{ border: 1px solid black; }

尝试一下 »

请注意,在上面的例子中的表格有双边框。这是因为表和 th / td 元素有独立的边界。

为了显示一个表的单个边框,使用 border-collapse属性。

折叠边框

border-collapse 属性设置表格的边框是否被折叠成一个单一的边框或隔开:

实例

table
{ border-collapse:collapse; }
table,th, td { border: 1px solid black; }

尝试一下 »


表格宽度和高度

width height 属性定义表格的宽度和高度。

下面的例子是设置 100% 的宽度,50 像素的 th 元素的高度的表格:

实例

table
{ width:100%; }
th { height:50px; }

尝试一下 »


表格文字对齐

表格中的文本对齐和垂直对齐属性。

text-align 属性设置水平对齐方式,像左,右,或中心:

实例

td
{ text-align:right; }

尝试一下 »

垂直对齐属性设置垂直对齐,比如顶部,底部或中间:

实例

td
{ height:50px; vertical-align:bottom; }

尝试一下 »


表格填充

如果在表的内容中控制空格之间的边框,应使用 td 和 th 元素的填充属性:

实例

td
{ padding:15px; }

尝试一下 »


表格颜色

下面的例子指定边框的颜色,和 th 元素的文本和背景颜色:

实例

table, td, th
{ border:1px solid green; }
th
{ background-color:green; color:white; }

尝试一下 »


Examples

更多实例

制作一个个性表格
这个例子演示了如何创建一个个性的表格。

设置表格标题的位置
这个例子演示了如何定位表格标题。

指定表格的宽度和高度

这个例子演示了如何指定表格的高度与宽度。


CSS Box Model (盒子模型)


所有 HTML 元素可以看作盒子,在 CSS 中,"box model "这一术语是用来设计和布局时使用。

CSS 盒模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边距,边框,填充,和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型 (Box Model):


CSS box-model

不同部分的说明:

  • Margin(外边距) - 清除边框区域。Margin 没有背景颜色,它是完全透明
  • Border(边框) - 边框周围的填充和内容。边框是受到盒子的背景颜色影响
  • Padding(内边距) - 清除内容周围的区域。会受到框中填充的背景颜色影响
  • Content(内容) - 盒子的内容,显示文本和图像

为了在所有浏览器中的元素的宽度和高度设置正确的话,你需要知道的盒模型是如何工作的。

提示:在盒模型中,外边距可以是负值,而且在很多情况下都要使用负值的外边距。

提示:参考 CSS盒子模型的内部结构 可以了解更多的信息。


元素的宽度和高度

Remark重要: 当您指定一个 CSS 元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。.

下面的例子中的元素的总宽度为 300px:

width:250px;        

padding:10px;        

border:5px solid gray;        

margin:10px;

让我们自己算算:
250px (宽)
+ 20px (左 + 右填充)
+ 10px (左 + 右边框)
+ 20px (左 + 右边距)
= 300px

试想一下,你只有 250 像素的空间。让我们设置总宽度为 250 像素的元素:

实例

width:220px;
padding:10px;
border:5px solid gray;
margin:0px;

尝试一下 »

最终元素的总宽度计算公式是这样的:

总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距

元素的总高度最终计算公式是这样的:

总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距


浏览器的兼容性问题

一旦为页面设置了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 paddingborder 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。

虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。

IE8 及更早IE版本不支持 填充的宽度和边框的宽度属性设。

解决 IE8 及更早版本不兼容问题可以在 HTML 页面声明 <!DOCTYPE html>即可。


相关阅读

CSS 拾遗系列:CSS盒模型科普


CSS 边框

CSS 边框 (border) 可以是围绕元素内容和内边距的一条或多条线,对于这些线条,您可以自定义它们的样式、宽度以及颜色。使用 CSS 边框属性,我们可以创建出比 HTML 中更加优秀的效果。

CSS 边框属性

CSS边框属性允许你指定一个元素边框的样式和颜色。

边框样式

边框样式属性指定要显示什么样的边界。

Remark border-style属性用来定义边框的样式

border-style 值:

none: 默认无边框

dotted: 定义一个点线框

dashed: 定义一个虚线框

solid: 定义实线边界

double: 定义两个边界。 两个边界的宽度和border-width的值相同

groove: 定义3D沟槽边界。效果取决于边界的颜色值

ridge: 定义3D脊边界。效果取决于边界的颜色值

inset:定义一个3D的嵌入边框。效果取决于边界的颜色值

outset: 定义一个3D突出边框。 效果取决于边界的颜色值

尝试一下: 设置边框样式


边框宽度

您可以通过 border-width 属性为边框指定宽度。

为边框指定宽度有两种方法:可以指定长度值,比如 2px 或 0.1em;或者使用 3 个关键字之一,它们分别是 thin 、medium(默认值) 和 thick。

注意:CSS 没有定义 3 个关键字的具体宽度,所以一个用户代理可能把 thin 、medium 和 thick 分别设置为等于 5px、3px 和 2px,而另一个用户代理则分别设置为 3px、2px 和 1px。

实例

p.one
{
border-style:solid;
border-width:5px;
}
p.two
{
border-style:solid;
border-width:medium;
}

尝试一下 »


边框颜色

border-color 属性用于设置边框的颜色,它一次可以接受最多 4 个颜色值。可以设置的颜色:

  • name - 指定颜色的名称,如 "red"
  • RGB - 指定 RGB 值, 如 "rgb(255,0,0)"
  • Hex - 指定16进制值, 如 "#ff0000"

您还可以设置边框的颜色为"transparent"。

注意: border-color 单独使用是不起作用的,必须得先使用 border-style 来设置边框样式。

实例

p.one
{
border-style:solid;
border-color:red;
}
p.two
{
border-style:solid;
border-color:#98bf21;
}

尝试一下 »


边框-单独设置各边

在 CSS 中,可以指定不同的侧面不同的边框:

实例

p
{
border-top-style:dotted;
border-right-style:solid;
border-bottom-style:dotted;
border-left-style:solid;
}

尝试一下 »

上面的例子也可以设置一个单一属性:

实例

border-style:dotted solid;

尝试一下 »

border-style 属性可以有 1-4 个值:

  • border-style:dotted solid double dashed;
    • 上边框是 dotted
    • 右边框是 solid
    • 底边框是 double
    • 左边框是 dashed

  • border-style:dotted solid double;
    • 上边框是 dotted
    • 左、右边框是 solid
    • 底边框是 double

  • border-style:dotted solid;
    • 上、底边框是 dotted
    • 左、右边框是 solid

  • border-style:dotted;
    • 四面边框是 dotted

上面的例子用了 border-style。然而,它也可以和 border-width 、 border-color 一起使用。


透明边框

CSS2 引入了边框颜色值 transparent,这个值用于创建有宽度的不可见边框。

透明样式的定义如下:

a:link, a:visited {    

border-style: solid; border-width: 5px; border-color: transparent;

} a:hover {border-color: gray;}

利用 transparent,使用边框就像是额外的内边距一样;此外还有一个好处,就是能在你需要的时候使其可见。这种透明边框相当于内边距,因为元素的背景会延伸到边框区域(如果有可见背景的话)。 


边框-简写属性

上面的例子用了很多属性来设置边框。

你也可以在一个属性中设置边框。

你可以在"border"属性中设置:

  • border-width
  • border-style (required)
  • border-color

实例

border:5px solid red;

尝试一下 »


Examples

更多实例

所有边框属性在一个声明之中
本例演示用简写属性来将所有四个边框属性设置于同一声明中。

设置下边框的样式
本例演示如何设置下边框的样式。

设置左边框的宽度
本例演示如何设置左边框的宽度。

设置四个边框的颜色
本例演示如何设置四个边框的颜色。可以设置一到四个颜色。

设置右边框的颜色
本例演示如何设置右边框的颜色。


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设置元素的上边框的宽度。


CSS Outlines


轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

轮廓(outline)属性指定了样式,颜色和外边框的宽度。

轮廓(outline)属性的位置让它不像边框那样参与到文档流中,因此轮廓出现或消失时不会影响文档流,即不会导致文档的重新显示。


轮廓(outline)实例

在元素周围画线
本例演示使用outline属性在元素周围画一条线。.

设置轮廓的样式
本例演示如何设置轮廓的样式。

设置轮廓的颜色
本例演示如何设置轮廓的颜色。

设置轮廓的宽度
本例演示如何设置轮廓的宽度。


CSS 轮廓(outline)

轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

CSS outline 属性规定元素轮廓的样式、颜色和宽度。

Outline


提示:你可以在本站的《CSS参考手册》中了解更多关于 CSS outline属性 的信息。


所有 CSS 轮廓(outline)属性

"CSS" 列中的数字表示哪个 CSS 版本定义了该属性 ( CSS1 或者 CSS2 )。

属性 说明 CSS
outline 在一个声明中设置所有的外边框属性 outline-color
outline-style
outline-width
inherit
2
outline-color 设置外边框的颜色 color-name
hex-number
rgb-number
invert
inherit
2
outline-style 设置外边框的样式 none
dotted
dashed
solid
double
groove
ridge
inset
outset
inherit
2
outline-width 设置外边框的宽度 thin
medium
thick
length
inherit
2

CSS Margin(外边距)


CSS Margin (外边距)属性定义元素周围的空间。

CSS Margin 属性接受任何长度单位、百分数值甚至负值。


Margin

margin 清除周围的元素(外边框)的区域。margin 没有背景颜色,是完全透明的

margin 可以单独改变元素的上,下,左,右边距。也可以一次改变所有的属性。

可能的值

说明
auto 设置浏览器边距。
这样做的结果会依赖于浏览器
length 定义一个固定的margin(使用像素,pt,em等)
% 定义一个使用百分比的边距

Remark Margin 可以使用负值,重叠的内容。


CSS Padding(填充)


CSS Padding(填充)属性定义元素边框与元素内容之间的空间。


Padding(填充)

当元素的 Padding(填充)(内边距)被清除时,所"释放"的区域将会受到元素背景颜色的填充。

单独使用填充属性可以改变上下左右的填充。缩写填充属性也可以使用,一旦改变一切都改变。

可能的值

说明
length定义一个固定的填充(像素, pt, em,等)
%使用百分比值定义一个填充

提示:CSS padding 属性可以使用长度值或百分比值,但与 margin 属性不同,它不允许使用负值。


内边距的百分比数值

CSS padding 属性的百分比数值是相对于其父元素的 width 计算的,如果改变了父元素的 width,则它们也会改变。

以下是将段落的内边距设置为父元素 width 的 20% 的示例:

p {padding: 20%;}

假设一个段落的父元素是 div 元素,那么它的 padding 的 width 计算是根据 div 进行的:

实例

<div style="width: 200px;">        

<p>这个段落包含在一个宽度为200像素的DIV中。</p>    

</div>


尝试一下 »
点击“尝试一下”按钮查看在线实例

注意:上下内边距与左右内边距一致,即上下内边距的百分数会相对于父元素宽度设置,而不是相对于高度。


填充- 单边内边距属性

在CSS中,它可以指定不同的侧面不同的填充:

实例

padding-top:25px;
padding-bottom:25px;
padding-right:50px;
padding-left:50px;

尝试一下 »

填充 - 简写属性

为了缩短代码,它可以在一个属性中指定的所有填充属性。

这就是所谓的缩写属性。所有的填充属性的缩写属性是"padding":

实例

padding:25px 50px;

尝试一下 »

Padding 属性,可以有一到四个值。

padding:25px 50px 75px 100px;

  • 上填充为25px
  • 右填充为50px
  • 下填充为75px
  • 左填充为100px

padding:25px 50px 75px;

  • 上填充为25px
  • 左右填充为50px
  • 下填充为75px

padding:25px 50px;

  • 上下填充为25px
  • 左右填充为50px

padding:25px;

  • 所有的填充都是25px

Examples

更多实例

在一个声明中的所有填充属性
这个例子演示了使用缩写属性设置在一个声明中的所有填充属性,可以有一到四个值。

设置左部填充
这个例子演示了如何设置元素左填充。

设置右部填充
这个例子演示了如何设置元素右填充。.

设置上部填充
这个例子演示了如何设置元素上填充。

设置下部填充
这个例子演示了如何设置元素下填充。


所有的CSS填充属性

属性说明
padding使用缩写属性设置在一个声明中的所有填充属性
padding-bottom设置元素的底部填充
padding-left设置元素的左部填充
padding-right设置元素的右部填充
padding-top设置元素的顶部填充


CSS 分组嵌套 选择器

CSS 分组可以将具有相同样式的选择器进行分组,减少代码量。

CSS 嵌套适用于选择器内部的选择器的样式。


Grouping Selectors

在样式表中有很多具有相同样式的元素。

实例

h1{
    color:green;
}
h2{
    color:green;
}
p{
    color:green;
}

尝试一下 »

为了尽量减少代码,你可以使用分组选择器。

每个选择器用逗号分隔.

在下面的例子中,我们对以上代码使用分组选择器:

实例

h1,h2,p{
color:green;
}

尝试一下 »

提示:您可以对任意多个选择器进行分组,CSS 对此没有任何限制。


嵌套选择器

它可能适用于选择器内部的选择器的样式。

在下面的例子,为所有 p 元素指定一个样式,为所有元素指定一个 class="marked"的样式,并仅用于class="标记",类内的 p 元素指定第三个样式:

实例

p{
color:blue;
text-align:center;
}
.marked{
background-color:red;
}
.marked p{
color:white;
}

尝试一下 »


CSS 尺寸 (Dimension)


CSS 尺寸 (Dimension) 属性允许你控制元素的高度和宽度。同样,它允许你增加行间距。


Examples

更多实例

设置元素的高度

这个例子演示了如何设置不同元素的高度。

使用百分比设置图像的高度

这个例子演示了如何使用百分比值设置元素的高度。

使用像素值来设置元素的宽度

本例演示如何使用像素值来设置元素的宽度。

设置元素的最大高度

此示例演示如何设置元素的最大高度。

使用百分比来设置元素的最大宽度

本例演示如何使用百分比值来设置元素的最大宽度。

设置元素的最低高度

此示例演示如何设置元素的最小高度。

使用像素值设置元素的最小宽度

这个例子演示了如何使用像素值设置元素的最小宽度。


所有CSS 尺寸 (Dimension)属性

属性 描述
height 设置元素的高度。
line-height 设置行高。
max-height 设置元素的最大高度。
max-width 设置元素的最大宽度。
min-height 设置元素的最小高度。
min-width 设置元素的最小宽度。
width 设置元素的宽度。

CSS Display(显示)Visibility(可见性)

CSS display 属性和 visibility 属性都可以用来隐藏某个元素,但是这两个属性有不同的定义,请详细阅读以下内容。


display 属性设置一个元素应如何显示,visibility 属性指定一个元素应可见还是隐藏。

Box 1

Box 2
Box 3

隐藏元素 - display:none 或 visibility:hidden

隐藏一个元素可以通过把 display 属性设置为"none",或把 visibility 属性设置为"hidden"。但是请注意,这两种方法会产生不同的结果。

visibility:hidden 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

实例

h1.hidden {visibility:hidden;}

尝试一下 »

display:none 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

实例

h1.hidden {display:none;}

尝试一下 »

CSS Display - 块和内联元素

块元素是一个元素,占用了全部宽度,在前后都是换行符。

块元素的例子:

  • <h1>
  • <p>
  • <div>

内联元素只需要必要的宽度,不强制换行。

内联元素的例子:

  • <span>
  • <a>

如何改变一个元素显示

可以更改内联元素为块元素,反之亦然,可以使页面看起来是以一种特定的方式组合,并仍然遵循 web 标准。

下面的示例把列表项显示为内联元素:

实例

li {display:inline;}

尝试一下 »

下面的示例把 span 元素作为块元素:

实例

span {display:block;}

尝试一下 »

注意:变更元素的显示类型看该元素是如何显示,它是什么样的元素。例如:一个内联元素设置为 display:block 是不允许有它内部的嵌套块元素。


Examples

更多实例

如何显示元素的内联元素。

这个例子演示了如何显示一个元素的内联元素。

如何显示元素的块元素。

这个例子演示了如何显示一个元素的块元素。

如何使用一个表的collapse属性。

这个例子演示了如何使用表的collapse属性。

CSS Positioning (定位)

CSS position 属性,允许您将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。


定位有时很棘手!

决定显示在前面的元素!

元素可以重叠!


Positioning (定位)

CSS 定位属性允许你为一个元素定位。它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么。

元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非事先设定 position 属性。他们也有不同的工作方式,这取决于定位方法.

有四种不同的定位方法。


Static 定位

HTML 元素的默认值,即没有定位,元素出现在正常的流中。

静态定位的元素不会受到 top, bottom, left, right 影响。


Fixed 定位

元素的位置相对于浏览器窗口是固定位置。

即使窗口是滚动的它也不会移动:

实例

p.pos_fixed
{
position:fixed;
top:30px;
right:5px;
}

尝试一下 »

注意: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持.

Fixed 定位使元素的位置与文档流无关,因此不占据空间。

Fixed 定位的元素和其他元素重叠。


Relative 定位

相对定位元素的定位是相对其正常位置。

实例

h2.pos_left
{
position:relative;
left:-20px;
}
h2.pos_right
{
position:relative;
left:20px;
}

尝试一下 »

可以移动的相对定位元素的内容和相互重叠的元素,它原本所占的空间不会改变。

实例

h2.pos_top
{
position:relative;
top:-50px;
}

尝试一下 »

相对定位元素经常被用来作为绝对定位元素的容器块。


Absolute 定位

绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于 <html>:

实例

h2
{
position:absolute;
left:100px;
top:150px;
}

尝试一下 »

Absolutely 定位使元素的位置与文档流无关,因此不占据空间。

Absolutely 定位的元素和其他元素重叠。


重叠的元素

元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素

z-index 属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)

一个元素可以有正数或负数的堆叠顺序:

实例

img
{
position:absolute;
left:0px;
top:0px;
z-index:-1;
}

尝试一下 »

具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。

注意: 如果两个定位元素重叠,没有指定 z - index,最后定位在 HTML 代码中的元素将被显示在最前面。


Examples

更多实例

裁剪元素的外形

此示例演示如何设置元素的外形。该元素被剪裁成这种形状,并显示出来。

如何使用滚动条来显示元素内溢出的内容

这个例子演示了overflow属性创建一个滚动条,当一个元素的内容在指定的区域过大时如何设置以适应。

如何设置浏览器自动溢出处理

这个例子演示了如何设置浏览器来自动处理溢出。

更改光标

这个例子演示了如何改变光标。


所有的CSS定位属性

"CSS" 列中的数字表示哪个CSS(CSS1 或者CSS2)版本定义了该属性。

属性说明CSS
bottom定义了定位元素下外边距边界与其包含块下边界之间的偏移。auto
length
%
inherit
2
clip剪辑一个绝对定位的元素shape
auto
inherit
2
cursor显示光标移动到指定的类型url
auto
crosshair
default
pointer
move
e-resize
ne-resize
nw-resize
n-resize
se-resize
sw-resize
s-resize
w-resize
text
wait
help
2
left定义了定位元素左外边距边界与其包含块左边界之间的偏移。auto
length
%
inherit
2
overflow
设置当元素的内容溢出其区域时发生的事情。auto
hidden
scroll
visible
inherit
2
position指定元素的定位类型absolute
fixed
relative
static
inherit
2
right定义了定位元素右外边距边界与其包含块右边界之间的偏移。auto
length
%
inherit
2
top定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。auto
length
%
inherit
2
z-index设置元素的堆叠顺序 number
auto
inherit
2

相关文章

CSS 参考手册:CSS position 属性

CSS Float(浮动)

CSS float 属性定义元素在哪个方向浮动,浮动元素会生成一个块级框,直到该块级框的外边缘碰到包含框或者其他的浮动框为止。


什么是 CSS Float(浮动)?



CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。

Float(浮动),往往是用于图像,但它在布局时一样非常有用。


元素怎样浮动

元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。

一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

浮动元素之后的元素将围绕它。

浮动元素之前的元素将不会受到影响。

如果图像是右浮动,下面的文本流将环绕在它左边:

实例

img
{
float:right;
}

尝试一下 »

彼此相邻的浮动元素

如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻。

在这里,我们对图片廊使用 float 属性:

实例

.thumbnail
{
float:left;
width:110px;
height:90px;
margin:5px;
}

尝试一下 »

清除浮动 - 使用 clear

元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。

clear 属性指定元素两侧不能出现浮动元素。

使用 clear 属性往文本中添加图片廊:

实例

.text_line
{
clear:both;
}

尝试一下 »

提示:如果您想要了解更多有关 clear 属性的知识,请访问本站的CSS参考手册:CSS clear 属性


Examples

更多实例

为图像添加边框和边距并浮动到段落的右侧

让我们为图像添加边框和边距并浮动到段落的右侧

标题和图片向右侧浮动

让标题和图片向右侧浮动。

让段落的第一个字母浮动到左侧

改变样式,让段落的第一个字母浮动到左侧。

创建一个没有表格的网页

使用 float 创建一个网页页眉、页脚、左边的内容和主要内容。


CSS 中所有的浮动属性

"CSS" 列中的数字表示不同的 CSS 版本(CSS1 或 CSS2)定义了该属性。

属性描述CSS
clear指定不允许元素周围有浮动元素。left
right
both
none
inherit
1
float指定一个盒子(元素)是否可以浮动。left
right
none
inherit
1

相关文章

CSS 参考手册:CSS float 属性 

CSS 水平对齐 (Horizontal Align)

关于 CSS 中元素的水平对齐 (Horizontal Align),你可以使用多种属性来进行设置。


在CSS中,有几个属性用于元素水平对齐。


块元素对齐

块元素是一个元素,占用了全宽,前后都是换行符。

块元素的例子:

  • <h1>
  • <p>
  • <div>

文本对齐,请参阅 CSS文本 章节。.

在这一章中,我们会告诉你块元素如何水平对齐布局。


中心对齐,使用margin属性

块元素可以把左,右页边距设置为"自动"对齐。

Note: 在IE8中使用margin:auto属性无法正常工作,除非声明 !DOCTYPE

margin属性可任意拆分为左,右页边距设置自动指定,结果都是出现居中元素:

实例

.center
{
margin-left:auto;
margin-right:auto;
width:70%;
background-color:#b0e0e6;
}

尝试一下 »

提示: 如果宽度是 100%,对齐是没有效果的。

注意:IE5 中块元素有一个 margin 处理 BUG。为了使上述例子能工作,在 IE5 中,需要添加一些额外的代码。 

实例

<style>

        .container

        {

            text-align:center;

        }

        .center

        {

            margin-left:auto;

            margin-right:auto;

            width:70%;

            background-color:#b0e0e6;

            text-align:left;

        }

</style>


尝试一下 »
点击“尝试一下”按钮查看在线实例

使用 position 属性设置左,右对齐

元素对齐的方法之一是使用绝对定位:

实例

.right
{
position:absolute;
right:0px;
width:300px;
background-color:#b0e0e6;
}

尝试一下 »

注意:绝对定位与文档流无关,所以它们可以覆盖页面上的其它元素。


使用 float 属性设置左,右对齐

使用 float 属性是对齐元素的方法之一:

实例

.right
{
float:right;
width:300px;
background-color:#b0e0e6;
}

尝试一下 »


使用 Padding 设置垂直居中对齐

CSS 中一个简单的设置垂直居中对齐的方式就是头部顶部使用 padding:

.center { padding: 70px 0; border: 3px solid green; }

如果要水平和垂直都居中,可以使用 padding 和 text-align: center:

.center { padding: 70px 0; border: 3px solid green; text-align: center; }


Crossbrowser 兼容性问题

类似这样的元素对齐时,预先确定 margin 和元素的填充,始终是一个好主意。这是为了避免在不同的浏览器中的可视化差异。

IE8 和早期有一个问题,当使用 float 属性时。如果一个容器元素(在本例中<div class="container">)指定的宽度,!DOCTYPE 声明缺失,IE8 和早期版本会在右边增添 17px 的 margin。这似乎是一个滚动的预留空间。使用 float 属性始终设置在 DOCTYPE 声明中!

实例

body
{
margin:0;
padding:0;
}
.right
{
float:right;
width:300px;
background-color:#b0e0e6;
}

尝试一下 »


CSS 组合选择符

CSS 组合选择符可以让你直观的明白选择器与选择器之间的关系。

CSS 组合选择符

组合选择符说明了两个选择器直接的关系。

CSS组合选择符包括各种简单选择符的组合方式。

在 CSS3 中包含了四种组合方式:

  • 后代选取器(以空格分隔)
  • 子元素选择器(以大于号分隔)
  • 相邻兄弟选择器(以加号分隔)
  • 普通兄弟选择器(以波浪号分隔)

后代选取器

后代选取器匹配所有指定元素的后代元素。

以下实例选取所有 <p> 元素插入到 <div> 元素中: 

实例

div p
{
background-color:yellow;
}

尝试一下 »

子元素选择器

与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。

以下实例选择了<div>元素中所有直接子元素 <p> :

实例

div>p
{
background-color:yellow;
}

尝试一下 »

相邻兄弟选择器

相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。

如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。

以下实例选取了所有位于 <div> 元素后的第一个 <p> 元素:

实例

div+p
{
background-color:yellow;
}

尝试一下 »


普通相邻兄弟选择器

普通兄弟选择器选取所有指定元素的相邻兄弟元素。

以下实例选取了所有 <div> 元素之后的所有相邻兄弟元素 <p> : 

实例

div~p
{
background-color:yellow;
}

尝试一下 »

CSS 伪类 (Pseudo-classes)


CSS 伪类是用来添加一些选择器的特殊效果。

由于状态的变化是非静态的,所以元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和 class 有些类似,但它是基于文档之外的抽象,所以叫伪类。


语法

伪类的语法:

selector:pseudo-class {property:value;}

CSS 类也可以使用伪类:

selector.class:pseudo-class {property:value;}


anchor 伪类

在支持 CSS 的浏览器中,链接的不同状态都可以以不同的方式显示

实例

a:link {color:#FF0000;} /* 未访问的链接 */
a:visited {color:#00FF00;} /* 已访问的链接 */
a:hover {color:#FF00FF;} /* 鼠标划过链接 */
a:active {color:#0000FF;} /* 已选中的链接 */

尝试一下 »

注意: 在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。

注意: 在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。

注意:伪类的名称不区分大小写。


伪类和 CSS 类

伪类可以与 CSS 类配合使用:

a.red:visited {color:#FF0000;}       

<a class="red" href="css-syntax.html">CSS Syntax</a>

如果在上面的例子的链接已被访问,它会显示为红色。


CSS - :first - child 伪类

您可以使用 :first-child 伪类来选择元素的第一个子元素

注意:在 IE8 的之前版本必须声明 <!DOCTYPE> ,这样 :first-child 才能生效。

匹配第一个 <p> 元素

在下面的例子中,选择器匹配作为任何元素的第一个子元素的 <p> 元素:

实例

<html>
<head>
<style>
p:first-child
{
color:blue;
}
</style>
</head>

<body>
<p>我是一个强壮的男人.</p>
<p>我是一个强壮的男人.</p>
</body>
</html>

尝试一下 »

匹配所有 <p> 元素中的第一个 <i> 元素

在下面的例子中,选择相匹配的所有 <p> 元素的第一个 <i> 元素:

实例

<html>
<head>
<style>
p > i:first-child
{
color:blue;
}
</style>
</head>

<body>
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p> 
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p> 
</body>
</html>

尝试一下 »

匹配所有作为第一个子元素的 <p> 元素中的所有 <i> 元素

在下面的例子中,选择器匹配所有作为元素的第一个子元素的 <p> 元素中的所有 <i> 元素:

实例

<html>
<head>
<style>
p:first-child i
{
color:blue;
}
</style>
</head>

<body>
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p>
<p>我是一个 <i>强壮</i> 的男人. 我是一个 <i>强壮</i> 的男人.</p>
</body>
</html>

尝试一下 »

CSS - :lang 伪类

:lang 伪类使你有能力为不同的语言定义特殊的规则

注意:IE8 必须声明 <!DOCTYPE> 才能支持; lang 伪类。

在下面的例子中,:lang 类为属性值为 no 的 q 元素定义引号的类型:

实例

<html>
<head>
<style>
q:lang(no) {quotes: "~" "~";}
</style>
</head>

<body>
<p>一些文字 <q lang="no">段落中的引用</q> 一些文字。</p>
</body>
</html>

尝试一下 »


Examples

更多实例

为超链接添加不同样式
这个例子演示了如何为超链接添加其他样式。

使用 :focus
这个例子演示了如何使用 :focus 伪类。


所有CSS伪类/元素

选择器示例示例说明
:linka:link选择所有未访问链接
:visiteda:visited选择所有访问过的链接
:activea:active选择正在活动链接
:hovera:hover把鼠标放在链接上的状态
:focusinput:focus选择元素输入后具有焦点
:first-letterp:first-letter选择每个<p> 元素的第一个字母
:first-linep:first-line选择每个<p> 元素的第一行
:first-childp:first-child选择器匹配属于任意元素的第一个子元素的 <]p> 元素
:beforep:before在每个<p>元素之前插入内容
:afterp:after在每个<p>元素之后插入内容
:lang(language)p:lang(it)为<p>元素的lang属性选择一个开始值

扩展阅读

CSS 拾遗系列:浅谈CSS中的伪元素和伪类


CSS 伪元素


CSS 伪元素是用来添加一些选择器的特殊效果。

CSS 伪元素控制的内容和元素是没有差别的,但是它本身只是基于元素的抽象,并不存在于文档中,所以称为伪元素。


语法

伪元素的语法:

selector:pseudo-element {property:value;}

CSS类也可以使用伪元素:

selector.class:pseudo-element {property:value;}

在CSS1和CSS2中,伪元素和伪类都采用单冒号进行表示,在CSS3中为了区分伪元素和伪类,规定使用双冒号代表伪元素,单冒号代表伪类,即CSS3标准中应该这么写:selector.class::pseudo-element {property:value;}
虽然CSS3规定了必须使用双冒号,但实际上使用单冒号也可以工作,这是由于CSS的兼容性带来的,但这并不意味着可以无所忌惮的使用单冒号,因为单双冒号的区分,可以给CSS代码带来更高的可读性。

:first-line 伪元素

"first-line" 伪元素用于向文本的首行设置特殊样式。

在下面的例子中,浏览器会根据 "first-line" 伪元素中的样式对 p 元素的第一行文本进行格式化:

实例

p:first-line
{
color:#ff0000;
font-variant:small-caps;
}

尝试一下 »

注意:"first-line" 伪元素只能用于块级元素。

注意: 下面的属性可应用于 "first-line" 伪元素:

  • font properties
  • color properties 
  • background properties
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

:first-letter 伪元素

"first-letter" 伪元素用于向文本的首字母设置特殊样式:

实例

p:first-letter
{
color:#ff0000;
font-size:xx-large;
}

尝试一下 »

注意: "first-letter" 伪元素只能用于块级元素。

注意: 下面的属性可应用于 "first-letter" 伪元素: 

  • font properties
  • color properties 
  • background properties
  • margin properties
  • padding properties
  • border properties
  • text-decoration
  • vertical-align (only if "float" is "none")
  • text-transform
  • line-height
  • float
  • clear

提示:有关 first-letter 伪元素的相关描述,你可以参考本站的 CSS :first-letter 伪元素 一节。


伪元素和 CSS 类

伪元素可以结合 CSS 类: 

实例

p.article:first-letter {color:#ff0000;}       

<p class="article">A paragraph in an article</p>


尝试一下 »
点击“尝试一下”按钮查看在线实例

上面的例子会使所有 class 为 article 的段落的首字母变为红色。


Multiple Pseudo-elements

可以结合多个伪元素来使用。

在下面的例子中,段落的第一个字母将显示为红色,其字体大小为 xx-large。第一行中的其余文本将为蓝色,并以小型大写字母显示。

段落中的其余文本将以默认字体大小和颜色来显示:

实例

p:first-letter
{
color:#ff0000;
font-size:xx-large;
}
p:first-line
{
color:#0000ff;
font-variant:small-caps;
}

尝试一下 »

CSS - :before 伪元素

":before" 伪元素可以在元素的内容前面插入新内容。

下面的例子在每个 <h1>元素前面插入一幅图片:

实例

h1:before
{
content:url(smiley.gif);
}

尝试一下 »

CSS - :after 伪元素

":after" 伪元素可以在元素的内容之后插入新内容。

下面的例子在每个 <h1> 元素后面插入一幅图片:

实例

h1:after
{
content:url(smiley.gif);
}

尝试一下 »

所有CSS伪类/元素

选择器示例示例说明
:linka:link选择所有未访问链接
:visiteda:visited选择所有访问过的链接
:activea:active选择正在活动链接
:hovera:hover把鼠标放在链接上的状态
:focusinput:focus选择元素输入后具有焦点
:first-letterp:first-letter选择每个<p> 元素的第一个字母
:first-linep:first-line选择每个<p> 元素的第一行
:first-childp:first-child选择器匹配属于任意元素的第一个子元素的 <]p> 元素
:beforep:before在每个<p>元素之前插入内容
:afterp:after在每个<p>元素之后插入内容
:lang(language)p:lang(it)为<p>元素的lang属性选择一个开始值


CSS 导航栏


导航栏

熟练使用导航栏,对于任何网站都非常重要。

使用 CSS 你可以转换成好看的导航栏而不是枯燥的 HTML 菜单。


导航栏=链接列表

作为标准的 HTML 基础一个导航栏是必须的。

在我们的例子中我们将建立一个标准的 HTML 列表导航栏。

导航条基本上是一个链接列表,所以使用 <ul><li> 元素非常有意义:

实例

<ul>
 <li><a href="default.asp">主页</a></li>
 <li><a href="news.asp">新闻</a></li>
 <li><a href="contact.asp">联系</a></li>
 <li><a href="about.asp">关于</a></li>
</ul>

尝试一下 »

现在,让我们从列表中删除边距和填充:

实例

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

尝试一下 »

例子解析:

  • list-style-type:none - 移除列表前小标志。一个导航栏并不需要列表标记

  • 移除浏览器的默认设置将边距和填充设置为 0

上面的例子中的代码是垂直和水平导航栏使用的标准代码。


垂直导航栏

上面的代码,我们只需要 元素的样式,建立一个垂直的导航栏:

实例

a
{
display:block;
width:60px;
}

尝试一下 »

示例说明:

  • display:block - 显示块元素的链接,让整体变为可点击链接区域(不只是文本),它允许我们指定宽度

  • width:60px - 块元素默认情况下是最大宽度。我们要指定一个 60 像素的宽度

提示:查看完全样式的垂直导航栏的示例.

注意: 请务必指定 元素在垂直导航栏的的宽度。如果省略宽度,IE6可能产生意想不到的效果。


水平导航栏

有两种方法创建横向导航栏。使用内联浮动的列表项。

这两种方法都很好,但如果你想链接到具有相同的大小,你必须使用浮动的方法。


内嵌列表项

建立一个横向导航栏的方法之一是指定

元素, 上述代码是标准的内嵌:

实例

li
{ display:inline; }

尝试一下 »

实例解析:

  • display:inline - 默认情况下,<li> 元素是块元素。在这里,我们删除换行符之前和之后每个列表项,以显示一行。

提示: 查看 完全样式的水平导航栏的示例.


浮动列表项

在上面的例子中链接有不同的宽度。

对于所有的链接宽度相等,浮动

元素,并指定为 元素的宽度:

实例

li
{ float:left; }
a
{ display:block; width:60px; }

尝试一下 »

实例解析:

  • float:left - 使用浮动块元素的幻灯片彼此相邻

  • display:block - 显示块元素的链接,让整体变为可点击链接区域(不只是文本),它允许我们指定宽度

  • width:60px - 块元素默认情况下是最大宽度。我们要指定一个60像素的宽度

  • display:inline; -默认情况下,元素是块元素。在这里,我们删除换行符之前和之后每个列表项,以显示一行 。

Tip:查看完全样式的横向导航栏的示例..


CSS 下拉菜单

使用 CSS 创建一个鼠标移动上去后显示下拉菜单的效果。


基本下拉菜单

当鼠标移动到指定元素上时,会出现下拉菜单。

实例

<style>
.dropdown
{
    position: relative;
    display: inline-block;}
.dropdown-content {
    display: none;
    position: absolute; }
.dropdown:hover .dropdown-content {
    display: block;}
</style>

尝试一下 »

实例解析

HTML 部分:

我们可以使用任何的 HTML元素来打开下拉菜单,如:<span>, 或 a <button> 元素。

使用容器元素 (如: <div>) 来创建下拉菜单的内容,并放在任何你想放的位置上。

使用 <div> 元素来包裹这些元素,并使用 CSS 来设置下拉内容的样式。

CSS 部分:

.dropdown 类使用 position:relative, 这将设置下拉菜单的内容放置在下拉按钮 (使用 position:absolute) 的右下角位置。

.dropdown-content 类中是实际的下拉菜单。默认是隐藏的,在鼠标移动到指定元素后会显示。 注意 min-width 的值设置为 160px。你可以随意修改它。 注意: 如果你想设置下拉内容与下拉按钮的宽度一致,可设置 width 为 100% ( overflow:auto 设置可以在小尺寸屏幕上滚动)。

我们使用 box-shadow 属性让下拉菜单看起来像一个"卡片"。

:hover 选择器用于在用户将鼠标移动到下拉按钮上时显示下拉菜单。


下拉菜单

创建下拉菜单,并允许用户选取列表中的某一项:

这个实例类似前面的实例,当我们在下拉列表中添加了链接,并设置了样式:

实例

<style>
/* 容器 <div> - 需要定位下拉内容 */
.dropdown {
    position: relative;
    display: inline-block;}
/* 下拉内容 (默认隐藏) */
.dropdown-content {
    display: none;
    position: absolute;}
/* 下拉菜单的链接 */
.dropdown-content a {
    text-decoration: none;
    display: block;}
/* 鼠标移上去后修改下拉菜单链接颜色 */
.dropdown-content a:hover {background-color: #f1f1f1}
/* 在鼠标移上去后显示下拉菜单 */
.dropdown:hover .dropdown-content {
    display: block;}
/* 当下拉内容显示后修改下拉按钮的背景颜色 */
.dropdown:hover .dropbtn {
    background-color: #3e8e41;}
</style>


尝试一下 »

下拉内容对齐方式

float:left;

float:right;

实例

.dropdown-content {
right: 0;}
尝试一下 »

更多实例

图片下拉
该实例演示了如何如何在下拉菜单中添加图片。

导航条下拉
该实例演示了如何在导航条上添加下拉菜单。


CSS 图片廊


以下是使用CSS创建图片廊:

Klematis
添加图片描述
Klematis
添加图片描述
Klematis
添加图片描述
Klematis
添加图片描述






图片廊

以下是使用CSS创建图片廊:

实例


<style>
div.img
  { height:auto;width:auto;float:left;text-align:center;}
div.img img
  { display:inline;}
div.desc
  { text-align:center;
  font-weight:normal;
  width:120px;
  margin:2px;
  }
</style>

尝试一下 »

CSS 图像透明/不透明


使用 CSS 很容易创建透明的图像。

注意:CSS Opacity 属性是W3C 的 CSS3 建议的一部分。


实例1 - 创建一个透明图像

CSS3中属性的透明度是 opacity.

首先,我们将向您展示如何用CSS创建一个透明图像。

正常的图像

klematis

相同的图像带有透明度:

klematis

看看下面的CSS:

img
{  opacity:0.4;  filter:alpha(opacity=40);  /*IE8 及更早版本 */  }

IE9,Firefox,Chrome,Opera,和 Safari 浏览器使用透明度属性可以将图像变的不透明。 Opacity 属性值从0.0 - 1.0。值越小,使得元素更加透明。

IE8和早期版本使用滤镜:alpha(opacity= x)。 x可以采取的值是从0 - 100。较低的值,使得元素更加透明。

提示:在本站的 CSS 参考手册中对 CSS opacity 属性有详细介绍。

实例

img

{  opacity:0.4;  filter:alpha(opacity=40);  /*IE8 及更早版本 */  }


尝试一下 »

实例2 - 图像的透明度 - 悬停效果

将鼠标移到图像上:

klematis

klematis

CSS样式:

img:hover { opacity:1.0; filter:alpha(opacity=100); /*  IE8 及更早版本 */ }

第一个 CSS 块是和例1中的代码类似。此外,我们还增加了当用户将鼠标悬停在其中一个图像上时发生什么。在这种情况下,当用户将鼠标悬停在图像上时,我们希望图片是清晰的。

此 CSS 是:opacity=1.

IE8 和更早版本使用: filter:alpha(opacity=100).

当鼠标指针远离图像时,图像将重新具有透明度。

实例

img:hover

{ opacity:1.0;

filter:alpha(opacity=100); /* For IE8 and earlier */}


尝试一下 »

实例3 - 透明的盒子中的文字

这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。这些文本在透明框里。

首先,我们创建一个固定的高度和宽度的div元素,带有一个背景图片和边框。然后我们在第一个 div 内部创建一个较小的 div 元素。 这个 div 也有一个固定的宽度,背景颜色,边框 - 而且它是透明的。透明的 div 里面,我们在 P 元素内部添加一些文本。

实例

div .background

{ width:500px;height:250px;border:2px solid black;

background:url(https://atts.51coolma.cn/attachments/image/20200818/1597713899949694.jpg) repeat;

}


尝试一下 »



CSS 图像拼合技术


图像拼合

图像拼合就是单个图像的集合。

有许多图像的网页可能需要很长的时间来加载和生成多个服务器的请求。

使用图像拼合会降低服务器的请求数量,并节省带宽。


图像拼合 - 简单实例

与其使用三个独立的图像,不如我们使用这种单个图像("img_navsprites.gif"):

navigation images

有了CSS,我们可以只显示我们需要的图像的一部分。

在下面的例子CSS指定显示 "img_navsprites.gif" 的图像的一部分:

实例

img.home
{
width:46px;
height:44px;
background:url(img_navsprites.gif) 0 0;
}

尝试一下 »

实例解析:

  • <img class="home" src="img_trans.gif" /> -因为不能为空,src 属性只定义了一个小的透明图像。显示的图像将是我们在 CSS 中指定的背景图像
  • 宽度:46px;高度:44px; - 定义我们使用的那部分图像
  • background:url(img_navsprites.gif) 0 0; - 定义背景图像和它的位置(左 0px,顶部 0px)

这是使用图像拼合最简单的方法,现在我们使用链接和悬停效果。


图像拼合 - 创建一个导航列表

我们想使用拼合图像 ("img_navsprites.gif"),以创建一个导航列表。

我们将使用一个 HTML 列表,因为它可以链接,同时还支持背景图像:

实例

#navlist{position:relative;}
#navlist li{margin:0;padding:0;list-style:none;position:absolute;top:0;}
#navlist li, #navlist a{height:44px;display:block;}

#home{left:0px;width:46px;}
#home{background:url('img_navsprites.gif') 0 0;}

#prev{left:63px;width:43px;}
#prev{background:url('img_navsprites.gif') -47px 0;}

#next{left:129px;width:43px;}
#next{background:url('img_navsprites.gif') -91px 0;}

尝试一下 »

实例解析:

  • #navlist{position:relative;} - 位置设置相对定位,让里面的绝对定位
  • #navlist li{margin:0;padding:0;list-style:none;position:absolute;top:0;} - marginpadding 设置为0,列表样式被删除,所有列表项是绝对定位
  • #navlist li, #navlist a{height:44px;display:block;} - 所有图像的高度是 44px

现在开始每个具体部分的定位和样式:

  • #home{left:0px;width:46px;} - 定位到最左边的方式,以及图像的宽度是 46px
  • #home{background:url(img_navsprites.gif) 0 0;} - 定义背景图像和它的位置(左0px,顶部0px)
  • #prev{left:63px;width:43px;} - 左外边距定位63px(#home宽46px+项目之间的一些多余的空间),宽度为43px。
  • #prev{background:url('img_navsprites.gif') -47px 0;} - 定义背景图像向右侧定位47px(#home宽46px+分隔线的1px)
  • #next{left:129px;width:43px;}- 左外边距定位129px(#prev 63px + #prev宽是43px + 剩余的空间), 宽度是43px.
  • >#next{background:url('img_navsprites.gif') no-repeat -91px 0;}
  • - 定义背景图像向右侧定位91px(#home 46px+1px的分割线+#prev宽43px+1px的分隔线)

图像拼合 - 悬停效果

现在,我们希望我们的导航列表中添加一个悬停效果。

lamp:hover 选择器用于鼠标悬停在元素上的显示的效果

提示:
:hover 选择器可以运用于所有元素。在本站CSS参考手册的CSS:hover选择器一节,你可以更加了解该选择器的用法。

我们的新图像 ("img_navsprites_hover.gif") 包含三个导航图像和三幅图像:

navigation images

因为这是一个单一的图像,而不是6个单独的图像文件,当用户停留在图像上不会有延迟加载。

我们添加悬停效果只添加三行代码:

实例

#home a:hover{background: url('img_navsprites_hover.gif') 0 -45px;}
#prev a:hover{background: url('img_navsprites_hover.gif') -47px -45px;}
#next a:hover{background: url('img_navsprites_hover.gif') -91px -45px;}

尝试一下 »

实例解析:

  • 由于该列表项包含一个链接,我们可以使用:hover 伪类
  • #home a:hover{background: transparent url(img_navsprites_hover.gif) 0 -45px;} - 对于所有三个悬停图像,我们指定相同的背景位置,只是每个再向下45px


CSS 媒体类型


媒体类型允许你指定文件将如何在不同媒体呈现。该文件可以以不同的方式显示在屏幕上,在纸张上,或听觉浏览器等等。 


媒体类型

某些 CSS 属性仅仅被设计为针对某些媒介。比方说 voice-family 属性被设计为针对听觉用户终端。其他一些属性可用于不同的媒体类型。例如,font-size属性可用于屏幕和印刷媒体,但有不同的值。屏幕和纸上的文件不同,通常需要一个更大的字体,sans - serif字体比较适合在屏幕上阅读,而 serif 字体更容易在纸上阅读。


@media 规则

@media 规则允许在相同样式表为不同媒体设置不同的样式。

在下面的例子告诉我们浏览器屏幕上显示一个14像素的 Verdana 字体样式。但是如果页面打印,将是10个像素的 Times 字体。请注意,font-weight在屏幕上和纸上设置为粗体:

<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>

你可以自己尝试看看 ! 如果您使用的是 Mozilla / Firefox 或 IE5+打印此页,你会看到,Media Types将使用另一种比其他文本字体大小小点的字体显示。

提示:有关 @media 规则的更多信息,请参考CSS参考手册的CSS @media 查询部分。


其他媒体类型

注意:媒体类型名称不区分大小写。

媒体类型描述
all用于所有的媒体设备。
aural用于语音和音频合成器。
braille用于盲人用点字法触觉回馈设备。
embossed用于分页的盲人用点字法打印机。
handheld用于小的手持的设备。
print用于打印机。
projection用于方案展示,比如幻灯片。
screen用于电脑显示器。
tty用于使用固定密度字母栅格的媒体,比如电传打字机和终端。
tv用于电视机类型的设备。


扩展阅读

CSS3教程:CSS3 多媒体查询


CSS 属性 选择器

顾名思义,CSS 属性选择器就是指可以根据元素的属性以及属性值来选择元素。


具有特定属性的HTML元素样式

具有特定属性的 HTML 元素样式不仅仅是 class 和 id。

注意:IE7 和 IE8 需声明 !DOCTYPE 才支持属性选择器!IE6 和更低的版本不支持属性选择器。


属性选择器

下面的例子是把包含标题(title)的所有元素变为蓝色:

实例

[title]
{ color:blue; }

尝试一下 »


属性和值选择器

下面的实例改变了标题 title='51coolma' 元素的边框样式:

实例

[title=51coolma]
{ border:5px solid green; }

尝试一下 »


属性和值的选择器 - 多值

下面是包含指定值的 title 属性的元素样式的例子,使用(~)分隔属性和值:

实例

[title~=hello] { color:blue; }

尝试一下 »

下面是包含指定值的 lang 属性的元素样式的例子,使用(|)分隔属性和值:

实例

[lang|=en] { color:blue; }

尝试一下 »


表单样式

属性选择器样式无需使用 class 或 id 的形式:

实例

input[type="text"]
{ width:150px;
display:block;
margin-bottom:10px;
background-color:yellow; }
input[type="button"]
{ width:120px;
margin-left:35px;
display:block; }

尝试一下 »

相关文章

CSS 参考手册:CSS [attribute|=value] 选择器

你已经学习了CSS,下一步学习什么呢?


CSS 总结

本教程已向你讲解了如何创建样式表来同时控制多重页面的样式和布局。

你已经学会如何使用 CSS 来添加背景、格式化文本、以及格式化边框,并定义元素的填充和边距。

同时,你也学会了如何定位元素、控制元素的可见性和尺寸、设置元素的形状、将一个元素置于另一个之后,以及向某些选择器添加特殊的效果,比如链接。

如果需要更多关于 CSS 的信息,请参阅我们的 CSS 实例, CSS 参考手册, 和 CSS3 教程


你已经学习了CSS,下一步学习什么呢?

下一步应该学习 JavaScript 。

JavaScript

JavaScript 是最流行的语言之一。

JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。

JavaScript可以使您的网站更具活力。

许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的 JavaScript 片段添加到网页中。 如果您希望

如果您希望学习更多关于 JavaScript 的知识,请马上访问我们的JavaScript 教程.

学完本教程之后,W3Cschool推荐您进行CSS实战来巩固你刚学习的新知识。

CSS 实例

CSS背景

设置页面的背景颜色

设置不同元素的背景颜色

设置一个图像作为页面的背景

错误的的背景图片

如何在水平方向重复背景图像

如何定位背景图像

一个固定的背景图片(这个图片不会随页面的其余部分滚动)

在一个声明的所有背景属性

高级的背景例子

背景属性的解释

CSS文本

设置不同元素的文本颜色

文本对齐

移除链接下划线

装饰文字

控制文本中的字母

缩进文本

指定了字符之间的空间

指定了行与行之间的空间

设置元素的文本方向

增加单词之间的空格

在一个元素内禁用文字换行

内部文字图像的垂直对齐

 

Text属性的解释

CSS的字体

设置文本的字体

设置字体大小

用px设置的字体的大小

用em设置的字体的大小

用百分比和em设置字体的大小

设置字体样式

设置字体的异体

设置字体的粗细

在一个声明的所有字体属性

 

Font属性的解释

CSS链接

为访问/未访问链接添加不同的颜色

在链接上使用文本装饰

指定链接的背景颜色

超链接添加其他样式

高级 - 创建链接框

 

链接属性的解释

CSS列表

列表中所有不同的列表项标记

设置作为列表项标记的图像

使用Crossbrowser解决方案设置一个列表项标记的图像

在一个声明中的所有列表属性

 

列表属性的解释

CSS表格

指定一个表的Th,TD元素和黑色边框

使用border-collapse

指定表格的宽度和高度

设置内容的水平对齐方式(文本对齐)

设置内容的垂直对齐(垂直对齐)

指定TH和TD元素的填充

指定表格边框的颜色

设置表格标题的位置

创建一个奇特的表

 

表格属性的解释

CSS盒模型

指定元素的总宽度为250像素

使用Crossbrowser解决方案指定元素的总宽度为250像素的

 

盒模型的解释

CSS边框

设置四个边框的宽度

设置上边框的宽度

设置底部边框的宽度

设置左边框的宽度

设置右边框的宽度

 

设置四个边框的样式

设置上边框的样式

设置下边框的样式

设置左边框的样式

设置右边框的样式

 

设置四个边框的颜色

设置上边框的颜色

设置下边框的颜色

设置左边框的颜色

设置右边框的颜色

 

在一个声明中的所有边框属性

 

每边设置不同的边框

在一个声明中的所有顶部边框属性

在一个声明中的所有下边框属性

在一个声明中的所有左边框属性

在一个声明中的所有右边框属性

 

边框属性的解释

CSS轮廓

围绕一个元素(outline),绘制一条线

设置轮廓的样式

设置轮廓颜色

设置轮廓的宽度

 

轮廓属性的解释

CSS边距

指定一个元素的边距

边距缩写属性

文本顶部边距设置的值使用厘米

使用百分比值设置文本的底部边缘

使用厘米值设置文本的左边距

 

Margin属性的解释

CSS填充

设置元素的左部填充

设置元素的右部填充

设置元素的顶部填充

设置元素的底部填充

在一个声明中的所有填充属性

 

padding属性的解释

CSS分组和嵌套

组选择器

嵌套选择器

 

分组和嵌套解释

CSS尺寸

使用像素值设置图像的高度

使用百分比设置图像的高度

使用像素值来设置元素的宽度

使用百分比来设置元素的宽度

设置元素的最大高度

使用像素值设置元素的最大宽度

使用百分比来设置元素的最大宽度

设置元素的最低高度

使用像素值来设置元素的最小宽度

使用百分比来设置元素的最小宽度

 

尺寸属性的解释

CSS显示

如何隐藏一个元素(visibility:hidden)

如何不显示元素(display:none)

如何显示一个元素的内联元素

如何显示一个元素的块元素

H如何使用表格的collapse属性

 

Display属性的解释

CSS定位

元素相对浏览器窗口的位置

元素的相对定位

元素的绝对定位

重叠的元素

设置元素的形状

如何使用滚动条来显示元素内溢出的内容

如何设置浏览器自动溢出处理

使用像素值设置图像的顶部

使用像素值设置图像的底部

使用像素值设置图像的左边

使用像素值设置图像的右边

更改光标

 

定位属性的解释

CSS浮动

简单的使用float属性

为图像添加边框和边距并浮动到段落的左侧

标题和图片向右侧浮动

让段落的第一个字母浮动到左侧

使用float属性创建一个图片廊

开启float - clear属性

创建一个水平菜单

创建一个没有表格的网页

 

Float属性的解释

CSS对齐元素

使用margin的中间调整

左/右位置对齐

使用Crossbrowser解决方案,设置左/右位置对齐

左/右对齐,浮动

使用Crossbrowser解决方案,设置左/右位置对齐,浮动

 

对齐属性解释

CSS生成的内容

把括号内的URL用content属性插入到每个链接后面

章节和分节的编号是"第1节","1.1","1.2"等

quotes 属性指定了引号

CSS伪类

添加不同颜色的超链接

给超链接添加其他样式

使用:焦点

:first-child - 匹配了第一个p元素

:first-child - 匹配了p元素中的第一个I元素

:first-child - 匹配了第一个p元素中的所有I元素

使用:lang

 

伪类的解释

CSS伪元素

把文本的第一个字母设为特殊的字母

把第一行文字设置为特殊

把第一行文字的第一个字母设置为特殊

使用:在一个元素之前插入一些内容

使用:在一个元素之后插入一些内容

 

伪元素的解释

CSS导航栏

垂直导航栏的全样式

水平导航栏的全样式

 

导航栏的解释

CSS图片廊

图片廊

 

图片廊解释

CSS图像的不透明度

创建透明图像 - 鼠标悬停效果

创建一个背景图像与文本的透明框

 

图像的不透明度解释

CSS图像拼合

图像拼合

图像拼合-导航列表

悬停效果与图像拼合

 

图像拼合解释

CSS属性选择器

选择具有title属性的元素

选择标题=一个特定值的元素

选择标题=一个特定值的元素(使用(~)分隔属性和值)

选择标题=一个特定值的元素(使用(|)分隔属性和值)

 

属性选择器解释

响应式 Web 设计 - Viewport


什么是 Viewport?

viewport 是用户网页的可视区域。

viewport 翻译为中文可以叫做"视区"。

手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。


设置 Viewport

一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:

  • width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
  • height:和 width 相对应,指定高度。
  • initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
  • maximum-scale:允许用户缩放到的最大比例。
  • minimum-scale:允许用户缩放到的最小比例。
  • user-scalable:用户是否可以手动缩放。

以下实例演示了使用 viewport 和没使用 viewport 在移动端上的效果:

实例1、没有添加 viewport点击查看

实例2、添加 viewport:点击查看

如果你在平板电脑或手机上访问,可以直接点击查看效果。


相关文章

CSS教程:响应式 Web 设计


响应式 Web 设计 - 网格视图


什么是网格视图?

很多网页都是基于网格设计的,这说明网页是按列来布局的。

使用网格视图有助于我们设计网页。这让我们向网页添加元素变的更简单。

响应式网格视图通常是 12 列,宽度为100%,在浏览器窗口大小调整时会自动伸缩。

响应式网格视图


创建响应式网格视图

接下来我们来创建一个响应式网格视图。

首先确保所有的 HTML 元素都有 box-sizing 属性且设置为 border-box

确保边距和边框包含在元素的宽度和高度间。

添加如下代码:

* { box-sizing: border-box;}
* {    box-sizing: border-box;}

查看更多 box-sizing 内容请点击:CSS3 box-sizing 属性

以下实例演示了简单的响应式网页,包含两列:

实例

.menu {
width: 25%;
float: left;}
.main {
width: 75%;
float: left;}

尝试一下 »

以上实例包含两列。

12 列的网格系统可以更好的控制响应式网页。

首先我们可以计算每列的百分比: 100% / 12 列 = 8.33%。

在每列中指定 class, class="col-" 用于定义每列有几个 span :

CSS:

.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}

尝试一下 »

所有的列向左浮动,间距(padding) 为 15px:

CSS:

[class*="col-"] {
float: left;
padding: 15px;
border: 1px solid red;}

每一行使用 <div> 包裹。所有列数加起来应为 12:

<div class="row">
<div class="col-3">...</div>
<div class="col-9">...</div>
</div>

列中行为左浮动,并添加清除浮动:

CSS:

.row:after {
content: "";
clear: both;
display: block;}

我们可以添加一些样式和颜色,让其更好看:

实例

.header {
background-color: #9933cc;
color: #ffffff;
padding: 15px;}
.menu li {
padding: 8px;
margin-bottom: 7px;
background-color :#33b5e5;
color: #ffffff;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);}
.menu li:hover {
background-color: #0099cc;}

尝试一下 »

响应式 Web 设计 - 媒体查询


媒体(media)查询在 CSS3 上有介绍:CSS3 @media 查询

使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。

实例

如果浏览器窗口小于 500px, 背景将变为浅蓝色:

@media only screen and (max-width: 500px) {
body { background-color: lightblue;}}

尝试一下 »

添加断点

在先前的教程中我们使用行和列来制作网页,它是响应式的,但在小屏幕上并不能友好的展示。

媒体查询可以帮我们解决这个问题。我们可以在设计稿的中间添加断点,不同的断点有不同的效果。

桌面设备

手机设备

使用媒体查询在 768px 添加断点:

实例

当屏幕 (浏览器窗口) 小于 768px, 每一列的宽度是 100%:

/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
@media only screen and (max-width: 768px) {  /* For mobile phones: */
[class*="col-"] {width: 100%;}}

尝试一下 »

为移动端优先设计

移动端优先意味着在设计桌面和其他设备时优先考虑移动端的设计。

这就意味着我们必须对 CSS 做一些改变。

我们在屏幕小于 768px 进行样式修改,同样在屏幕宽度大于 768px 时也需要修改样式。以下是移动端优先实例:

/* 为移动端设计: */
[class*="col-"] {width: 100%;}
@media only screen and (min-width: 768px) {  /* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}}

其他断点

你可以根据自己的需要添加断点。

我们同样可以为平板设备和移动手机设备设置断点。

桌面设备

平板设备

手机设备

在屏幕为 600px 时添加媒体查询,并设置新的样式(屏幕大于 600px 但小于 768px):

实例

注意两组类样式是相同的,但名称不同 (col- 和 col-m-):

/* For mobile phones: */
[class*="col-"] {width: 100%;}
@media only screen and (min-width: 600px) {   /* For tablets: */
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}}
@media only screen and (min-width: 768px) { /* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;} }

尝试一下 »

以上代码看起来很多余,但是他可以根据屏幕大小自动设置不同的样式,所以还是非常必要的。

HTML 实例

针对桌面设备:

第一和第三部分跨越 3 列。中间部分跨域 6 列。

针对平板设备:

第一跨域 3列,第二部分跨越 9 列,第三部分跨域 12 列:

<div class="row">
<div class="col-3 col-m-3">...</div>
<div class="col-6 col-m-9">...</div>
<div class="col-3 col-m-12">...</div>
</div>

方向:横屏/竖屏

结合 CSS 媒体查询,可以创建适应不同设备的方向(横屏 landscape、竖屏 portrait 等)的布局。

语法:

orientation:portrait | landscape

  • portrait:指定输出设备中的页面可见区域高度大于或等于宽度
  • landscape: 除 portrait 值情况外,都是 landscape

实例

如果是横屏背景将是浅蓝色:

@media only screen and (orientation: landscape) {
body { background-color: lightblue;}}

尝试一下 »

响应式 Web 设计 - 图片


使用 width 属性

如果 width 属性设置为 100%,图片会根据上下范围实现响应式功能:

实例

img {
width: 100%;
height: auto; }

尝试一下 »

注意在以上实例中,图片会比它的原始图片大。我们可以使用 max-width 属性很好的解决这个问题。


使用 max-width 属性

如果 max-width 属性设置为 100%, 图片永远不会大于其原始大小:

实例

img {
max-width: 100%;
height: auto;}

尝试一下 »

提示:关于max-width 属性的更多内容,请参考本站 CSS 参考手册中的 CSS max-width属性部分。


网页中添加图片

实例

img {
width: 100%;
height: auto;}

尝试一下 »

背景图片

背景图片可以响应调整大小或缩放。

以下是三个不同的方法:

1. 如果 background-size 属性设置为 contain, 背景图片将按比例自适应内容区域。图片保持其比例不变:

这是 CSS 代码:

实例

div
background-repeat: no-repeat;
background-size: contain;}

尝试一下 »

2. 如果 background-size 属性设置为 "100% 100%" ,背景图片将延展覆盖整个区域:

实例

这是 CSS 代码:

div
background-size: 100% 100%;}

尝试一下 »

3. 如果 background-size 属性设置为 cover,则会把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。注意该属性保持了图片的比例因此 背景图像的某些部分无法显示在背景定位区域中。

这是 CSS 代码:

实例

div {
background-size: cover;
border: 1px solid red;}

尝试一下 »

不同设备显示不同图片

大尺寸图片可以显示在大屏幕上,但在小屏幕上确不能很好显示。我们没有必要在小屏幕上去加载大图片,这样很影响加载速度。所以我们可以使用媒体查询,根据不同的设备显示不同的图片。

以下大图片和小图片将显示在不同设备上:

 

实例

/* For width smaller than 400px: */
body {
background-image: url('img_smallflower.jpg');
}
/* For width 400px and larger: */
@media only screen and (min-width: 400px) {
body {
background-image: url('img_flowers.jpg'); } }

  尝试一下 »

你可以使用媒体查询的 min-device-width 替代 min-width 属性,它将检测的是设备宽度而不是浏览器宽度。浏览器大小重置时,图片大小不会改变。

实例

/* 设备小于 400px: */
body {
background-image: url('img_smallflower.jpg'); }
/* 设备大于 400px (也等于): */
@media only screen and (min-device-width: 400px) {
body {
background-image: url('img_flowers.jpg'); } }

尝试一下 »

HTML5 <picture元素

HTML5 的 <picture>元素可以设置多张图片。

浏览器支持

元素
<picture>不支持38.038.0不支持25.0
<picture> 元素类似于<video><audio> 元素。可以设备不同的资源,第一个设置的资源为首选使用的:

实例

<picture>
<source srcset="img_smallflower.jpg" media="(max-width: 400px)">
<source srcset="img_flowers.jpg">
<img src="img_flowers.jpg" alt="Flowers">
</picture>

尝试一下 »

srcset 属性的必须的,定义了图片资源。

media 属性是可选的,可以在媒体查询的 CSS @media 规则 查看详情。

对于不支持<picture元素的浏览器你也可以定义<img>元素来替代。


扩展阅读

《响应式图片101》:介绍为什么需要响应式图片以及如何选择正确的响应式图片解决方案。

响应式 Web 设计 - 视频(Video)


使用 width 属性

如果 width 属性设置为 100%,视频播放器会根据屏幕大小自动调整比例:

实例

video {
width: 100%;
height: auto;}

尝试一下 »

注意在以上实例中,视频播放器根据屏幕大小自动调整比例,且可以比原始尺寸大。更多情况下我们可以使用 max-width 属性来替代。


使用 max-width 属性

如果max-width 属性设置为 100%, 视频播放器会根据屏幕自动调整比例,但不会超过其原始大小:

实例

video {
max-width: 100%;
height: auto;}

尝试一下 »

在网页中添加视频

我们可以在网页中添加视频。以下实例视频根据 div 区域大小自动调整并占满整个 div 区域:

实例

video {
width: 100%;
height: auto;}

尝试一下 »


响应式 Web 设计 - 框架

本章节为大家介绍响应式 Web 设计框架 Bootstrap。

Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。

Bootstrap支持HTML和CSS规范,是由CSS的动态Less语言写成。

实例

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script>

尝试一下 »

更多内容,请查看我们的 Bootstrap 教材

HTML5&CSS课程列表

为了帮助广大学习者,做到学以致用,我们为大家准备了大量的CSS编程实战题,通过这些实战题,您可以一边学习一边操作,来达到巩固学习的作用。

请选择你喜欢的实战提,开始进行编程闯关。

CSS 实例

CSS背景

设置页面的背景颜色

设置不同元素的背景颜色

设置一个图像作为页面的背景

错误的的背景图片

如何在水平方向重复背景图像

如何定位背景图像

一个固定的背景图片(这个图片不会随页面的其余部分滚动)

在一个声明的所有背景属性

高级的背景例子

背景属性的解释

CSS文本

设置不同元素的文本颜色

文本对齐

移除链接下划线

装饰文字

控制文本中的字母

缩进文本

指定了字符之间的空间

指定了行与行之间的空间

设置元素的文本方向

增加单词之间的空格

在一个元素内禁用文字换行

内部文字图像的垂直对齐

 

Text属性的解释

CSS的字体

设置文本的字体

设置字体大小

用px设置的字体的大小

用em设置的字体的大小

用百分比和em设置字体的大小

设置字体样式

设置字体的异体

设置字体的粗细

在一个声明的所有字体属性

 

Font属性的解释

CSS链接

为访问/未访问链接添加不同的颜色

在链接上使用文本装饰

指定链接的背景颜色

超链接添加其他样式

高级 - 创建链接框

 

链接属性的解释

CSS列表

列表中所有不同的列表项标记

设置作为列表项标记的图像

使用Crossbrowser解决方案设置一个列表项标记的图像

在一个声明中的所有列表属性

 

列表属性的解释

CSS表格

指定一个表的Th,TD元素和黑色边框

使用border-collapse

指定表格的宽度和高度

设置内容的水平对齐方式(文本对齐)

设置内容的垂直对齐(垂直对齐)

指定TH和TD元素的填充

指定表格边框的颜色

设置表格标题的位置

创建一个奇特的表

 

表格属性的解释

CSS盒模型

指定元素的总宽度为250像素

使用Crossbrowser解决方案指定元素的总宽度为250像素的

 

盒模型的解释

CSS边框

设置四个边框的宽度

设置上边框的宽度

设置底部边框的宽度

设置左边框的宽度

设置右边框的宽度

 

设置四个边框的样式

设置上边框的样式

设置下边框的样式

设置左边框的样式

设置右边框的样式

 

设置四个边框的颜色

设置上边框的颜色

设置下边框的颜色

设置左边框的颜色

设置右边框的颜色

 

在一个声明中的所有边框属性

 

每边设置不同的边框

在一个声明中的所有顶部边框属性

在一个声明中的所有下边框属性

在一个声明中的所有左边框属性

在一个声明中的所有右边框属性

 

边框属性的解释

CSS轮廓

围绕一个元素(outline),绘制一条线

设置轮廓的样式

设置轮廓颜色

设置轮廓的宽度

 

轮廓属性的解释

CSS边距

指定一个元素的边距

边距缩写属性

文本顶部边距设置的值使用厘米

使用百分比值设置文本的底部边缘

使用厘米值设置文本的左边距

 

Margin属性的解释

CSS填充

设置元素的左部填充

设置元素的右部填充

设置元素的顶部填充

设置元素的底部填充

在一个声明中的所有填充属性

 

padding属性的解释

CSS分组和嵌套

组选择器

嵌套选择器

 

分组和嵌套解释

CSS尺寸

使用像素值设置图像的高度

使用百分比设置图像的高度

使用像素值来设置元素的宽度

使用百分比来设置元素的宽度

设置元素的最大高度

使用像素值设置元素的最大宽度

使用百分比来设置元素的最大宽度

设置元素的最低高度

使用像素值来设置元素的最小宽度

使用百分比来设置元素的最小宽度

 

尺寸属性的解释

CSS显示

如何隐藏一个元素(visibility:hidden)

如何不显示元素(display:none)

如何显示一个元素的内联元素

如何显示一个元素的块元素

H如何使用表格的collapse属性

 

Display属性的解释

CSS定位

元素相对浏览器窗口的位置

元素的相对定位

元素的绝对定位

重叠的元素

设置元素的形状

如何使用滚动条来显示元素内溢出的内容

如何设置浏览器自动溢出处理

使用像素值设置图像的顶部

使用像素值设置图像的底部

使用像素值设置图像的左边

使用像素值设置图像的右边

更改光标

 

定位属性的解释

CSS浮动

简单的使用float属性

为图像添加边框和边距并浮动到段落的左侧

标题和图片向右侧浮动

让段落的第一个字母浮动到左侧

使用float属性创建一个图片廊

开启float - clear属性

创建一个水平菜单

创建一个没有表格的网页

 

Float属性的解释

CSS对齐元素

使用margin的中间调整

左/右位置对齐

使用Crossbrowser解决方案,设置左/右位置对齐

左/右对齐,浮动

使用Crossbrowser解决方案,设置左/右位置对齐,浮动

 

对齐属性解释

CSS生成的内容

把括号内的URL用content属性插入到每个链接后面

章节和分节的编号是"第1节","1.1","1.2"等

quotes 属性指定了引号

CSS伪类

添加不同颜色的超链接

给超链接添加其他样式

使用:焦点

:first-child - 匹配了第一个p元素

:first-child - 匹配了p元素中的第一个I元素

:first-child - 匹配了第一个p元素中的所有I元素

使用:lang

 

伪类的解释

CSS伪元素

把文本的第一个字母设为特殊的字母

把第一行文字设置为特殊

把第一行文字的第一个字母设置为特殊

使用:在一个元素之前插入一些内容

使用:在一个元素之后插入一些内容

 

伪元素的解释

CSS导航栏

垂直导航栏的全样式

水平导航栏的全样式

 

导航栏的解释

CSS图片廊

图片廊

 

图片廊解释

CSS图像的不透明度

创建透明图像 - 鼠标悬停效果

创建一个背景图像与文本的透明框

 

图像的不透明度解释

CSS图像拼合

图像拼合

图像拼合-导航列表

悬停效果与图像拼合

 

图像拼合解释

CSS属性选择器

选择具有title属性的元素

选择标题=一个特定值的元素

选择标题=一个特定值的元素(使用(~)分隔属性和值)

选择标题=一个特定值的元素(使用(|)分隔属性和值)

 

属性选择器解释


您可以通过 W3Cschool 的测验程序来测试您的 CSS 技能。

关于本测验

本测验包含 20 道题,每道题的最长答题时间是 20 分钟(这是由于每个 session 的默认有效时间是 20 分钟)。

本测验是非官方的测试,它仅仅提供了一个了解您对 CSS 的掌握程度的工具。

测验会被记分

每道题的分值是 1 分。在您完成全部的 20 道题之后,系统会为您的测验打分,并提供您做错的题目的正确答案。其中,绿色为正确答案,而红色为错误答案。

现在就开始测验!祝您好运。


CSS概述

 1. Cascading Style Sheets 层叠样式表,它可以控制多重网页的样式和布局;

 2. 需具备的基础知识:HTML、XHTML;

 3. 主要实现:

    样式

     ----- 定义如何显示 HTML 元素;

     ----- 存储在样式表中;

     ----- 添加到 HTML4.0 中,解决内容与表现分离;

     ----- 多个样式定义可以层叠为一。


CSS解决的问题--更好的利用HTML

1. 背景

HTML 标签原本被设计为用于定义文档内容。即通过使用 <h1>、<p>、<table> 这样的标签,来表达“这是标题”、“这是段落”、“这是表格”之类的信息。

同时文档的布局由浏览器来完成,而不使用任何的格式化标签。

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


2. 样式

  • 为解决这个问题,样式(Style)肩负起了 HTML 标准化的使用,这样所有的主流浏览器均支持层叠样式表;
  • 极大地提高了工作效率。样式表定义如何显示 HTML 元素,就像 HTML3.2 的字体标签和颜色属性所起的作用那样。样式通常保存在外部的 .css 文件中。通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面的布局和外观。
  • 多重样式层叠为一个。样式表允许以多种方式规定样式信息。它可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在一个外部的 CSS 文件中。
  •  甚至可以在同一个 HTML 文档内部引用多个外部样式表。

例子

CSS代表层叠样式表。它定义如何显示 HTML 元素。

以下 HTML 代码包含样式的 CSS。

<!DOCTYPE HTML> <html>     <head>         <style>         a {            background-color:grey;             color:white         }         </style>     </head>     <body>         <a href = "https://www.51coolma.cn">Visit the website</a>     </body> </html>

上面的代码设置背景颜色和前景颜色。

样式通常保存在外部 .css 文件中。

浏览器样式

浏览器使用级联和继承来确定在显示元素时要用于属性的值。

每个元素都有一些 CSS 属性。

对于每个属性,浏览器需要遍历所有样式的源。

你已经看到了三种不同的方式来定义样式

  • 内联
  • 嵌入式
  • 外部样式表
还有两个其他的样式来源,你需要知道。

如果没有指定其他样式,浏览器样式或用户代理样式是浏览器应用于元素的默认样式。

这些样式在浏览器之间略有不同。

以下代码显示了一个不包含样式的简单 HTML 文档。

<!DOCTYPE HTML><html><body>    <a href="https://www.51coolma.cn">Visit the website</a>    <p>I  like <span>apples</span> and oranges.</p>    <a href="https://www.w3.org" rel="external nofollow" target="_blank" >Visit the W3C website</a></body></html>

链接的文本内容显示为蓝色,带下划线。

浏览器正在应用类似于以下代码中所示的样式。

a  {    color: blue;    text-decoration:  underline;}
浏览器没有每个 HTML 元素的默认样式。 

小结

以上是从CSS的基本作用谈起的,它内部的需要基础知识,在下文中会提到,如 CSS 基础语法、选择器、样式、框模型定位等内容。


对大多技术人员来说都比较熟悉 CSS 选择器,举一例子来说,假设给一个 p 标签增加一个类(class),可是执行后该 class 中的有些属性并没有起作用。通过 Firebug 查看,发现没有起作用的属性被覆盖了,这个时候突然意识到了 CSS 选择器的优先级问题。严格来讲,选择器的种类可以分为三种:标签名选择器、类选择器和ID选择器。而所谓的后代选择器和群组选择器只不过是对前三种选择器的扩展应用。而在标签内写入 style="" 的方式,应该是 CSS 的一种引入方式,而不是选择器,因为根本就没有用到选择器。而一般人们将上面这几种方式结合在一起,所以就有了5种或6种选择器了。


css选择器


最基本的选择器是元素选择器(比如 div),ID 选择器(比如 #header)还有类选择器(比如.tweet)。

一些的不常见的选择器包括伪类选择器 (:hover),很多复杂的 CSS3 和正则选择器,比如:first-child,class ^= “grid-”。CSS选择器具有高效的继承性,引用 Steve Souders 的话, CSS 选择器效率从高到低的排序如下:

选择器用法
id选择器#myid
类选择器.myclassname
标签选择器div,h1,p
相邻选择器h1+p
子选择器ul > li
后代选择器li a
通配符选择器*
属性选择器a[rel="external"]
伪类选择器a:hover, li:nth-child



纵使ID选择器很快、高效,但是它也仅仅如此。从 Steve Souders 的 CSS Test 我们可以看出ID选择器和类选择器在速度上的差异很小很小。

在 Windows 系统上的 Firefox 6 上,我测得了一个简单类选择器的(reflow figure)重绘速度为 10.9ms,而ID选择器为 12.5ms,所以事实上ID比类选择器重绘要慢一点点。

ID选择器和类选择器在速度上的差异基本上没有关系。

在一个标签选择器(a)的测试上显示,它比类或ID选择器的速度慢了很多。在一个嵌套很深的后代选择器的测试上,显示数据为440左右!从这里我们可以看出ID/类选择器 和 元素/后代选择器中间的差异较大,但是相互之间的差异较小。


选择器的优先级是怎么规定的呢?

一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。通常我们用1表示标签名选择器的优先级,用10表示类选择器的优先级,用 100 标示 ID选择器的优先级。比如上例当中 .polaris span {color:red;}的选择器优先级是 10 + 1 也就是11;而 .polaris 的优先级是10;浏览器自然会显示红色的字。理解了这个道理之后下面的优先级计算自是易如反掌:

div.test1 .span var 优先级 1+10 +10 +1

span#xxx .songs li 优先级1+100 + 10 + 1

#xxx li 优先级 100 + 1

对于什么情况下使用什么选择器,用不同选择器的原则是:
  1. 准确的选到要控制的标签;
  2. 使用最合理优先级的选择器;
  3. HTML 和 CSS 代码尽量简洁美观。通常:

①最常用的选择器是类选择器。

②li、td、dd等经常大量连续出现,并且样式相同或者相类似的标签,我们采用类选择器跟标签名选择器结合的后代选择器  .xx li/td/dd {}  的方式选择。

③极少的情况下会用 ID 选择器,当然很多前端开发人员喜欢 header,footer,banner,conntent 设置成 ID 选择器的,因为相同的样式在一个页面里不可能有第二次。


在这里不得不提使用在标签内引入 CSS 的方式来写 CSS,即:

<div style="color:red">polaris</div>

这时候的优先级是最高的。我们给它的优先级是 1000,这种写法不推荐使用,特别是对新手来说。这也完全违背了内容和显示分离的思想。DIV+CSS 的优点也不能再有任何体现。

怎么提升CSS选择器性能?

1、避免使用通用选择器

.content  {color: red;}

浏览器匹配文档中所有的元素后分别向上逐级匹配 class 为 content 的元素,直到文档的根节点。因此其匹配开销是非常大的,所以应避免使用关键选择器是通配选择器的情况。


2、避免使用标签或 class 选择器限制 id 选择器

避免使用

button#backButton {…}

避免使用

.menu-left#newMenuIcon {…}

推荐使用

#backButton {…}

推荐使用

#newMenuIcon {…}

3、避免使用标签限制 class 选择器

避免使用

treecell.indented {…}

推荐使用

.treecell-indented {…}

最优使用

.hierarchy-deep {…}

4、避免使用多层标签选择器。使用 class 选择器替换,减少 css 查找

避免使用

treeitem[mailfolder="true"] > treerow > treecell {…}

推荐使用

.treecell-mailfolder {…}

5、避免使用子选择器

避免使用

treehead treerow treecell {…}

BETTER, BUT STILL BAD 

treehead > treerow > treecell {…}

推荐使用

.treecell-header {…}

6、使用继承

避免使用

#bookmarkMenuItem > .menu-left { list-style-image: url(blah) }

推荐使用

#bookmarkMenuItem { list-style-image: url(blah) }


简洁、高效的CSS

所谓高效的 CSS 就是让浏览器在查找 style 匹配的元素的时候尽量进行少的查找,下面列出一些我们常见的写 CSS 犯一些低效错误:


高效的CSS


不要在ID选择器前使用标签名

一般写法:DIV#divBox

更好写法:#divBox

解释: 因为ID选择器是唯一的,加上 div 反而增加不必要的匹配。


不要再class选择器前使用标签名

一般写法:span.red

更好写法:.red

解释:同第一条,但如果你定义了多个 .red,而且在不同的元素下是样式不一样,则不能去掉,比如你 CSS 文件中定义如下:

p.red{color:red;}  

span.red{color:#ff00ff}

如果是这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写


尽量少使用层级关系

一般写法:#divBox p .red{color:red;}

更好写法:.red{..}


使用class代替层级关系

一般写法:#divBox ul li a{display:block;}

更好写法:.block{display:block;}


必须记住的30类CSS选择器

大概大家都知道“id”,“class”以及“descendant”选择器,并且整体都在使用它们,那么你正在错误拥有更大级别的灵活性的选择方式。下面提到的大部分选择器都是在CSS3标准下的,所以它们只能在相应最新版本的浏览器中才能生效,你完全应该把这些都记在你聪明的脑袋里面。

1.*

*{

margin: 0;

padding: 0;}

在我们看比较高级的选择器之前,应该认识下这个众所周知的清空选择器。星号呢会将页面上所有每一个元素都选到。许多开发者都用它来清空 margin 和 padding。当然你在练习的时候使用这个没问题,但是我不建议在生产环境中使用它。它会给浏览器凭添许多不必要的东西。* 也可以用来选择某元素的所有子元素。

#container * {

border: 1px solid black;}

它会选中 #container 下的所有元素。当然,我还是不建议你去使用它,如果可能的话。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

2. #X

#container {

width: 960px;

margin: auto;}

在选择器中使用#可以用 id 来定位某个元素。大家通常都会这么使用,然后使用的时候大家还是得相当小心的。需要问自己一下:我是不是必须要给这个元素来赋值个 id 来定位它呢?

id选择器是很严格的并且你没办法去复用它。如果可能的话,首先试试用标签名字,HTML5中的新元素,或者是伪类。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

3. .X

.error {

color: red;}

这是个 class 选择器。它跟id选择器不同的是,它可以定位多个元素。当你想对多个元素进行样式修饰的时候就可以使用 class。当你要对某个特定的元素进行修饰那就是用 id 来定位它。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

4. X Y

li a {

text-decoration: none;}

下一个常用的就是 descendant 选择器。如果你想更加具体的去定位元素,你可以使用它。例如,假如,你不需要定位所有的 a 元素,而只需要定位li标签下的 a 标签?这时候你就需要使用 descendant 选择器了。

专家提示:如果你的选择器像 X Y Z A B.error 这样,那你就错了。时刻都提醒自己,是否真的需要对那么多元素修饰。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

5. X

a { color: red; }

ul { margin-left: 0; }

如果你想定位页面上所有的某标签,不是通过id或者是‘class’,这简单,直接使用类型选择器。

兼容性

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

6. X:visited and X:link

a:link {color:red;}

a:visited {color: purple;}

我们使用:link这个伪类来定位所有还没有被访问过的链接。

另外,我们也使用:visited来定位所有已经被访问过的链接。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

7. X+Y

ul + p {

color: red;}

这个叫相邻选择器。它指挥选中指定元素的直接后继元素。上面那个例子就是选中了所有ul标签后面的第一段,并将它们的颜色都设置为红色。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

8. X>Y

div#container > ul {

border: 1px solid black;}

X Y 和 X > Y的差别就是后面这个指挥选择它的直接子元素。看下面的例子:

<div id="container">

<ul><li> List Item

<ul><li> Child </li>

</ul></li><li> List Item </li><li> List Item </li><li> List Item </li></ul>

</div>

#container > ul 只会选中id为‘container’的div下的所有直接ul元素。它不会定位到如第一个 li 下的 ul 元素。

由于某些原因,使用子节点组合选择器会在性能上有许多的优势。事实上,当在 javascript 中使用 css 选择器时候是强烈建议这么做的。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

9. X ~ Y

ul ~ p {

color: red;}

兄弟节点组合选择器跟 X+Y 很相似,然后它又不是那么的严格。ul + p选择器只会选择紧挨跟着指定元素的那些元素。而这个选择器,会选择跟在目标元素后面的所有匹配的元素。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

10. X[title]

a[title] {

 color: green;}

这个叫属性选择器,上面的这个例子中,只会选择有title属性的元素。那些没有此属性的锚点标签将不会被这个代码修饰。那再想想如果你想更加具体的去筛选?那…

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

11. X[href="foo"]

a[href="http://strongme.cn" rel="external nofollow" target="_blank" ] {

color: #1f6053; /* nettuts green */}

上面这片代码将会把 href 属性值为http://strongme.cn 的锚点标签设置为绿色,而其他标签则不受影响。

注意我们将值用双引号括起来了。那么在使用 Javascript 的时候也要使用双引号括起来。可以的话,尽量使用标准的 CSS3 选择器。

这样可以用了,但是还是有点死,如果不是这个链接,而是类似的链接,那么这时就得用正则表达式了。

兼容性

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

12. X[href="strongme"]

a[href="strongme"] {

color: #1f6053;}

Tada,正是我们需要的,这样,就指定了strongme这个值必须出现在锚点标签的href属性中,不管是strongme.cn还是strongme.com还是www.strongme.cn都可以被选中。
但是记得这是个很宽泛的表达方式。如果锚点标签指向的不是strongme相关的站点,如果要更加具体的限制的话,那就使用^$,分别表示字符串的开始和结束。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

13. X[href^="href"]

a[href^="http"] {

background: url(path/to/external/icon.png) no-repeat;

padding-left: 10px; }

大家肯定好奇过,有些站点的锚点标签旁边会有一个外链图标,我也相信大家肯定见过这种情况。这样的设计会很明确的告诉你会跳转到别的网站。
用克拉符号就可以轻易做到。它通常使用在正则表达式中标识开头。如果我们想定位锚点属性href中以http开头的标签,那我们就可以用与上面相似的代码。

注意我们没有搜索​http://​,那是没必要的,因为它都不包含​https://​。

那如果我们想找到所有指向一张图片的锚点标签呢?那我们来使用下&字符。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

14. X[href$=".jpg"]

a[href$=".jpg"] {

color: red; }

这次我们又使用了正则表达式$,表示字符串的结尾处。这段代码的意思就是去搜索所有的图片链接,或者其它链接是以.jpg结尾的。但是记住这种写法是不会对gifspngs起作用的。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

15. X[data-*="foo"]

a[data-filetype="image"] {

color: red;}

在回到第8条,我们如何把所有的图片类型都选中呢png,jpeg,’​jpg​’,'​gif​’?我们可以使用多选择器。看下面:

a[href$=".jpg"],

a[href$=".jpeg"],

a[href$=".png"],

a[href$=".gif"] {

color: red; }

但是这样写着很蛋疼啊,而且效率会很低。另外一个办法就是使用自定义属性。我们可以给每个锚点加个属性data-filetype指定这个链接指向的图片类型。
[html]
Image Link 那有了这个钩子,我们就可以去用标准的办法只去选定文件类型为image的锚点了。

a[data-filetype="image"] {

color: red; }


兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

16. X[foo~="bar"]

a[data-info~="external"] {

color: red; }

a[data-info~="image"] {

border: 1px solid black; }

这个我想会让你的小伙伴惊呼妙极了。很少有人知道这个技巧。这个~符号可以定位那些某属性值是空格分隔多值的标签。
继续使用第15条那个例子,我们可以设置一个data-info属性,它可以用来设置任何我们需要的空格分隔的值。这个例子我们将指示它们为外部连接和图片链接。

 Click Me, Fool

给这些元素设置了这个标志之后,我们就可以使用~来定位这些标签了。

/ Target data-info attr that contains the value "external" /

a[data-info~="external"] {

color: red;}

/ And which contain the value "image" /

a[data-info~="image"] {

border: 1px solid black;}

## 17. X:checked

input[type=radio]:checked {

border: 1px solid black; }

上面这个伪类写法可以定位那些被选中的单选框和多选框,就是这么简单。

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

18. X:after

beforeafter这俩伪类。好像每天大家都能找到使用它们的创造性方法。它们会在被选中的标签周围生成一些内容。
当使用.clear-fix技巧时许多属性都是第一次被使用到里面的。

.clearfix:after {

    content: "";

    display: block;

    clear: both;

    visibility: hidden;

    font-size: 0;

    height: 0;

  }

.clearfix { 

   display: inline-block; 

   _height: 1%;

}

上面这段代码会在目标标签后面补上一段空白,然后将它清除。这个方法你一定得放你的聚宝盆里面。特别是当overflow:hidden方法不顶用的时候,这招就特别管用了。

根据 CSS3 标准规定,可以使用两个冒号::。然后为了兼容性,浏览器也会接受一个双引号的写法。其实在这个情况下,用一个冒号还是比较明智的。

兼容性

  • IE8+

  • Firefox

  • Chrome

  • Safari

  • Opera

19. X:hover

div:hover {

background: #e3e3e3; }

不用说,大家肯定知道它。官方的说法是user action pseudo class.听起来有点儿迷糊,其实还好。如果想在用户鼠标飘过的地方涂点儿彩,那这个伪类写法可以办到。

注意旧版本的IE只会对加在锚点a标签上的:hover伪类起作用。

通常大家在鼠标飘过锚点链接时候加下边框的时候用到它。

a:hover {

 border-bottom: 1px solid black;

}

专家提示:​border-bottom:1px solid black​;比​text-decoration:underline​;要好看很多。

兼容性

  • IE6+(IE6只能在锚点标签上起作用)

  • Firefox

  • Chrome

  • Safari

  • Opera

20. X:not(selector)

div:not(#container) {

   color: blue;

}

取反伪类是相当有用的,假设我们要把除idcontainer之外的所有div标签都选中。那上面那么代码就可以做到。

或者说我想选中所有出段落标签之外的所有标签。

:not(p) {

  color: green;

}

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

21. X::pseudoElement

p : : first-line {

  font-weight: bold;

  font-size:1.2em;

}

我们可以使用::来选中某标签的部分内容,如第一段,或者是第一个字没有。但是记得必须使用在块式标签上才起作用。

伪标签是由两个冒号 ​::​ 组成的。

定位第一个字

p::first-letter {

   float: left;

   font-size: 2em;

   font-weight: bold;

   font-family: cursive;

   padding-right: 2px;

}

上面这段代码会找到页面上所有段落,并且指定为每一段的第一个字。

它通常在一些新闻报刊内容的重点突出会使用到。

定位某段的第一行

p::first-line {

   font-weight: bold;

   font-size: 1.2em;

}

::first-line相似,会选中段落的第一行 。

为了兼容性,之前旧版浏览器也会兼容单冒号的写法,例如:first-line,:first-letter,:before,:after.但是这个兼容对新介绍的特性不起作用。

兼容性

  • IE6+

  • Firefox

  • Chrome

  • Safari

  • Opera

22. X:nth-child(n)

li:nth-child(3) {

   color: red;

}

还记得我们面对如何取到推跌式标签的第几个元素是无处下手的时光么,有了nth-child那日子就一去不复返了。

请注意nth-child接受一个整形参数,然后它不是从0开始的。如果你想获取第二个元素那么你传的值就是li:nth-child(2).

我们甚至可以获取到由变量名定义的个数个子标签。例如我们可以用li:nth-child(4n)去每隔3个元素获取一次标签。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

23. X:nth-last-child(n)

li:nth-last-child(2) {

   color: red;

}

假设你在一个ul标签中有N多的元素,而你只想获取最后三个元素,甚至是这样li:nth-child(397),你可以用nth-last-child伪类去代替它。

这个技巧可以很正确的代替第16个TIP,不同的就是它是从结尾处开始的,倒回去的。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

  • Opera

24. X:nth-of-type(n)

ul:nth-of-type(3) {

   border: 1px solid black;

}

曾几何时,我们不想去选择子节点,而是想根据元素的类型来进行选择。

想象一下有5个ul标签。如果你只想对其中的第三个进行修饰,而且你也不想使用id属性,那你就可以使用nth-of-type(n)伪类来实现了,上面的那个代码,只有第三个ul标签会被设置边框。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

25. X:nth-last-of-type(n)

ul:nth-last-of-type(3) {

   border: 1px solid black;

}

同样,也可以类似的使用nth-last-of-type来倒序的获取标签。

兼容性

  • IE9+

  • Firefox3.5+

  • Chrome

  • Safari

  • Opera

26. X:first-child

ul li:first-child {

   border-top: none;

}

这个结构性的伪类可以选择到第一个子标签,你会经常使用它来取出第一个和最后一个的边框。

假设有个列表,每个标签都有上下边框,那么效果就是第一个和最后一个就会看起来有点奇怪。这时候就可以使用这个伪类来处理这种情况了。

兼容性

  • IE7+

  • Firefox

  • Chrome

  • Safari

  • Opera

27. X:last-child

ul > li:last-child {

   color: green;

}

first-child相反,last-child取的是父标签的最后一个标签。

例如
标签

 List Item    

 List Item 

 List Item 

这里没啥内容,就是一个了 List。

ul {

 width: 200px;

 background: #292929;

 color: white;

 list-style: none;

 padding-left: 0;

}

li {

 padding: 10px;

 border-bottom: 1px solid black;

 border-top: 1px solid #3c3c3c;

}

上面的代码将设置背景色,移除浏览器默认的内边距,为每个li设置边框以凸显一定的深度。

背景色

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

28. X:only-child

div p:only-child {

   color: red;

}

说实话,你会发现你几乎都不会用到这个伪类。然而,它是可用的,有会需要它的。

它允许你获取到那些只有一个子标签的父标签。就像上面那段代码,只有一个段落标签的div才被着色。

 My paragraph here. 

 Two paragraphs total. 

 Two paragraphs total. 

上面例子中,第二个div不会被选中。一旦第一个div有了多个子段落,那这个就不再起作用了。

兼容性

  • IE9+

  • Firefox

  • Chrome

  • Safari

  • Opera

29. X:only-of-type

li:only-of-type {

   font-weight: bold;

}

结构性伪类可以用的很聪明。它会定位某标签只有一个子标签的目标。设想你想获取到只有一个子标签的ul标签?

使用ul li会选中所有li标签。这时候就要使用only-of-type了。

ul > li:only-of-type {

   font-weight: bold;

}

兼容性

  • IE9+

  • Firefox 3.5+

  • Chrome

  • Safari

  • Opera


30. X:first-of-type first-of-type

伪类可以选择指定标签的第一个兄弟标签。

测试

My paragraph here.    

 List Item 1   

 List Item 2       

 List Item 3     

 List Item 4 

来你把List Item 2取出来,如果你已经取出来或者是放弃了,来继续。

解决办法1
办法很多,我们看一些比较方便的。首先是first-of-type

ul:first-of-type > li:nth-child(2) {

   font-weight: bold;

}

找到第一个ul标签,然后找到直接子标签li,然后找到第二个子节点。
解决办法2
另一个解决办法就是邻近选择器。

p + ul li:last-child {

   font-weight: bold;

}

这种情况下,找到p下的直接ul标签,然后找到它的最后一个直接子标签。

解决办法3
我们可以随便玩耍这些选择器。来看看:

ul:first-of-type li:nth-last-child(1) {

   font-weight: bold;

}

先获取到页面上第一个ul标签,然后找到最后一个子标签。

兼容性

  • IE9+

  • Firefox 3.5+

  • Chrome

  • Safari

  • Opera

结论

如果你想向旧版本浏览器妥协,比如IE6,那你用这些新的选择器的时候还是得小心点。但别让IE6阻止你去学这些新的技能。那你就对自己太残忍了。记得多查查兼容性列表,或者使用Dean Edward's excellent IE9.js script 来让你的浏览器具有这些特性。

第二个,使用向 jQuery 的时候,尽量使用原生的 CSS3 选择器。可能 活让你的代码跑的很快。这样选择器引擎就可以使用浏览器原生解析器,而不是选择器自己的。



我们在使用 CSS 来布局时经常需要进行居中,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是应该选择哪种正确的方法。比如我们都知道 margin:0 auto;的样式能让元素水平居中,而margin: auto;却不能做到垂直居中……下面就 CSS 居中的一些常用方法做个集中的介绍。


首先是水平居中,最简单的办法当然就是:

margin:0 auto;

也就是将 margin-leftmargin-right属性设置为 auto,从而达到水平居中的效果。

文字的水平居中方法:

利用 line-height 设为 height 的一样即可:

实例

.wrap{

line-height: 200px;/*垂直居中关键*/

text-align:center;

height: 200px;

font-size: 36px;

background-color: #ccc;

}


尝试一下 »
效果如下所示:
文字居中

padding填充

利用 paddingbackground-clip 配合实现div的水平垂直居中: 
通过 background-clip 设置为 content-box, 将背景裁剪到内容区外沿,再利用 padding 设为外 div 减去内 div 的差的一半,来实现:

实例

.children {

 width: 100px;

 height: 100px;

 padding: 50px;

 background-color: black;

 background-clip:content-box;/*居中的关键*/


尝试一下 »
效果如下所示:

微信截图_20201112101718

提示:关于 padding 的使用,你可以参考 CSS padding 属性部分。

hacks, hacks(小技巧)

有许多 hacks ,负 margin,影子元素 : : before 等。如果你的内容不是固定大小的话,它们大部分是很脆弱的。

translate(-50%,-50%)

position translate(-50%,-50%) 比较奇特,百分比计算不是以父元素为基准,而是以自己为基准。

示例:

实例

#ex3_content{

left:50%; top:50%; 

transform:translate(-50%,-50%);

-webkit-transform:translate(-50%,-50%);

background-color:gray; color:white; position:absolute; }


尝试一下 »

这个技巧相当嚣张,同样适用于没固定大小的内容,min-widthmax-heightoverflow:scroll等。

绝对定位居中

绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。

父容器元素:position: relative

实例

.Absolute-Center {

  width: 50%;

  height: 50%;

  overflow: auto;

  margin: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »

注意:高度必须定义,建议加 overflow: auto,防止内容溢出。


视口居中

内容元素:position: fixedz-index: 999,记住父容器元素position: relative 

实例

.Absolute-Center.is-Fixed {

  width: 50%;

  height: 50%;

  overflow: auto;

  margin: auto;

  position: fixed;

  top: 0; left: 0; bottom: 0; right: 0;

  z-index: 999;

}


尝试一下 »


响应式

百分比宽高,最大、最小宽度均可以,加 padding 也可以

实例

.Absolute-Center.is-Responsive {

  width: 60%;

  height: 60%;

  min-width: 400px;

  max-width: 500px;

  padding: 40px;

  overflow: auto;

  margin: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »


偏移

只要margin: auto; 在,内容块将垂直居中,top, left, bottom, right 可以设置偏移。

实例

.Absolute-Center.is-Right {

  width: 50%;

  height: 50%;

  margin: auto;

  overflow: auto;

  position: absolute;

  top: 0; left: auto; bottom: 0; right: 20px;

  text-align: right;

}


尝试一下 »


溢出

居中内容比父容器高时,防止溢出,加 overflow: auto (没有任何 padding 时,也可以加 max-height: 100%;)。

实例

.Absolute-Center.is-Overflow {

  width: 50%;

  height: 300px;

  max-height: 100%;

  margin: auto;

  overflow: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »


调整尺寸

resize 属性可以让尺寸可调。 设置 min- /max- 限制尺寸,确定加了 overflow: auto

实例

.Absolute-Center.is-Resizable {

  min-width: 20%;

  max-width: 80%;

  min-height: 20%;

  max-height: 80%;

  resize: both;

  overflow: auto;

  margin: auto;

  position: absolute;

  top: 0; left: 0; bottom: 0; right: 0;

}


尝试一下 »

margin填充

首先我们还是定义父子div:

这里我们利用将子 div 的 margin-top 设置为父 div 高度减去子 div 高度的一半,然后再通过 overflow 设置为 hidden 来触发父 div 的 BFC,CSS代码如下:

实例

.parent {

 margin:0 auto;

 height:@parentWidth;

 width:@parentWidth;

 background: red;

 overflow:hidden;/*触发BFC*/

}


尝试一下 »
效果如下所示:
微信截图_20201112105305

absolute定位

利用 position:absolute 搭配topleft 50%,再将 margin 设为负值也可以对 div 进行水平垂直居中,首先还是需要定义父子 div:

实例

.children {

 position:absolute; 

 left:50%; 

 top:50%; 

 margin:-25px 0 0 -25px ;

 height:50px;

 width:50px;

 background-color: black;

}


尝试一下 »
其中的 margin 中的值为该 div 宽度的一半,最后效果图:

微信截图_20201112105956

图片居中

一般的图片居中都是和 text-align 一样,将图片包装在一个 div 中,将该 div 的 text-align 设为 center 即可。  

有一种特殊的方式,利用了一个图片进行占位,以让父容器获得高宽,从而让进行 -50% 偏移的图片能有一个参照容器作百分比计算。优点是可以不知道图片的大小,随便放张尺寸不超过父容器的图片上去都能做到居中。另外,兼容性好,IE6 都是能顺利兼容的。代码如下:

实例

p {

 position:absolute;

 top:50%;

 left:50%;}

.show-img {

 position:absolute;

 right:50%;

 bottom:50%;}


尝试一下 »
效果如下所示:

微信截图_20201112111221

transform居中

上面讲到的 div 居中的例子中,div 的宽度都是固定的,然而实际项目中,有可能遇到不定宽的 div,特别是响应式或者移动端的设计中,更加常见。所以下面介绍一种不需要定宽的 div 水平垂直居中方法。 
先上代码:

实例

.children-inline {

 position: relative;

 left: -50%;

 -webkit-transform : translate3d(0, -50%, 0);

 transform : translate3d(0, -50%, 0);

 background-color: black;

 color:white;

}


尝试一下 »
效果如下所示:

微信截图_20201112111417

首先我们利用 float,将需要居中的div的父 div 也就是 children 的宽度收缩,然后 left:50%,将 children 的左边与水平中线对齐。这个时候,还没有真正居中,我们需要将 children-inner 左移动 -50%,这样就水平居中了。 

再来说说垂直方向,先将 children 的 top 设为50%,然后其上边和垂直中线对齐了,同样,我们需要将children-inner 上移动 -50%。但是这个 50% 是计算不出来的,所以我们用到了 transform : translate3d(0, -50%, 0); 
这个方法非常好用噢。

flex居中

最后来介绍一下 CSS3 中的 display:flex 来实现的水平垂直居中的方法。

实例

.parent {

 display:flex;

 align-items: center;/*垂直居中*/

 justify-content: center;/*水平居中*/

 width:100%;

 height:100%;

 background-color:red;

}


尝试一下 »
效果如下所示:

微信截图_20201112111606
这种方式最为简便,就是兼容性不好,不过随着时间的前进,各大浏览器一定会都兼容的。

扩展阅读

flex 除了可以用于表示居中之外,它还是一个强大的开源应用程序框架,允许使用相同的编程模型,工具和代码库构建针对浏览器,移动设备和桌面的传统应用程序。你可以在本站的《Flex教程》中掌握更多有关于Flex框架的详细信息。


如今我们的网站、页面更加需要注重细节,不论是字体的样式、还是图片的分辨率清晰度都会影响到用户的访问体验和 PV,以及用户以后是否会回访我们的网站/博客。为了让我们的网页变得更加美观个性化,我们需要了解更多的 CSS 样式属性。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化,CSS 拥有对网页对象和模型样式编辑的能力。为了方便大家学习 CSS 样式,下面大家整理 CSS 样式知识点及参考样式合集。


css样式

一些常见不必要 CSS 样式

1、与默认 CSS 样式一致

我们有时候写的 CSS 样式会与浏览器默认的 CSS 样式一致,有时候您自己都可能没有意识到。

常见的例子有:

div{width:auto; height:auto;}

对于一些刚使用 CSS 的朋友,有时候,其为了表达这段 div 高度是自动适应于内部元素的,会情不自禁的加上 height:auto; 的样式。很显然,这段样式是没有必要的,默认的任何块状元素的高度几乎都是 auto。

我们来看看人人网个人首页的 CSS 样式文件(链接点这里),在 chrome 浏览器下 Ctrl+F 搜索  height:auto,居然显示了九条(见下图)。

height:auto

height:auto;的样式

按照常规来讲,height:auto 只有在使用 CSS 优先级抹掉之前的 height 定值的样式的时候使用,其余情况基本上都是可以去掉的。就像是上面人人网的例子,居然9个 height:auto,这里至少有一半是没有必要的。

body,p,h1,h2,h3,h4,h5,h6{margin:0; padding:0;}

v

上面有关 body,p 等标签的样式中有个样式是无效的,与默认值一致的,这个样式就是 padding:0;,对于 body,p,h1~6 这些标签,本身的 padding 值就是0,所以只需要 margin:0 就可以了。


在CSS reset中,为了方便,都是一堆标签直接套个 margin:0;padding:0; 了事。还拿人人网的 CSS 样式文件举例,人人网个人首页样式第一行就是一长串标签带个 margin:0;padding:0; 先不管其把 span,div,em 之类的标签也加进入,就算是没有这些标签,也是极不推荐这种写法,完全的浪费资源,浪费 CSS 的渲染。比较推荐的做法是把 ul,ol 独立出来,因为ul,ol还要独立设置 list-style 样式,而且常用的标签就 ul,ol 列表元素有默认的 padding 值,所以高效的写法应该是:

body,p,h1,h2,h3,h4,h5,h6{margin:0;}

ul,ol{list-stype:none; margin:0; padding:0;}

span{display:inline; float:left; margin-left:3px;}

这也是常出现的。出现这种情况的原因可能与 IE6 的浮动双边距 bug 有关,我们可以用设置 display:inline 的方法修复 IE6 的这个 bug,但是,如果对这个 bug 理解不够,对 CSS 的理解不足,就会出现滥用的情况。上面是滥用的情况之一,对于 span/a/em/cite/i/b/strong 等行内元素默认就是 display:inline 的,所以给其设置 display:inline 属性是多此一举。


类似的情况还有对本身就是 block 水平的元素设置 display:block 属性,例如:

li{display:block; padding:4px 0;}

上面的情况屡见不鲜,甚至在比较优秀的网站上也会有这类低级的样式问题。


其他一些情况

div{margin:auto;}

textarea{overflow:auto;}

img,input,button{vertical-align:baseline;}

div{background-position:0 0;}


css参考样式集合

一. 字体属性:(font)

1. 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD

2. 样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)

3. 行高 {line-height: normal;}(正常) 单位:PX、PD、EM

4. 粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常)

5. 变体 {font-variant: small-caps;}(小型大写字母) normal;(正常)

6. 大小写 {text-transform: capitalize;}(首字母大写) uppercase;(大写) lowercase;(小写) none;(无)

7. 修饰 {text-decoration: underline;}(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁)


二. 常用字体: (font-family)

"Courier New", Courier, monospace, "Times New Roman", Times, serif, Arial, Helvetica, sans-serif, Verdana


三. 背景属性: (background)

1. 色彩 {background-color: #FFFFFF;}

2. 图片 {background-image: none;}

3. 重复 {background-repeat: no-repeat;}repeat-x(水平);repeat-y(垂直)

4. 滚动 {background-attachment: fixed;}(固定) scroll;(滚动)

5. 位置 {background-position: left;}(水平) top(垂直);

简写方法 {background:#000 url(..) repeat fixed left top;} /*简写·这个在阅读代码中经常出现.


四. 区块属性: (Block)

1. 字间距 {letter-spacing: normal;} 数值 

2. 对齐 {text-align: justify;}(两端对齐) left;(左对齐) right;(右对齐) center;(居中)

3. 缩进 {text-indent: 数值px;}

4. 垂直对齐 {vertical-align: baseline;}(基线) sub;(下标) sup;(上标) top; text-top; middle; bottom; text-bottom;

5. 词间距word-spacing: normal; 数值

6. 空格white-space: pre;(保留) nowrap;(不换行)

7. 显示 {display:block;}(块) inline;(内嵌) list-item;(列表项) run-in;(追加部分) compact;(紧凑) marker;(标记) table; inline-table; table-raw-group; table-header-group; table-footer-group; table-raw; table-column-group; table-column; table-cell; table-caption;(表格标题) /*display 属性的了解很模糊*/


css


五. 方框属性: (Box)

1. width:; height:; float:; clear:both; margin:; padding:; 顺序:上右下左


六. 边框属性: (Border)

1. border-style: dotted;(点线) dashed;(虚线) solid; double;(双线) groove;(槽线) ridge;(脊状) inset;(凹陷) outset; border-width:; 边框宽度

border-color:#;

简写方法border:width style color; /*简写*/


七. 列表属性: (List-style)

1. 类型list-style-type: disc;(圆点) circle;(圆圈) square;(方块) decimal;(数字) lower-roman;(小罗码数字) upper-roman; lower-alpha; upper-alpha;

2. 位置list-style-position: outside;(外) inside;

3. 图像list-style-image: url(..);


八. 定位属性: (Position)

1.Position: absolute; relative; static;

visibility: inherit; visible; hidden;

overflow: visible; hidden; scroll; auto;

clip: rect(12px,auto,12px,auto) (裁切)


九. CSS文字属性:

1. color : #999999; /*文字颜色*/

2. font-family : 宋体,sans-serif; /*文字字体*/

3. font-size : 9pt; /*文字大小*/

4. font-style:itelic; /*文字斜体*/

5. font-variant:small-caps; /*小字体*/

6. letter-spacing : 1pt; /*字间距离*/

7. line-height : 200%; /*设置行高*/

8. font-weight:bold; /*文字粗体*/

9. vertical-align:sub; /*下标字*/

10. vertical-align:super; /*上标字*/

11. text-decoration:line-through; /*加删除线*/

12. text-decoration: overline; /*加顶线*/

13. text-decoration:underline; /*加下划线*/

14. text-decoration:none; /*删除链接下划线*/

15. text-transform : capitalize; /*首字大写*/

16. text-transform : uppercase; /*英文大写*/

17. text-transform : lowercase; /*英文小写*/

18. text-align:right; /*文字右对齐*/

19. text-align:left; /*文字左对齐*/

20. text-align:center; /*文字居中对齐*/

21. text-align:justify; /*文字分散对齐*/

vertical-align属性

22. vertical-align:top; /*垂直向上对齐*/

23. vertical-align:bottom; /*垂直向下对齐*/

24. vertical-align:middle; /*垂直居中对齐*/

25. vertical-align:text-top; /*文字垂直向上对齐*/

26. vertical-align:text-bottom; /*文字垂直向下对齐*/


十. CSS边框空白

1. padding-top:10px; /*上边框留空白*/

2. padding-right:10px; /*右边框留空白*/

3. padding-bottom:10px; /*下边框留空白*/

4. padding-left:10px; /*左边框留空白


CSS 样式表中的样式覆盖顺序

有时候在写 CSS 的过程中,某些限制总是不起作用,这就涉及了 CSS 样式覆盖的问题,如下所示:

#navigator {  

    height: 100%;  

    width: 200;  

    position: absolute;  

    left: 0;  

     border: solid 2 #EEE;  }    

.current_block {  

     border: solid 2 #AE0;  }  

在一些教材中,只说 CSS 的顺序是“元素上的 style” > “文件头上的 style 元素” >“外部样式文件”,但对于样式文件中的多个相同样式的优先级怎样排列,没有详细说明。经过测试和继续搜索,得知优先级如下排列:
 
1. 样式表的元素选择器选择越精确,则其中的样式优先级越高:

id选择器指定的样式 > 类选择器指定的样式 > 元素类型选择器指定的样式
所以上例中,#navigator 的样式优先级大于.current_block 的优先级,及时 .current_block 是最新添加的,也不起作用。
 
2. 对于相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高:

注意,这里是样式表文件中越靠后的优先级越高,而不是在元素 class 出现的顺序。比如 .class2 在样式表中出现在 .class1 之后:

.class1 {  

    color: black;  }    

.class2 {  

    color: red;  }

而某个元素指定 class 时采用 class="class2 class1"这种方式指定,此时虽然class1在元素中指定时排在class2的后面,但因为在样式表文件中class1处于class2前面,此时仍然是class2的优先级更高,color的属性为red,而非black。

 

3. 如果要让某个样式的优先级变高,可以使用!important来指定:

.class1 {  

    color: black !important;  }    

.class2 {  

    color: red;  } 

这时 class 将使用 black,而非 red。

 

对于一开始遇到的问题,有两种解决方案:

1. 将 border 从 #navigator 中拿出来,放到一个class .block中,而.block放到.current_block之前:

#navigator {  

    height: 100%;  

    width: 200;  

    position: absolute;  

    left: 0;  }    

.block {  

    border: solid 2 #EEE;  }    

.current_block {  

    border: solid 2 #AE0;  }  

 需要默认为#navigator元素指定class="block"

2. 使用!important:

#navigator {  

    height: 100%;  

    width: 200;  

    position: absolute;  

    left: 0;  

    border: solid 2 #EEE;  }    

.current_block {  

    border: solid 2 #AE0 !important;  }  

此时无需作任何其他改动即可生效。可见第二种方案更简单一些。 

大家都知道CSS的全称叫做“层叠样式表”,但估计很多人都不知道“层叠”二字的含义。其实,“层叠”指的就是样式的覆盖,当一个元素被运用上多种样式,并且出现重名的样式属性时,浏览器必须从中选择一个属性值,这个过程就叫“层叠”。样式覆盖(这种叫法更大众化些)遵循一定的规则。


首先需要明确的是,很多情况都会导致一个元素被运用上多种样式,样式覆盖的规则也需要根据不同的情况来定,具体规则如下。


规则一:由于继承而发生样式冲突时,最近祖先获胜。

CSS的继承机制使得元素可以从包含它的祖先元素中继承样式,考虑下面这种情况:

<style>

body

 {color:black;}

p

 {color:blue;}

</style>

<p>welcome to <strong>51coolma</strong></p>

strong分别从bodyp中继承了color属性,但是由于p在继承树上离strong更近,因此strong中的文字最终继承p的蓝色。

规则二:继承的样式和直接指定的样式冲突时,直接指定的样式获胜。

在上面的例子中,假如还指定了strong元素的样式,如:

strong

 {color:red;}

那么根据规则二,strong中的文字最终显示为红色。

规则三:直接指定的样式发生冲突时,样式权值高者获胜。

样式的权值取决于样式的选择器,权值定义如下表。


css选择器

可以看到,内联样式的权值>>ID选择器>>类选择器>>标签选择器,除此以外,后代选择器的权值为每项权值之和,比如#nav .current a”的权值为100 + 10 + 1 = 111。

规则四:样式权值相同时,后者获胜。

考虑下面这种情况

<p class="byline">Written by <a class="email" href="mailto:3400982550@qq.com">Jean Graine de Pomme</a></p>

.byline a {color:red;}

p .email {color:blue;}

.byline ap .email都直接指定了上面的a元素,且权值都为11,根据规则四,最终显示蓝色。

由于样式表可以是外部的,也可以是内部的,规则四提醒我们要注意外部样式表引入的顺序(及<link>元素的顺序),以及外部样式表与内部样式表的出现位置。一般来说,内部样式表出现在所有外部样式表的引入之后,一般是在</head>之前。


规则五:!important的样式属性不被覆盖。

!important可以看做是万不得已的时候,打破上述四个规则的”金手指”。如果你一定要采用某个样式属性,而不让它被覆盖的,可以在属性值后加上!important,以规则四的例子为例,.byline a {color:red !important;}可以强行使链接显示红色。大多数情况下都可以通过其他方式来控制样式的覆盖,不能滥用!important

JQuery中操作CSS样式的方法

//1、获取和设置样式

$("#tow").attr("class")获取ID为tow的class属性

$("#two").attr("class","divClass")设置Id为two的class属性。

//2、追加样式

$("#two").addClass("divClass2")为ID为two的对象追加样式divClass2

//3、移除样式

$("#two").removeClass("divClass")移除 ID为two的对象的class名为divClass的样式。

$(#two).removeClass("divClass divClass2")移除多个样式。

//4、切换类名

$("#two").toggleClass("anotherClass") //重复切换anotherClass样式

//5、判断是否含有某项样式

$("#two").hasClass("another")==$("#two").is(".another");

//6、获取css样式中的样式

$("div").css("color") 设置color属性值. $(element).css(style)

//设置单个样式

$("div").css("color","red")

//设置多个样式

$("div").css({fontSize:"30px",color:"red"})

$("div").css("height","30px")==$("div").height("30px")

$("div").css("width","30px")==$("div").width("30px")

//7.offset()方法

//它的作用是获取元素在当前视窗的相对偏移,其中返回对象包含两个属性,即top和left 。

//注意:只对可见元素有效。

var offset=$("div").offset();

var left=offset.left;         //获取左偏移

var top=offset.top;        //获取右偏移

//8、position()方法

//它的作用是获取元素相对于最近的一个position样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,它返回的对象也包括两个属性即top和left。

//9、scrollTop()v方法和scrollLeft()方法

$("div").scrollTop();        //获取元素的滚动条距顶端的距离。

$("div").scrollLeft();         //获取元素的滚动条距左侧的距离。

//10、jQuery中的 toggle和slideToggle 方法,都可以实现对一个元素的显示和隐藏。区别是:

//toggle:动态效果为从右至左。横向动作。

//slideToggle:动态效果从下至上。竖向动作。

//比如想实现一个树由下至上收缩的动态效果,就使用slideToggle就ok了。

$('input').attr("readonly",true)//将input元素设置为readonly

$('input').attr("readonly",false)//去除input元素的readonly属性

$('input').attr("disabled",true)//将input元素设置为disabled

$('input').attr("disabled",false)//去除input元素的disabled属性


看完 51coolma《css 教程》中的《css 图像透明/不透明》,你对 CSS 中的半透明颜色可能已经有了基础的了解,CSS 透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情。目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效,但是总得来说它是一个巨大的变革。关于 CSS 透明度,有一点需要注意的是,它虽然使用了很多年,但它一直以来都不是一个标准属性,它是一种非标准技术,应该是 CSS3 规范的一部分。


css透明度

怎样在CSS样式中设置背景的透明度

怎样在 CSS 样式中设置背景的透明度,下面给出一个具体的实例。把类为 box 的层设为透明。

实例

.box{

   width:300px;

   height:200px;

   margin:0 auto;

   boxder:1px solid #ccc;

   background:#000;

   filter:alpha(opacity:30);

   opacity:0.3;

   color:red;}


尝试一下 »
其中 background:#000; filter:alpha(opacity:30); opacity:0.3;为关键代码,当 opacity 值为1时,表示完全不透明,为0时表示完全透明。

其他的属性介绍如下:
opacity: 0.3;这是“最重要的”,因为它是在 CSS 的现行标准。这将在 Firefox,Safari 和 Opera 的大多数版本的工作。这将是你所需要的一切如果所有的浏览器都支持目前的标准。当然是他们不会错。

filter:alpha(opacity=30);这一个是针对IE浏览器

-moz-opacity:0.3;你需要这一个支持老版本的 Mozilla 浏览器如 Netscape Navigator。

-khtml-opacity: 0.3;这是旧版本的 Safari(1.×)当渲染引擎是使用仍被称为 kthml,而不是目前的WebKit。

CSS 中用 javascript 或 jquery 实现透明度的改变

如何用 CSS 实现背景半透明效果?我们一般的做法是用两个层,一个用于放文字,另一个用于做透明背景,因为透明滤镜的效果会影响到里面的内容。


不过如果你只需求在 IE 下实现,使用 CSS 实现透明度有很多方案,这里只是介绍大家通用的方法:

.transparent_class {

filter:alpha(opacity=50);//标准的css透明度,在大部分的标准浏览器Firefox, Safari, and Opera都有效

opacity:0.5;//兼容IE解决方案

-moz-opacity:0.5;//老的Mozilla browsers如NetscapeNavigator.几乎没有可以不需要

-khtml-opacity:0.5;//兼容老的Safari (1.x) 版本,很少可以不用    }


知道了CSS改变透明度的原理,那么使用 javascript 动态改变透明度就简单了:

实例

<script>

   window.onload =function(){

   var myDiv = document.getElementById("transparent_div");

   myDiv.onclick =function(){

       myDiv.style.opacity =".4";//针对所有通用浏览器

       myDiv.style.filter ="alpha(opacity=40)";//针对IE浏览器}}

</script>


尝试一下 »

jQuery改变透明度实现如下:

实例

$(document).ready(function(){

$("#btn1").click(function(){

$("#box").animate({opacity:"0"});});

$("#btn2").click(function(){

$("#box").animate({opacity:"1"});});});


尝试一下 »

CSS透明技巧汇总

一、旧的Opacity设置


以下代码是 Firefox 和 Safari 旧版本所需的透明度设置:

#myElement {  -khtml-opacity: .5;  -moz-opacity: 0.5;  }

-khtml-opacity 设置是针对旧版本的Webkit渲染引擎,这种专用属性现在已经过时了,除非你还有需要兼容Safari 1.x.的用户。

第二行使用专用属性 -moz-opacity是 为了兼容 Mozilla 渲染引擎的早期版本,以及追溯到 Netscape Navigator。 Firefox 0.9 以后就不要求使用 -moz-opacity 属性,Firefox 3.5(现在使用 Gecko 引擎)已经不在支持这个属性。

透明样例


二、在Firefox, Safari, Chrome和Opera下的CSS透明度 

以下代码是除了IE外的所有当前浏览器的最简单,最新的不透明度设置的CSS语法:

#myElement { opacity: 0.7; }

上述语法将设置一个元素为70%不透明(或30%透明)。设置opacity:1将使元素不透明,而设置opacity:0将使得元素完全不可见。你 只要记住“opacity”等同于“不透明”就很容易记住了,opacity值越小就越接近透明。
opacity属性可以精确地小数点后两位,所以值取".01"和".02"实际上是不同的,虽然可见度很难被发觉。一般情况下,精确到一位就可以了,取值如".3"或".7"。

三、IE下的CSS透明度

IE下照旧有别于其他浏览器,并且目前也有三个不同版本的IE在广泛使用,透明度设置是不同的,有时需要额外的CSS来控制:

#myElement {      filter: alpha(opacity=40);  }

上面的CSS使用专用的filter属性来设置IE6-8透明度。对于IE6和IE7需要注意:为了使得透明设置生效,元素必须是“有布局”。一个元素 可以通过使用一些CSS属性来使其被布局,有如width和position。

另外一个设置IE8的CSS透明度的方法语法如下:

#myElement {      filter: progid:DXImageTransform.Microsoft.Alpha(opacity=40);

/* 第一行在IE6, IE7和IE8下有效 */

-ms-filter:       “progid:DXImageTransform.Microsoft.Alpha(opacity=40)”;

/*第二行仅在IE8下有效 */}

第一行代码针对当前所有IE版本,第二行仅针对 IE8。
注意两行代码的不同之处:在第二行代码中,在filter属性前跟着-ms-前缀,并且属性值有加引号,这些都是语法所必须的。
说实在,有了之前一个例子中用 alpha(opacity=40)的语法来作用于任何版本的 IE 下的任何有布局的元素之后,并不能确定是否还有必要用”progid“的方法

CSS 如何值改变背景透明的,不改变子元素透明度?

一般情况下,我们可以使用 css 的 opcity 属性改变某个元素的透明度,但是其元素下的子元素的透明度也会被改变,即使对子元素重新定义也没有用,例如:

实例

<div style="opacity:0.4; background-image:url(/statics/images/w3c/intro.png)">


尝试一下 »
文字元素的透明度也会是 0.4。于是想一想,如果有方法只改变背景的透明度就能解决此问题了。
 
方法1:使用一张透明的图片做背景可以达成效果,但是有没有更简单的方法呢?
 
方法2:使用 RGBA。

例如:

实例

<div style="background-color:rgba(0, 0, 0, 0.4)">  


尝试一下 »

CSS在设置了透明度的层里,怎么让里面的层不透明

在外层DIV设置了CSS代码如下

实例

opacity: 0.8;

-moz-opacity: 0.8;

filter: alpha(opacity=80);


尝试一下 »
但在此层里面的层都透明了,怎么让里面的层不透明?

方法:
如果是颜色,完全可以用背景色透明 rgba 来代替 opacity,
如果是图片,就用 ps 简单处理一下即可。
opacity 这个属性指定的透明是包括里面的元素的,不可能只有外面透明,里面不透明

css里边写透明样式怎么写

如果是用样式的话需要用到滤镜
style="filter:Alpha(Opacity=opacity, FinishOpacity=finishopacity,Style=style, StartX=startX,StartY=startY,FinishX=finishX,FinishY=finishY)"

说明:
Opacity:起始值,取值为0~100, 0为透明,100为原图。
FinishOpacity:目标值。
Style:1或2或3
StartX:任意值
StartY:任意值

语法如下:

filter:Alpha(Opacity="0",FinishOpacity="75",Style="2") 

但是因为滤镜的兼容性问题,最好是不要用,可以用 ps 做图的时候,把背景调一下透明度后导成 png 格式的图片就行了,如果透明的背景颜色一样的话,那么你可以切成 1px*1px 大小的 png 图片平铺,gif 只支持透明度 100% 也就是完全透明的图片,半透明的不支持,而 png 格式的图片则不存在什么问题,唯一会有问题的地方就只是 IE6 不兼容透明 png 格式而已。


写 CSS 样式的时候,恐怕最头疼的就是各个浏览器下的兼容性问题,即 CSS hack,不同的浏览器对 CSS 的解析结果是不同的,因此会导致相同的 CSS 输出的页面效果不同,这就需要 CSS hack来解决浏览器局部的兼容性问题。使用 CSS 、 hack将会使用你的 CSS 代码部分失去作用,然后借助条件样式,使用其原 CSS 代码在一些浏览器解析,而 CSS hack代码在符合条件要求的浏览器中替代原 CSS 那部分代码。

 CSS hack除了可以处理与浏览器不兼容的 CSS 代码,也能够让我们通过 CSS hack给不同版本的浏览器定制编写不同的CSS效果。

css hack

css hack基本概念

CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack 就是让你记住这个标准),以达到应用不同的 CSS 样式的目的,比如 .kwstu{width:300px;_width:200px;},一般浏览器会先给元素使用 width:300px; 的样式,紧接着后面还有个_width:200px; 由于下划线 _width 只有 IE6 可以识别,所以此样式在 IE6 中实际设置对象的宽度为200px,后面的把前面的给覆盖了,而其他浏览器不识别 _width 不会执行 _width:200px; 这句样式,所以在其他浏览器中设置对象的宽度就是 300px;

简单地讲, CSS hack 指各版本及各品牌浏览器之间对 CSS 解释后出现网页内容的误差(比如我们常说错位)的处理。由于各浏览器的内核不同,所以会造成一些误差就像 JS 一样,一个 JS 网页特效,在微软 IE6、IE7、IE8 浏览器有效果,但可能在火狐(Mozilla Firefox)谷歌浏览器无效,这样就叫做 JS hack ,所以我们对于 CSS 来说他们来解决各浏览器对 CSS 解释不同所采取的区别不同浏览器制作不同的 CSS 样式的设置来解决这些问题就叫作 CSS Hack。


CSS Hack常见的有三种形式:CSS 属性 Hack、CSS 选择符 Hack 以及 IE 条件注释 Hack, Hack 主要针对IE 浏览器。

1、属性级 Hack:比如 IE6 能识别下划线_和星号 * ,IE7 能识别星号 * ,但不能识别下划线_,而 firefox 两个都不能认识。

2、选择符级 Hack:比如 IE6 能识别 *html .class{},IE7能识别 *+html .class{} 或者 *:first-child+html .class{}。

3、IE 条件注释 Hack:IE条件注释是微软从 IE5 开始就提供的一种非标准逻辑语句。比如针对所有IE:<!–[if IE]><!–您的代码–><![endif]–>,针对 IE6 及以下版本:<!–[if lt IE 7]><!–您的代码–><![endif]–>,这类 Hack 不仅对 CSS 生效,对写在判断语句里面的所有代码都会生效。


PS:条件注释只有在 IE 浏览器下才能执行,这个代码在非 IE 浏览下被当做注释视而不见。可以通过IE条件注释载入不同的 CSS、JS、HTML 和服务器代码等。

提示:有个 CSS hack 三种常见形式的更多解释,你可以查阅《CSS3学习笔记》的“CSS hack合集”部分的内容。


各浏览器下 Hack 的写法

1、Firefox

@-moz-document url-prefix() { .selector { property: value; } }
上面是仅仅被Firefox浏览器识别的写法,具体如:

@-moz-document url-prefix() { .demo { color:lime; } }
支持Firefox的还有几种写法:

/* 支持所有firefox版本 */ #selector[id=selector] { property: value; } 或者: @-moz-document url-prefix() { .selector { property: value; } } /* 支持所有Gecko内核的浏览器 (包括Firefox) */ *>.selector { property: value; }

2、Webkit 内核核浏览器(chrome and safari)

@media screen and (-webkit-min-device-pixel-ratio:0) { Selector { property: value; } }
上面写法主要是针对Webkit内核的浏览器,如Google Chrome 和 Safari浏览器:

@media screen and (-webkit-min-device-pixel-ratio:0) { .demo { color: #f36; } }

3、Opera 浏览器

html:first-child>body Selector {property:value;} 或者: @media all and (min-width:0) { Selector {property: value;} } 或者: @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body Selector { property: value; } }

上面则是Opera浏览器的Hack写法:

@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { head~body .demo { background: green; } }

4、IE9浏览器

:root Selector {property: value9;}
上面是IE9的写法,具体应用如下:

:root .demo {color: #ff09;}

5、IE9以及IE9以下版本

Selector {property:value9;}
这种写法只有IE9以及IE9以下版本能识别,这里需要注意此处“9”只能是“9”不能是别的,比如说“8”,不然会失去效果的,如:

.demo {background: lime9;}

css hack 区分

6、IE8浏览器

@media screen{

Selector {property: value;}     }


7、IE8以及IE8以上的版本

Selector {property: value;}
这种写法只有IE8以及IE8以上版本支持,如

.demo {color: #ff0;}

8、IE7浏览器

*+html Selector{property:value;} 或 *:first-child+html Selector {property:value;}
上面两种是IE7浏览器下才能识别,如:

*+html .demo {background: green;} 或者: *:first-child+html .demo {background: green;}

9、IE7及IE7以下版本浏览器

Selector {*property: value;}
上面的写法在IE7以及其以下版本都可以识别,如:

.demo {*background: red;}


10、IE6浏览器

Selector {_property/**/:/**/value;} 或者: Selector {_property: value;} 或者: *html Selector {property: value;}
具体应用如下:

.demo {_width/**/:/**/100px;} 或者: .demo {_width: 100px;} 或者: *html .demo {width: 100px;}
上面具体介绍了各种版本浏览器下如何识别各种的Hack写法,包括了IE6-9以及现代版本的浏览器写法。综合上面的所述,我们针对不同浏览器的Hack写法主要分为两种从CSS选择器和CSS属性上来区别不同的Hack写法。



慎用的CSS Hack

在 Web 页面制作中尽量不要使用 CSS Hack 来处理兼容问题。因为任何浏览器下出现渲染不一致都极有可能是我们自己的结构或样式不符合 W3C 的某些要求,或者说违背了浏览器的某些规则而造成的,所以我们应该尽量通过结构或 CSS 的修改来达到各浏览器渲染一致效果,除非到了万不得已情况下,才考虑CSS的Hack。

网上许多与 CSS Hack 相关的文章中说,在 CSs 的属性值和分号之间添加字符 ,可以实现对 IE 8 或  IE 9的 CSS hack (有的说,仅支持 IE8)。

网上的示例是这样的:

.css-hack {

    color: red; /* 其他浏览器显示红色 */

    color: blue; /* IE8、IE9 显示蓝色 */

    +color: green; /* IE7 显示绿色 */

    _color: brown; /* IE6 显示棕色 */

}

通过实际测试发现,关于使用字符 实现的上述 CSS Hack 有3点需要注意。

1、IE10 也能够识别添加了字符 的 CSS 属性值(笔者这里没有 IE 11,不知道 IE 11 是否也能识别)。

2、属性值和 之间不能有空格,有一个空格的话(例如:blue ),在 IE 8 中就失效了,仅对 IE 9/IE 10有效。

3、如果我们只想对 IE 8/IE 9进行CSS Hack 呢?这个时候,我们去掉后面两行与 IE6、IE7 有关的代码。

.css-hack {

    color: red; /* 其他浏览器显示红色 */

    color: blue; /* IE8、IE9 显示蓝色 */

}

这个时候,在 IE 6、IE 7 浏览器中,你会发现你看到的不是红色,而是黑色(也就是默认的字体颜色)!

这是因为一般浏览器的思路是,先过滤掉无效的css属性值,然后再从正确的属性设置中根据优先级获取最后面的css属性值。而 IE 6/7 浏览器不是先过滤掉无效的属性值,而是先根据优先级,获取最后面的 CSS 属性值,然后再来判断该属性值是否,无效就忽略掉。因此,如果按照网上所说,仅仅使用 来实现 IE 8+ 的 CSS Hack,则会对 IE6/7 中的显示效果造成破坏。你必须通过额外的css属性设置来复原IE6/7的样式。

因为,我们不能够简单地下结论说,使用 可以实现对 IE 8、IE 9 甚至 IE 10 +的 CSS Hack。

浏览器识别字符标准对应表

<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->

<!--[if IE]> 所有的IE可识别 <![endif]-->

<!--[if IE 6]> 仅IE6可识别 <![endif]-->

<!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->

<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->

<!--[if IE 7]> 仅IE7可识别 <![endif]-->

<!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->

<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->

<!--[if IE 8]> 仅IE8可识别 <![endif]-->

<!--[if IE 9]> 仅IE9可识别 <![endif]-->

从上表可以分析出以下几种情况:

1.大部分特殊字符 IE 浏览器支持,其他主流浏览器 firefox,chrome,opera,safari不支持 (opera 可识别除外)。
2. 9    :所有 IE 浏览器都支持
3. _和-  :仅 IE6 支持
4. *     :IE6、E7 支持
5.    :IE8、IE9 支持,opera 部分支持
6. 9  :IE8 部分支持、IE9 支持
7. 9  :IE8、IE9 支持


css hack兼容技巧

1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但 IE 不会.(可用 !important 解决)

2, 居中问题
①.垂直居中.将 line-height 设置为 当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)
②.水平居中. margin: 0 auto;(当然不是万能)

3, 若需给 a 标签内内容加上样式, 需要设置 display: block;(常见于导航标签)

4, FF 和 IE 对 BOX 理解的差异导致相差 2px 的还有设为 float的div在ie下 margin加倍等问题

5, ul 标签在 FF 下面默认有 list-style 和 padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)

6, 作为外部 wrapper 的 div 不要定死高度, 最好还加上 overflow: hidden.以达到高度自适应

7, 关于手形光标. cursor: pointer. 而hand 只适用于 IE


针对 firefox ie6 ie7 的 css 样式
现在大部分都是用 !important 来 hack,对于 ie6 和 firefox 测试可以正常显示,但是 ie7 对 !important 可以正确解释,会导致页面没按要求显示!找到一个针对 IE7 不错的 hack 方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。

现在写一个CSS可以这样:

#1 { color: #333; } /* Moz */

* html #1 { color: #666; } /* IE6 */

*+html #1 { color: #999; } /* IE7 */

那么在 firefox 下字体颜色显示为#333,IE6 下字体颜色显示为 #666,IE7 下字体颜色显示为#999。


CSS 布局中的居中问题


主要的样式定义如下:

body {TEXT-ALIGN: center;}

#center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; }

说明:


首先在父级元素定义 text-align: center; 这个的意思就是在父级元素内的内容居中;对于 IE 这样设定就已经可以了。


但在 mozilla 中不能居中。解决办法就是在子元素定义时候设定时再加上margin-right: auto;margin-left: auto;


需要说明的是,如果你想用这个方法使整个页面要居中,建议不要套在一个 DIV 里,你可以依次拆出多个div,
只要在每个拆出的 div 里定义 margin-right: auto;margin-left: auto; 就可以了。


盒模型不同解释

#box{ width:600px; //for ie6.0- width:500px; //for ff+ie6.0}

#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-}

浮动 IE 产生的双倍距离

#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略}

这里细说一下 block,inline 两个元素,Block 元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,…不可控制(内嵌元素);


#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的的效果 diplay:table;



IE 不认得 min-这个定义,但实际上它把正常的 widthheight 当作有 min 的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用 min-widthmin-height 的话,IE下面根本等于没有设置宽度和高度。比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:


#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}


css

页面的最小宽度


min-width 是个非常方便的 CSS 命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但 IE 不认得这个,而它实际上把 width 当做最小宽度来使。为了让这一命令在 IE 上也能用,可以把一个<div> 放到 <body> 标签下,然后为 div 指定一个类:


然后 CSS 这样设计:

#container{ min-width: 600px; width:expression(document.body.clientWidth < 600? “600px”: “auto” );}

第一个min-width是正常的;但第2行的 width 使用了 JavaScript,这只有IE才认得,这也会让你的 HTML 文档不太正规。它实际上通过 Javascript 的判断来实现最小宽度。


清除浮动

.hackbox{ display:table; //将对象作为块元素级的表格显示}或者.hackbox{ clear:both;}

或者加入 :after(伪对象),设置在对象后发生的内容,通常和 content 配合使用,IE 不支持此伪对象,非 IE 浏览器支持,

所以并不影响到 IE/WIN 浏览器。这种的最麻烦的……

#box:after{ content: “.”; display: block; height: 0; clear: both; visibility: hidden;}


属性选择器(这个不能算是兼容,是隐藏 CSS 的一个bug)


p[id]{}div[id]{}
这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的。



IE捉迷藏的问题


当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。


解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。



高度不适应


高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用
marginpadding 时。

例:

实例

#box {background-color:#eee; }

#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }


尝试一下 »

解决方法:在 P 对象上下各加 2个空的 div 对象 CSS 代码:.1{height:0px;overflow:hidden;}或者为 DIV 加上 border 属性。


都说用 DIV+CSS 布局来设计网站便于优化,容易被收录,那么你对 DIV+CSS 布局的用法是否了解?CSS 布局是网页html通过 DIV 标签 +CSS 样式表代码开发制作的(html)网页的统称。DIV+CSS 布局是现在非常流行的布局方法,替代了原来的表格布局。下面我们先来看下学习 DIV+CSS 布局的基本步骤:

DIV+CSS


一、认清学习的要求

1、弄清目的,首先要认识为什么要学习 CSS?
2、心态不能急,如果你很急躁,否则会很快丧失兴趣。
3、坚持,这个不是一到两天的事情,是一个漫长的过程(至少两个月)。


二、基础学习

1、了解 CSS 作用是什么?(即 CSS、html 和 JS 的关系是什么,HTML 结构重要性)
2、CSS 基础知识、CSS 属性样式
3、HTML

上面几点,一般都是很快的掌握了,也不需要做到精通,了解大概就可以。

差不多时候,开始在网上找一些 psd 设计稿,自己做做看,做完之后发现问题,并把他们进行总结。


三、学会分析别人网页布局

当你做 psd 设计的代码,发现问题,可能找不到答案或没有人帮你回答,也不要急,这时最好看看别人网页的布局结构,主要看 html 布局框架,进行借鉴(当然网上还有很多结构代码很槽糕)。然后了解美工图如何分析、如何使用 PS 工具切出需要的素材、如何使用这些切出的图片素材进行布局、布局技巧、兼容性解决与避免等。

总之:就是让自己布局时候能知道大的布局结构如何布局,建立布局思想与技巧。


四、代码的规范

当你看完很多别人的网页代码之后,你会发现,他们都有规范,这些规范网上有很多,你需要总结和背诵,当然不是死记硬背,主要在切图上多做多实践,熟了就能记住。


五、大量练习

练习是从始到终的,不要断,即使找一些简单的网页进行布局实践,开始可能开发很慢,会遇到很多小问题,也不急。


制作DIV CSS网页前思考布局:

首先我们拿到一张网页美工图片我们将从上下、上中下、左右、上中(中包括左右)下布局框架来思考。

下面通过一个实例讲解下 CSS 布局分析,我们以 DIV CSS5 列表页面分析 CSS 布局:

制作DIV CSS网页前思考布局

首先我们可以分析出我们 DIV CSS 布局重构此页面结构框架,我们可以看出是上、中、下结构,其中又包括了左右结构。

由此我们就要写此页面 CSS 和 html 时候就先从上到下从外到内原则写 CSS 与 html。

我们首先建一个 web 的文件夹并在此文件夹里新建 html 页面命名为 index.html,CSS 文件命名为index.css。这里有个诀窍就是可以导入模板方式来建 CSS 与 html 初始页面,然后将 CSS 文件引用到 html,再在 CSS 模板的基础上再写再添加 CSS。

以下是 index.html 的 html 代码:
以下为引用的内容:

实例

<div id="header">我是头部(上)</div> 

<div id="centers"> 

    <div class="c_left">我是中的左</div> 

    <div class="c_right">我是中的右</div> 

    <div class="clear"> </div> 

</div> 

<div id="footer">我是底部(下)</div> 


尝试一下 »

index.css 的CSS代码如下:
以下为引用的内容:

body,div,address,blockquote,iframe,ul,ol,dl,dt,dd,li,dl,h1,h2,h3,h4,h5,h6,p,pre,table,  

caption,th,td,form,legend,fieldset,input,button,select,textarea{margin:0;padding:0;  

font-weight:normal;font-style:normal;font-size:100%;font-family:inherit;}  

ol,ul,li{list-style:none;}  

img{border:0;}  

body{color:#000;background:#FFF;text-align:center;font:12px/1.5Arial,Helvetica,sans-serif;}  

.clearfix:after{clear:both;content:".";display:block;height:0pt;visibility:hidden;overflow:hidden;}  

.clear{clear:both;height:1px;margin-top:-1px;width:100%;}  

.dis{display:block;}  

.undis{display:none;}  

/*此上面代码是初始CSS模板,下面是新写CSS布局框架代码*/  

#header,#centers,#footer{width:100%;margin:0auto;  

clear:both;font-size:18px;line-height:68px;font-weight:bold;}  

#header{height:68px;border:1px solid #CCCCCC;}  

#centers{padding:8px0;}  

#footer{border-top:1px solid #CCCCCC;background:#F2F2F2;}  

#centers.c_left{float:left;width:230px;border:1px solid #00CC66;  

background:#F7F7F7;margin-right:5px;}  

#centers.c_right{float:right;width:500px;border:1px solid #00CC66;background:#F7F7F7}  

你可以考出此两段代码新建个试试。

按以下步骤来建设一个网站的页面:

1、顶部部分,其中包括了LOGO、MENU和一幅Banner图片;

2、页面中间部分,那就是我们的主体了,要求打开首页快速,所以我们在网站发布的信息设计为三列。

3、底部,包括一些版权信息。

根据以上设想,我们定义如下 div 的结构

DIV结构如下:
  
│body {} /*这是一个HTML元素*/
  
└#Container {} /*页面层容器*/
     
├#Header {} /*页面头部*/
     
├#MianBody {} /*页面主体*/
     
│ ├#mainbody-left {} /*主体页面左边*/
     
│ └#mainbody-center {} /*主体页面中间*/
│ └#MainBody -right{} /*主体页面右边*/
 
└#footer {} /*页面底部*/


用 DIV+CSS 做一个导航栏是非常容易的,而且我们可以通过
 CSS 来对导航栏的样式方便的作出调整。用div设置导航栏一般就用<ul>和<li>标签。

4、高度显示效果不同
一般情况下只需要使用 height: 100px; 即可,当显示效果不同时,则可以 _height: 100px; 来对 IE6 的高度进行设置。

5、嵌套效果不同.
有些情况下如果 div 中嵌套的图片大于外层 div 的高度,则 IE6 中对高度的设置始终无效,这时要注意对该css添加 overflow 属性,overloaw:hidden,则可隐藏超出边界的部分。

DIV+CSS网页布局常用的一些基础知识整理


一.文件命名规范

全局样式:global.css;
框架布局:layout.css;
字体样式:font.css;
链接样式:link.css;
打印样式:print.css;

二.常用类/ID命名规范

页 眉:header
内 容:content
容 器:container
页 脚:footer
版 权:copyright 
导 航:menu
主导航:mainMenu
子导航:subMenu
标 志:logo
标 语:banner
标 题:title
侧边栏:sidebar
图 标:Icon
注 释:note
搜 索:search
按 钮:btn
登 录:login
链 接:link
信息框:manage
……

常用类的命名应尽量以常见英文单词为准,做到通俗易懂,并在适当的地方加以注释。对于二级类/ID命名,则采用组合书写的模式,后一个单词的首字母应大写:诸如“搜索框”则应命名为“searchInput”、“搜索图标”命名这“searchIcon”、“搜索按钮”命名为“searchBtn“等等。


CSS书写规范

CSS书写规范及方法


一. 常规书写规范及方法

1. 选择 DOCTYPE:

XHTML 1.0 提供了三种DTD声明可供选择:

过渡的(Transitional):要求非常宽松的 DTD,它允许你继续使用 HTML4.01 的标识(但是要符合 xhtml 的写法)。完整代码如下:

XML/HTML代码

严格的(Strict):要求严格的 DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:


XML/HTML 代码

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>  

框架的(Frameset):专门针对框架页面设计使用的 DTD,如果你的页面中包含有框架,需要采用这种 DTD。完整代码如下:


XML/HTML代码

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“> 

理想情况当然是严格的 DTD,但对于我们大多数刚接触 web 标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种 DTD 还允许我们使用表现层的标识、元素和属性,也比较容易通过 W3C 的代码校验。


2. 指定语言及字符集:

为文档指定语言: XML/HTML代码

<html xmlns=”http://www.w3.org/1999/xhtml” lang=”en”>  

为了被浏览器正确解释和通过W3C代码校验,所有的XHTML文档都必须声明它们所使用的编码语言;

如常用的语言定义:


XML/HTML代码

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />  

标准的XML文档语言定义:


XML/HTML代码

<?xml version=”1.0″ encoding=” utf-8″?>  

针对老版本的浏览器的语言定义:


XML/HTML代码

<meta http-equiv=”Content-Language” content=” utf-8″ />  

为提高字符集,建议采用“utf-8”。


3. 调用样式表:

外部样式表调用:

页面内嵌法:就是将样式表直接写在页面代码的 head 区。 如:


XML/HTML代码

<style type=”text/css”><!– body { background : white ; color : black ; } –> </style>  

外部调用法:将样式表写在一个独立的 .css 文件中,然后在页面 head 区用类似以下代码调用。


XML/HTML代码

<link rel=”stylesheet” rev=”stylesheet” href=”css/style.css” type=”text/css” media=”all” />  

在符合 web 标准的设计中,推荐使用外部调用法,可以不修改页面只修改.css文件而改变页面的样式。如果所有页面都调用同一个样式表文件,那么改一个样式表文件,可以改变所有文件的样式。


4、选用恰当的元素:

根据文档的结构来选择 HTML 元素,而不是根据HTML元素的样式来选择。例如,使用P元素来包含文字段落,而不是为了换行。如果在创建文档时找不到适当的元素,则可以考虑使用通用的 div 或者是 span;

避免过渡使用 div 和 span。少量、适当的使用 div 和 span 元素可以使文档的结构更加清晰合理并且易于使用样式;

尽可能少地使用标签和结构嵌套,这样不但可以使文档结构清晰,同时也可以保持文件的小巧,在提高用户下载速度的同时,也易于浏览器对文档的解释及呈视;


5、派生选择器:

可以使用派生选择器给一个元素里的子元素定义样式,在简化命名的同时也使结构更加的清晰化,如:


XML/HTML代码

.mainMenu ul li {background:url(images/bg.gif;)}  


6、辅助图片用背影图处理:

这里的”辅助图片”是指那些不是作为页面要表达的内容的一部分,而仅仅用于修饰、间隔、提醒的图片。将其做背影图处理,可以在不改动页面的情况下通过CSS样式来进行改动,如:


XML/HTML代码

#logo {background:url(images/logo.jpg) #FEFEFE no-repeat right bottom;}  



7、结构与样式分离:

在页面里只写入文档的结构,而将样式写于css文件中,通过外部调用CSS样式表来实现结构与样式的分离。



8、文档的结构化书写:

页面CSS文档都应采用结构化的书写方式,逻辑清晰易于阅读。如:


XML/HTML代码

实例

#mainMenu {   

width:100%;   

height:30px;   

background:url(images/mainMenu_bg.jpg) repeat-x;   }   

#mainMenu ul li {   

float:left;   

line-height:30px;   

margin-right:1px;   

cursor:pointer;   } 


尝试一下 »


9、鼠标手势:

在XHTML标准中,hand只被IE识别,当需要将鼠标手势转换为“手形”时,则将“hand”换为“pointer”,即“cursor:pointer;”


二.注释书写规范

1、行间注释:

直接写于属性值后面,如:


XML/HTML代码

.search{   

border:1px solid #fff;/*定义搜索输入框边框*/   

background:url(../images/icon.gif) no-report #333;/*定义搜索框的背景*/   

}  



2、整段注释:

分别在开始及结束地方加入注释,如:


XML/HTML代码

/*=====搜索条=====*/   

.search {   

border:1px solid #fff;   

background:url(../images/icon.gif) no-repeat #333;   }   

/*=====搜索条结束=====*/  


css+div样式属性


三.样式属性代码缩写

1、不同类有相同属性及属性值的缩写:

对于两个不同的类,但是其中有部分相同甚至是全部相同的属性及属性值时,应对其加以合并缩写,特别是当有多个不同的类而有相同的属性及属性值时,合并缩写可以减少代码量并易于控制。如:


XML/HTML代码

#mainMenu {   

background:url(../images/bg.gif);   

border:1px solid #333;   

width:100%;   

height:30px;   

overflow:hidden;   

}   

#subMenu {   

background:url(../images/bg.gif);   

border:1px solid #333;   

width:100%;   

height:20px;   

overflow:hidden;   

}  


两个不同类的属性值有重复之处,刚可以缩写为:


XML/HTML代码

#mainMenu,#subMenu {   

background:url(../images/bg.gif);   

border:1px solid #333;   

width:100%;   

overflow:hidden;   

}   

#mainMenu {height:30px;}   

#subMenu {height:20px;}  



2、同一属性的缩写:

同一属性根据它的属性值也可以进行简写,如:


XML/HTML代码

.search {   

background-color:#333;   

background-image:url(../images/icon.gif);   

background-repeat: no-repeat;   

background-position:50% 50%;   

}   

.search {   

background:#333 url(../images/icon.gif) no-repeat 50% 50%;   

}  



3、内外侧边框的缩写:

在CSS中关于内外侧边框的距离是按照上、右、下、左的顺序来排列的,当这四个属性值不同时也可直接缩写,如:


XML/HTML代码

.btn {   

margin-top:10px;   

margin-right:8px;   

margin-bottom:12px;   

margin-left:5px;   

padding-top:10px;   

padding-right:8px;   

padding-bottom:12px;   

padding-left:8px;   

}  

则可缩写为:


XML/HTML代码

.btn {   

Margin:10px 8px 12px 5px;   

Padding:10px 8px 12px 5px;   

}  

而如果当上边与下边、左边与右边的边框属性值相同时,则属性值可以直接缩写为两个,如:


.btn {   

margin-top:10px;   

margin-right:5px;   

margin-bottom:10px;   

margin-left:5px;   

XML/HTML代码

缩写为:


XML/HTML代码

.btn {margin:10px 5px;}  

而当上下左右四个边框的属性值都相同时,则可以直接缩写成一个,如:


XML/HTML代码

.btn {   

margin-top:10px;   

margin-right:10px;   

margin-bottom:10px;   

margin-left:10px;   

}  

缩写为:


XML/HTML代码

.btn{margin:10px;}  



4、颜色值的缩写:

当RGB三个颜色值数值相同时,可缩写颜色值代码。如:


XML/HTML代码

.menu { color:#ff3333;}  

可缩写为:


XML/HTML代码

.menu {color:#f33;}  



四.hack书写规范 

因为不同浏览器对W3C标准的支持不一样,各个浏览器对于页面的解释呈视也不尽相同,比如IE在很多情况下就与FF存在3px的差距,对于这些差异性,就需要利用css 的hack来进行调整,当然在没有必要的情况下,最好不要写hack来进行调整,避免因为hack而导致页面出现问题。

1、 IE6、IE7、Firefox之间的兼容写法:

写法一:


XML/HTML代码

IE都能识别*;标准浏览器(如FF)不能识别*;   

IE6能识别*,但不能识别 !important,   

IE7能识别*,也能识别!important;   

FF不能识别*,但能识别!important;   

根据上述表达,同一类/ID下的CSS  hack可写为:   

.searchInput {   

background-color:#333;/*三者皆可*/   

*background-color:#666 !important; /*仅IE7*/   

*background-color:#999; /*仅IE6及IE6以下*/   

}  

一般三者的书写顺序为:FF、IE7、IE6.



写法二:

IE6可识别“_”,而IE7及FF皆不能识别,所以当只针对IE6与IE7及FF之间的区别时,可这样书写:


XML/HTML代码

.searchInput {   

background-color:#333;/*通用*/   

_background-color:#666;/*仅IE6可识别*/   

}  


写法三:


XML/HTML代码

*+html 与 *html 是IE特有的标签, Firefox 暂不支持。   

.searchInput {background-color:#333;}   

*html .searchInput {background-color:#666;}/*仅IE6*/   

*+html .searchInput {background-color:#555;}/*仅IE7*/  


屏蔽IE浏览器:

select 是选择符,根据情况更换。第二句是 MAC上safari 浏览器独有的。


XML/HTML代码

*:lang(zh) select {font:12px  !important;} /*FF的专用*/   

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


IE6可识别:

这里主要是通过CSS注释分开一个属性与值,注释在冒号前。


XML/HTML代码

select { display /*IE6不识别*/:none;}


IE的if条件hack写法:

所有的IE可识别:


XML/HTML代码

<!–[if IE]> Only IE <![end if]–>  

只有IE5.0可以识别:   

<!–[if IE 5.0]> Only IE 5.0 <![end if]–>  

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

<!–[if gt IE 5.0]> Only IE 5.0+ <![end if]–>  

仅IE6可识别:   

<!–[if lt IE 6]> Only IE 6- <![end if]–>  

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

<!–[if gte IE 6]> Only IE 6/+ <![end if]–>  

仅IE7可识别:   

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


2、清除浮动:

在 Firefox 中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除浮动的 HACK 来对父级做一次定义,那么就可以解决这个问题。


XML/HTML 代码

select:after {   

content:”.”;   

display:block;   

height:0;   

clear:both;   

visibility:hidden;   

}


很多初学的朋友学完HTML后开始学习CSS,在学习中常常遇到 div+css,但是不知道什么意思。网上很多资料说div就是取代〈table〉的,并且搜索引擎喜欢 div,更容易被搜索引擎收录,反正很多。但到底 div+css(或者div)是什么意思?为什么用它?为什么不用〈table〉呢?这样,我们先科普一下 css 是什么,然后再一起了解下 div+css 是什么。 css 是 Cascading Style Sheets (层叠样式表)的简称,css 语言是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语言)。


div+css

在学习 css 之前你应该掌握哪些基础知识

1.什么是网页,什么是超文本语言(html)。

2.会使用 Dreamweaver 等常用的网页编辑器。

Dreamweaver 是现今最好的网站编辑工具之一,而 Dreamweaver8 增加的对 css 的支持更是你容易得来使用 css,用它来给制作网页的 css 样式表会更简单、更方便。

CSS 是什么

CSS 就是 Cascading Style Sheets,中文翻译为“层叠样式表”,简称样式表,它是一种制作网页的新技术。

网页设计最初是用HTML标记来定义页面文档及格式,例如标题<h1>、段落<p>、表格<table>、链接<a>等,但这些标记不能满足更多的文档样式需求,为了解决这个问题,在1997年W3C(The World Wide Web Consortium)颁布 HTML4 标准的同时也公布了有关样式表的第一个标准 CSS1, 自CSS1的版本之后,又在1998年5月发布了 CSS2 版本,样式表得到了更多的充实。W3C 把 DHTML(Dynamic HTML)分为三个部分来实现:脚本语言(包括JavaScript、Vbscript等)、支持动态效果的浏览器(包括 Internet Explorer、Netscape Navigator等)和CSS样式表。

怎样使用CSS

css 层叠样式,层叠指的是上级标签的样式会自动继承到其所有下级标签,如针对<body>设置的标签选择器所设的字体样式会自动应用到<body>下的<p>中,除非<p>重写了相关样式将其覆盖。

css 语义化的命名是指用易于理解的名称对 html 标签附加的 class 或 id 命名,如对于页面上方的<div>,可将其 id 设为 header;页面下方的<div>设为 footer,可以增强 CSS 的可维护性。

基本上层叠的意思就是“继承”、“权重”、“覆盖”,通过良好的层级命名更好的实现效果,更少的代码,更多的功能


 比如下面的一个代码我们这样写:

<div class="box">

<div class="h2">这是区块标题</div>

<div class="bd">这是区块内容</div>

<div> 

使用 CSS 样式,通常有3种方法:元素中直接添加样式、从页面头部<style>元素中调用、采用链接的形式调用。其中元素中直接添加样式优先级最高、从页面头部调用次之、采用链接外部CSS样式最低。


你可以在你的 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>

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


w3c

css语法基础

CSS 的定义是由三个部分构成:选择符(selector),属性(properties)和属性的取值(value)。

基本格式如下:

selector {property: value;}

(选择符 {属性:值})

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

body {color: black;}

选择符 body 是指页面主体部分,color 是控制文字颜色的属性,black是颜色的值,此例的效果是使页面中的文字为黑色。

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

p {font-family: "sans serif";}

(定义段落字体为sans serif)

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

p {text-align: center; color: red;}

(段落居中排列;并且段落中的文字为红色)

为了使你定义的样式表方便阅读,你可以采用分行的书写格式:

p

{ text-align: center;

color: black;

font-family: arial; }

(段落排列居中,段落中文字为黑色,字体是arial)

2. 选择符组

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

h1, h2, h3, h4, h5, h6 { color: green; }

(这个组里包括所有的标题元素,每个标题元素的文字都为绿色)

p, table{ font-size: 9px; }

(段落和表格里的文字尺寸为9号字)

效果完全等效于:

p { font-size: 9pt; }

table { font-size: 9pt; }


3. 类选择符

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

p.right {text-align: right;}

p.center {text-align: center;}

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

<p class="right"> 这个段落向右对齐的

</p> 

<p class="center">

这个段落是居中排列的

</p>

注意:类的名称可以是任意英文单词或以英文开头与数字的组合,一般以其功能和效果简要命名。

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

.center {text-align: center;}

(定义.center的类选择符为文字居中排列)

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

<h1 class="center">

这个标题是居中排列的

</h1>

<p class="center">

这个段落也是居中排列的

</p>

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

4. ID选择符

在HTML页面中ID参数指定了某个单一元素,ID选择符是用来对这个单一元素定义单独的样式。ID选择符的应用和类选择符类似,只要把CLASS换成ID即可。将上例中类用ID替代:

<p id="intro">

这个段落向右对齐

</p>

定义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; }


css

5. 包含选择符

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

table a

{font-size: 12px;}

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

6. 样式表的层叠性

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

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

……

<div>

<p>

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

</p>

</div>

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

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

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

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

p {color: blue;}

……

<div>

<p>

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

</p>

</div>

我们可以看到段落里的文字大小为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 */

}


div+css是什么

一句话解释:div 是框架,css 是样式,用来装饰框架。JS 让它们动起来。再说详细点,div就是给整个网页布局,css 就是负责控制div的样式,想让 div 在哪里怎么显示,都可以通过 css 来实现,简单的说网页布局就像盖房子,div 负责把这栋房子盖起来,而 css 负责告诉他怎么盖!
table

div是什么

1、DIV是html其中一个常用标签,如span、table、h1等之类标签

2、在HTML中DIV标签我们用的最多,具有代表性

3、div配合css类,布局出网页

div语法

<div>内容</div>
<div class="divcss5">内容</div>
<div id="divcss5">内容</div>

为什么用div+css取代〈table〉

很久很久以前,web 工程师通过 table 进行页面布局(现在Google 的 picasa 等应用还能找到table布局应用的例子),现在页面布局大都推荐 div+css 方式。 

在WEB前端开发中,HTML,CSS,JS 这三家三驾马车分别代表着结构,展示,和交互。在 web1.0的时代,页面的逻辑并不是特别复杂,对用户体验的要求也不是很高,table被大量开发者用来做布局元素,横跨结构和展示两个部分,是很“重”的。

但是在如今 web 前端逻辑越来越复杂,用户体验要求越来越高的情况下,对这三者的解耦是必须的。此时再用 table 拿来做布局就不太合适了,因为 table 标签的语言根本不是用来做布局的,而是用来传递数据的。而 div+css 是符合解耦这一思想的,div 用来控制布局,css 用来控制样式。好处从小了说是整个页面的代码组织结构更合理,耦合度更低,从大了说是更利于前端开发的深度分工和复杂合作。

所谓的 div+css 是指通过 css 控制 div 的布局。其实这儿 div 可以理解为统称,实际应用的不仅是div,还有p,span,img,table 等任意节点的定位都可以通过 css 来控制。 

简要对比一下: 

1、div+css 相对于 table 更为灵活,用 table 布局,代码臃肿。 

2、语义性问题。从语义上来说,table 应该只是表格数据的容器,不应该是布局的工具。 

3、样式渲染问题。table 布局要等内容全部加载完毕后才渲染样式,如果用户网速不好,这样用户体验会很差。

DIV+CSS布局该怎么学?基本流程及实例介绍


css 是一个网页的外衣,网页好不好看取决于 css 样式,而布局是 css 中比较重要的部分,当产品把一个需求设计交到手中,我首先要做的是一点点的解剖这些需求,首先想到的是 html 的结构,根据要兼容的浏览器,数据的拼接,代码的可维护性,扩展性来选择 css 的布局方法。有时候,一个好的布局可以减少很多代码,用 css 处理网页布局的时候有很多技巧性的东西,下面就给大家介绍一些 css 布局技巧实例及 css 布局模型。


css的基础布局方法

1.块区域介绍

<body>

  <div>

   <p>这是一个段落.</p>

  </div>

 </body>

p 元素的包含块是 div 元素,因为作为块级元素,表单元格或行内元素,这是最近的祖先元素,类似的,div 的包含块是 body. 因此,p 的布局依赖于 div 的布局,而 div 的布局则依赖于 body 的布局。

块级元素会自动重启一行


2. 块级元素
正常流布局

块级元素

一般的,一个元素的width被定义为从左内边界右内边界height则是从上内边界下内边界的距离。

不同的宽度,高度,内边距和外边距相结合,就可以确定文档的布局。


水平布局

简单规则,正常流中块级元素框的水平部分 总和 就等于父元素的 width . 假设一个div中有两个段落,这两个段落的外边距设置为 1 em,段落内容宽度 width 在加上其左,右内边距,边框或外边距加在一起正好是 div 内容的 width.


7大属性:margin-left, border-left, padding-left, width, padding-right, border-right, margin-right

这 7 个属性的值加在一起必须是父块元素的 width 值. ( 其中 margin-left, margin-right, width 可以设置成auto ) 设置成 auto, 会按照以上规则自动匹配到父块的宽度,例如 7个属性的和必须为 400像素,没有设置内边距或边距 ( 默认为 0) 而右外边距和width设置为100px, 左外边距为  auto,那么左外边距的宽度将是200px. 可以用 auto 弥补实际值与所需综合的差距。注:如果3个可以设置 auto,都没设置成 auto,而且宽度加在一起还不够父块区域的宽度的话,会默认将 margin-right 设置成 auto 来满足总和与父块相等的要求。

如果两个外边距设置成 auto,那么,它们会是等长的,因此将元素在其父亲元素中居中。

如果这3个属性都设置成auto, 那么, 外边距会是0,而让 width  尽可能的长。

可以使用百分数,但是边框的宽度不能是百分数。

垂直布局
7大属性:margin-top, border-top, padding-top, height, padding-bottom, border-bottom, margin-bottom , 同样,这7个属性的值的总和是父元素 height 值。

其中 , margin-top, height, margin-bottom 也可以设置成 auto. ( 如果 margin-top, margin-bottom设置成 auto, 那么它们就会自动设置成 0 ).

3.浮动与定位( 确认基本布局 )

(1) 浮动
一个元素浮动时,其他内容会“环绕”该元素,浮动元素要设置一个width.

float ( left , right , none ) , none 的情况一般用在文档内部,用来覆盖式样表,一般很少使用 none.

浮动元素会自动生成一个块级框。

浮动元素规则
浮动元素不能超过包含它的块的左右边界。(1,2 左右边界受限 )

浮动元素规则

浮动元素之前如果出现浮动元素,则必须在该浮动元素之后(不能覆盖 ) ( 2 左边受限 )

左边受限

如果浮动元素加一起太宽,会自动向下。。(宽度受限 )

宽度受限

垂直方向要顶头不能超过块区域,同样不能超过在它上面的浮动元素。( 上边界受限 )

上边界受限

第一个浮动元素之后,第二个在它的下边,因为他们,第3个在它的右边。( 2 上边受限 )


浮动元素的顶端,不能比之前所有浮动元素或块级别元素的顶端更高 ( 顶端受限 )


顶端受限

浮动元素之间左右的边界不能覆盖,如下1,2,3, 之间不能覆盖 ( 元素之间受限 )

元素之间受限

浮动元素会尽可能高的放置

浮动元素

浮动元素会尽可能向左向右

向左向右

clear , 可以防止指定了 clear 元素的两边存在浮动元素

(2) 定位
利用定位,可以准确的定义元素框相对于其正常位置应该出现在哪里,或者相对于父元素,另一个元素甚至浏览器窗口。

position : static | relative | absolute | fixed

static : 元素框正常生成

relative : 元素框偏移某个距离

absolute : 元素框从文档流完全删除,并相对于其包含块定。包含块可能是文档中的另一个元素或初始包含块。

fixed : 类似 absolute,不过其包含块是视窗本身。

包含块:
根元素( html或body ) , 初始包含块是一个视窗大小的矩形.

非根元素 :

- 非根元素, 如果其 positionrelative 或  static, 则包含块由最近的块级框,表单元格或行内块构成。

- 非根元素, 如果其 positionabsolute , 包含块为最近的 position值不是 static的祖先元素

这里有一点很重要,元素可以定位到其包含块的外面。

css布局技巧

1、多元素水平居中


效果: 

多元素水平居中

上图显示效果为多元素水平居中,即无论元素(小黑框)基数为多少,它们都能作为一个整体,水平居中。

在网站布局中,很多时候,子元素中使用行内元素如span或块元素li标签且标签个数不定,而我们又想让这一块不管个数有多少个(子元素的总体宽度不定),始终都能居中显示。这就需要设置子元素display:inline-block。同时,根据display:inline-block的属性,子元素本身具备inline的特性,因此父元素需要设置text-align:center,来实现子元素作为一个整体在父元素中水平居中。

main{

  text-align:center;

}

div{

  display:inline-block;

  *display:inline;/*hack IE*/

  *zoom:1;/*hack IE*/

}

使用display:inline-block属性,可以使行内元素或块元素能够不加float属性就可以定义自身的宽、高,同时又能使该元素在父元素居中显示。

在内联元素上定义display:inline-block属性,发现IE6、IE7中的显示效果同其它浏览器一致,但事实是ie7及更低版本的ie浏览器不支持display:inline-block这个属性。 

在IE下,display: inline-block只是触发了元素的layout。比如将display: inline-block设置到div上,只能保证这个div拥有块元素的特征(可以设置宽度,高度等),但还是会产生换行。接下来要设置display: inline,使其不产生换行。将display:inline-block;display:inline;写在同一个样式上,inline-block属性是不会触发元素的layout的,因此我们还要额外加上 zoom:1来触发layout

除了以上所提到的有效方法之外,还有另外一种方法:

先使用 display:inline-block 属性触发块元素,然后再定义 display:inline,让块元素呈递为内联对象(两个display 要先后放在两个 CSS 样式声明中才有效果,这是 IE 的一个经典 bug ,如果先定义了 display:inline-block,然后再将 display 设回 inlineblocklayout 不会消失)。

div {display:inline-block;...}div {*display:inline;}

但是要注意的是,display:inline-block元素间会产生多余空白。解决方法:父元素定义font-size:0 去掉行内块元素水平方向空白;子元素定义vertical-align 属性去掉行内块元素垂直方向空白。


提示:如果您希望设置元素的水平垂直定位,那么您可以参考本站的“CSS如何使元素水平垂直定位”部分的内容!

2、栏栅化布局

效果:

栏栅化布局

display: flex;

flex-direction: column;//上面两行等同于flex-flow:colomn

flex-wrap: wrap;// 显示 wrap一行显示不完的时候换行

height: 440px;

width: 660px;

一个Flexbox布局是由一个伸缩容器(flex containers)和在这个容器里的伸缩项目(flex items)组成。

伸缩方向与换行(flex-flow)

伸缩容器有一个CSS属性“flex-flow”用来决定伸缩项目的布局方式。

如果伸缩容器设置了“flex-flow”值为“row”,伸缩项目排列由左向右排列。

flex-flow

如果flex-flow值设置为column,伸缩项目排列由上至下排列。

column

制作一个20%、60%、20%网格布局

.main-content {

      width: 60%;

}

.main-nav,.main-sidebar {

     -webkit-box-flex: 1;      /* OLD - iOS 6-, Safari 3.1-6 */

      -moz-box-flex: 1;         /* OLD - Firefox 19- */

      width: 20%;               /* For old syntax, otherwise collapses. */

      -webkit-flex: 1;          /* Chrome */

      -ms-flex: 1;              /* IE 10 */

      flex: 1;                  /* NEW, Spec - Opera 12.1, Firefox 20+ */ }


3、未知高度多行文本垂直居中


方法一,使用display:inline-block+伪元素:http://codepen.io/floralam/pen/WbBrwV?editors=110

未知高度多行文本垂直居中

.container{

   position: fixed;

    left: 0;

    top:0;

    height: 100%;

    width: 100%;

    text-align: center;

}

.mask:after{

    content: " ";

    display: inline-block;

    vertical-align: middle;

    height: 100%

}

.dialog{

    display: inline-block;

    border: 3px solid lightblue;

}

box 容器通过after或者before 生成一个高度 100% 的「备胎」,他的高度和容器的高度是一致的,相对于「备胎」垂直居中,在视觉上表现出来也就是相对于容器垂直居中了。


 方法二(感谢超级课程表胡晋哥哥的提示),使用display:table-cell:


http://codepen.io/floralam/pen/yNeMPg

通过display转化成为表格的形式,再采用垂直居中的方法得到需要的结果。

display:table    此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。    

display:table-cell 此元素会作为一个表格单元格显示(类似<td> <th>


方法三(感谢超级课程表胡晋哥哥的提示),flexbox布局:


http://codepen.io/floralam/pen/yNeMvM

flexbox属性:

伸缩容器:一个设有display:flexdisplay:inline-flex的元素
伸缩项目:伸缩容器的子元素
主轴、主轴方向:用户代理沿着一个伸缩容器的主轴配置伸缩项目,主轴是主轴方向的延伸。
主轴起点、主轴终点:伸缩项目的配置从容器的主轴起点边开始,往主轴终点边结束。
主轴长度、主轴长度属性:伸缩项目的在主轴方向的宽度或高度就是项目的主轴长度,伸缩项目的主轴长度属性是widthheight属性,由哪一个对着主轴方向决定。
侧轴、侧轴方向:与主轴垂直的轴称作侧轴,是侧轴方向的延伸。
侧轴起点、侧轴终点:填满项目的伸缩行的配置从容器的侧轴起点边开始,往侧轴终点边结束。
侧轴长度、侧轴长度属性:伸缩项目的在侧轴方向的宽度或高度就是项目的侧轴长度,伸缩项目的侧轴长度属性是「width」或「height」属性,由哪一个对着侧轴方向决定。


另外,对于单行文本,设置line-height=height代码更加简洁:


http://codepen.io/floralam/pen/eNJvyE

父元素设置宽度高度,然后设置属性

text-align:center; /* 水平居中 */
line-height: 300px; /* line-height = height */


提示:如果你想要深入了解flexbox布局,请参考“CSS3 Flexbox属性与弹性盒模型”部分的内容。

4、多栏自适应布局


对于移动设备浏览器:http://codepen.io/floralam/pen/NPVwgz?editors=110

.container{

  display:-webkit-box;

}

.left{

  -webkit-box-flex:1;

}

.right{

  -webkit-box-flex:1;

}

实现左右两侧元素,右侧元素的文字不会溢出到左侧位置。
多栏自适应布局

1)让左边的图片左浮动或者绝对定位,

http://codepen.io/floralam/pen/wBbPPj

.right{

    margin-left: 150px;

}


2)让左边的图片左浮动或者绝对定位,

http://codepen.io/floralam/pen/gbJogQ

.right{

  overflow:hidden;/*让右侧文字和左侧图片自动分栏*/

}


3)左侧图片设置为左浮动,

http://codepen.io/floralam/pen/bNyaaX?editors=110

.right{

  display: table-cell;/*让右侧文字和左侧图片自动分栏*/

}


两栏或多栏自适应布局的通用类语句是(block水平标签,需配合浮动):

http://codepen.io/floralam/pen/vEwpjV

.cell{

  padding-right:10px;

  display: table-cell;

  *display: inline-block;

  *width: auto;

}


浮动

5、强制不换行

white-space:nowrap;

自动换行

word-wrap: break-word; //性允许长单词或 URL 地址换行到下一行

word-break: normal; //让浏览器实现在任意位置的换行

word-wrap是控制换行的。break-word 是控制是否断词的。


强制英文单词断行

div{

  word-break:break-all;

}

 

6、li超过一定长度,以省略号显示

http://codepen.io/floralam/pen/zxQjrK

nowrap li{

   white-space:nowrap;

   width:100px;

   overflow:hidden;

   text-overflow: ellipsis;

}


7、左侧导航

左侧导航

.nav{

  position:relative;

  float:left;width:190px;

  margin-right:-190px;

  background:lightblue;

}

.container{

  float:right;

  width:100%;

  background:pink;

}

.content{

  margin-left:200px;

}


8、 修复侧边栏

在外容器的添加导航和主内容,当导航和主内容的宽度加上内外边距的数值大于外容器的宽度减去内边距的值,会导致导航和主内容(其中一个,html代码排后面的元素)被挤下。

修复侧边栏

http://codepen.io/floralam/pen/XJLRYq?editors=110


解决方案:

1) Section元素上使用box-sizing:border-box;模拟IE6中,使得内元素的宽度为width的值,而非width加上paddingmargin的值。


2)width:-moz-calc(75% -1rem * 2);width:-webkit-calc(75% - 1rem * 2); width: calc(75% - 1rem * 2); width属性中减去padding


3)http://codepen.io/floralam/pen/yydPOE

在元素内部增加一个额外的容器,并将padding放在这个新增的内部容器中,这是一种修复方法,而且得到众多浏览器支持。


9、css描绘三角形

http://codepen.io/floralam/pen/azgGmZ

很多关于使用css3来描绘特定图像,使用代码而非图片实现(多座小山包,返回顶部)的题目,都离不开描绘三角形。


10、清除浮动的技巧

清除浮动
在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(floatleftright)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

1)添加最后一个元素<div style ="clear:both"></div>


2) 父元素设置overflow: hidden;


3) 使用CSS的:after伪元素

通过CSS伪元素在容器的内部元素最后添加了一个看不见的空格"020"或点".",并且赋予clear属性来清除浮动。需要注意的是为了IE6和IE7浏览器,要给clearfix这个class添加一条zoom:1;触发haslayout


图片的居中显示 css 有很多方法,但在很多情况下有的方法无效,这是件很头疼的事情,比如

一般设置图片属性

text-align:center

水平居中,但这个方法经常无效,

很多前端工程师都有研究过或者说是搜索过 

CSS

 图片居中方法吧。

但其实 CSS 图片居中有多种不同的情况,也有多种不同的解决方法,具体方法如下所示:

图片居中又分为水平居中和垂直居中

提示:在你开始阅读以下内容之前,你可以先了解CSS图片的基础内容。


一、水平居中:


1、单独文字垂直居中我们只需要设置 CSS 样式line-height属性即可。


2、文字与图片同排,在设置div高度同时再对此 CSS 样式的图片“img”样式设置​vertical-align:middle​垂直居中属性,如:​ img{vertical-align:middle;}​ 。


3 不确定宽度的块级元素设置水平居中的方法


(1)是使用​ table​ 作为容器的方法来实现。当然不大推荐使用这种方法,因为添加了无意义的标签。这里就稍微介绍一下吧。​Table​ 标签本身并不是块级元素,当我们不设置​table​的宽度的话,他里面的宽度是由他内部元素的宽度撑起来的。但即使我们没有设置​table​的宽度,直接设置​table​的外边距​margin:0 auto;​就可以实现水平居中了!这样我们就可以通过设置​table​水平居中,间接使里面的内容居中。

(2)相对于用​table​的方法的好处是不用增加无语义标签,简化标签嵌套深度。这个思路是这样的,通过改变块级元素的​display​属性值为​inline​类型,然后设置​text-align:center​来实现居中。这种方法也有一定不妥之处就是把块级元素改为行内元素后,行内元素比块元素少了一些功能。比如说设定长宽值等,在项目运用中可能会有一些限制,大家可以自行选择。

(3)通过给父元素设置浮动​float​,再设置父元素的​position​属性为​relative​和​left:50%;​子元素设置​position:relative​和​left:-50%​来实现水平居中。这个好处是可以保留块级元素仍然是以​display:block​的形式显示,不会添加无意义的标签,不添加嵌套深度。确点是设置了​position:relative;​带来了一些副作用。下面是第三种方法的实例代码,放到​body​标签里面就可以了。


二、垂直居中:


对这个CSS居中问题,我们可以使用设置背景图片的方法。举例:


body {BACKGROUND: url(”图片文件”) #FFF no-repeat center;}


关键就在于这个​center​属性,它表示让该背景图片在容器中居中。你也可以把​center​换成​top left​或者直接写上数字来调整它的位置。


方法一: 

实例

 div {

   width:500px;

   height:500px;

   border:1px solid #666;

   overflow:hidden;

   position:relative;

   display:table-cell;

   text-align:center;

   vertical-align:middle;}


尝试一下 »

方法二:

实例

div p {

 position:static;

 +position:absolute;

 top:50%

    }

img {

  position:static;

  +position:relative;

  top:-50%;left:-50%;

  vertical-align:middle

}


尝试一下 »

方法三:

实例

img {

position:static;

+position:relative;

top:-50%;left:-50%;

vertical-align:middle; }


尝试一下 »

方法四:

实例

* {margin:0;padding:0;}

div {

  width:500px;border:1px solid #666;

  height:500px;

  background:url("/statics/images/w3c/intro.png") center no-repeat;}


尝试一下 »


三、css图片居中用text-align:center无效怎么回事?

实例

div{

    border:1px solid red;

    margin:20px;

    text-align:center;

}


尝试一下 »


四、如何让图片在DIV中水平和垂直两个方向都居中?

方法一:

思路:利用​text-align​属性将图片水平居中,然后设置​padding-top​的值使其垂直居中。


结构如下:

<div>

<img src="images/tt.gif" width="150" height="100" />

</div>


CSS样式如下:

div {width:300px; height:150px; background-color:#CCC; border:#000 1px solid; text-align:center; padding-top:50px;}


运行结果如下:


图片居中


释义:

图片的尺寸为150x100px,DIV的大小为300x200px;


background-color:#CCC; border:#000 1px solid;为DIV加个边框和背景色,便于观察效果。


text-align:center​,实现图片的水平居中;​padding-top:50px​,50px这个数值是经过计算得到的,​padding-top​的值具体算法如下:(DIV的高度 – 图片的高度)/2,但这里要注意,根据盒模型原理,我们还要将DIV原来的高度200减去​padding-top​的值,这样显示的才是正确的,否则DIV会变高。


方法二:
思路:只用​padding​属性,通过计算求得居中

结构代码同上;

CSS样式如下:

div {width:225px; height:150px; background-color:#eee; border:#000 1px solid; padding-top:50px; padding-left:75px;}

备注:这里DIV的宽高计算都遵循盒模型原理,计算方法同上。


方法三:
思路:利用图片的​margin​属性将图片水平居中,利用DIV的​padding​属性将图片垂直居中。

结构代码同上;

CSS代码如下:

div {width:300px; height:150px; background-color:#eee; padding-top:50px; border:#000 1px solid;}

img {display:block; margin:0 auto;}

备注:

Img​是内联元素,要设置其​margin​属性使其居中,就要将其转换为块元素​display:block;​然后利用​margin:0 auto;​实现图片的水平居中;(有的设计师为图片再加个 div 标签,然后通过 div 标签的​margin​实现居中,也可以,不过,在结构中就又多了对 div,相对麻烦点)至于垂直居中的方法和前面的都一样,就不再重述。

以上方法都是有前提的,就是必须知道 DIV 与图片的尺寸,否则无法完成垂直居中的效果。


用一行css居中并裁剪图片的方法

设置图片的裁剪尺寸非常简单,你只需在 CSS 里使用这行代码:

img {

     object-fit: cover;

}

就是这样。不需要语义、包装 div 或者其他没意义的代码。

这种技术能很好地把大小不合适的头像图片裁剪为正方形或者圆形的图片。以下面那只熊的宽图片来举例。一旦把 ​object-fit:cover ​技术应用在这种图片上,并且设置好宽和高,图片自己就会进行裁剪和居中。


图片居中裁剪

object-fit:cover​的裁剪方式和​background-size:cover​的完全相同,不过它是用来为 imgs、videos 和其他的媒体标签设置样式的,而不是给背景图片设置样式。
相当多的最新浏览器都支持 object-fit 技术,并且还有 polyfill 项目让你能在更老的浏览器(IE8+)里使用该技术。


如今,淘宝撑起了中国电商的半边天,淘宝店铺多如麻,淘宝竞争越来越激烈,除了大打价格战就是靠精美的店铺装修来吸引浏览者的驻足。淘宝导航CSS代码相信很多店铺经营者都懂得,但是如何运用CSS代码做出精致的淘宝导航却是很多人都不清楚的,导航对于买家来说是指路灯,这样一看就能出导航的重要性了。有时候看到别人家的店铺导航栏好有个性,也想照着做一个,那么应该怎么操作呢?那么下面就给大家整理一些超好用的淘宝css导航代码及使用方法和技巧。


让别人的导航栏CSS代码为你所用的方法

1.首先找到别人店铺的首页,右键单击导航栏空白处,查看源代码。

查看源代码

2.打开以后看到的代码


如果没有找到这个标识说明这是用 sdk 高级模版装修的,所以就没有代码了。

找到这几个标识,这里就是我们要找的 CSS 文件。下面的就是我们要找的 CSS 文件。跟着我们将它用浏览器打开,或者下载个 notepad 程序,双击打开就可以看到相应的代码。


代码


3.打开文件,点击“替换”


替换


4.然后复制下面这段代码 #page#content.tshop-pbsm-shop-nav-ch
  

粘贴进查找内容框里,替换为后面的框不要填写,直接点击"全部替换"按钮。那么,这样的 CSS代码就可以为我们所用了。


粘贴代码

5.最后,我们把 CSS 代码做好后,粘贴到自己的店铺里,却发现分类是没有底色的。解决方法不难,我们只需要设置一下页头背景就可以了。

淘宝导航栏

淘宝 CSS 导航参考代码

以下文字内容可以一同复制使用,不会影响到使用效果

  • /* 导航条背景色*/    .skin-box-bd .menu-list{background: none repeat scroll 0 0 #00ad08;}
  • /*首页/店铺动态背景色*/    .skin-box-bd .menu-list .link{background: none repeat scroll 0 0 #00ad08;}
  • /*首页/店铺动态右边线* /    .skin-box-bd .menu-list .menu{border-right:1px #006205 solid;}
  • /*首页/店铺动态文字颜色*/    .skin-box-bd .menu-list .menu .title{color:#ff0000}
  • /*所有分类背景色*/    .all-cats .link{background: none repeat scroll 0 0 #00ad08;}
  • /*所有分类右边线*/    .all-cats .link{border-right:1px #006205 solid;}
  • /*所有分类文字颜色*/    .skin-box-bd .all-cats .title{color:#ff0000}

  1. 所有分类背景,可以用图片:.skin-box-bd .link{background:url(图片链接);}
  2. 修改整个导航的背景色背景:.skin-box-bd .menu-list{background:#000000;}
  3. 修改最右边留下的一小块:.skin-box-bd{background:#000000;}
  4. 修改成图片的代码如下:.skin-box-bd{background:url(图片链接);}
  5. 字外:.skin-box-bd .menu-list .menu-selected .link{background:#000000;}
  6.  字里:.skin-box-bd .menu-list .menu-selected .link .title{background:#000000;}
  7. 字外+字里=全部!
  8. 1.导航背景色代码(除去“所有分类”)如下:.menu-list .link{background:#000000;}
  9. 导航栏文字(除去“所有分类”)如下:.menu-list .menu .title{color:#颜色代码;font-size:字号px;}
  10. “所有分类”的背景色代码如下:.all-cats .link{background:#000000;}
  11. “所有分类”的文字代码如下:.all-cats .link .title{color:#颜色代码;font-size:字号px;}
  12. 最新代码,解决字体改大后导航右侧消失的情况!代码如下:.all-cats .link .title{font-size:字号px;}.all-cats .link {background:#3BAFFF;margin:0;padding:0px 3px;}
  13. 二级分类文字代码如下:.popup-content .cats-tree .fst-cat .cat-name{font-size:字号px;color:#颜色代码;font-weight:bold/bolder/normal;}
  14. 二级分类背景代码如下:.popup-content{background:#000000;}
  15. 三级分类文字代码(除去“所有宝贝”分类)如下.popup-content .cats-tree .snd-pop-inner{font-size:字号px;color:#颜色代码;font-weight:bold/bolder/normal;}
  16. 三级分类文字代码(包括“所有宝贝”分类字体大小)这样就无法改变字体颜色,我们会继续完善该代码!如下 .popup-content .cats-tree .snd-pop-inner{font-size:字号px;color:#颜色;} 
  17. 三级分类背景代码:.popup-content .cats-tree .snd-pop-inner{background:#000000;}
  18. 一级导航分类(除去“所有宝贝”分类)分隔线颜色代码如下:.menu-list .menu{border-color:#000000;}
  19. 一级导航“所有宝贝”分类分隔线颜色代码如下:.all-cats .link{border-color:#000000;}
  20. 一级导航分类的宽度修改代码如下:.menu-list .menu{background:#颜色;margin:0;padding:0px 增加的宽度px;}
  21. 鼠标滑过一级分类导航文字变换背景色代码如下:.menu-list .menu-hover .link{background:#000000;}
  22. 鼠标滑过一级分类导航文字变换颜色代码如下:.menu-list .menu-hover .link .title{color:#FFFFFF;}
  23. 鼠标滑过二级分类导航文字变换背景色代码如下:.popup-content .cats-tree .cat-hd-hover{background:#000000;}
  24. 鼠标滑过二级分类导航文字变换颜色代码如下:.skin-box-bd .popup-content .cats-tree .cat-hd-hover .cat-name{color:#ff0000;}
  25. 鼠标滑过三级分类导航文字变换背景色代码如下:.popup-content .cats-tree .snd-cat-hd-hover{background:#000000;}
  26. 二级分类上加空间代码如下:.popup-content .cats-tree{margin:0 0 50px 0;}
  27. 修改“所有宝贝”右边小图标代码如下:.all-cats .link .popup-icon{background:url(图片连接);}
  28. 修改二级分类右侧图标代码如下(有三级分类才会显示):.popup-content .cats-tree .fst-cat-icon{background:url(图片连接);}
  29. 在三级分类前加上小块白色代码如下:.popup-content .cats-tree .snd-cat-icon{display:block;height:3px;width:3px;}

全透明导航CSS代码

很多时候在装修的过程中,需要淘宝店铺的导航变成透明的,不想被系统导航的颜色是挡住,这样可以看到自己设置的店铺背景图;这时我们需要用到一个淘宝导航透明代码,网上很多代码都不是很完整(所有分类无法透明)。​font-size:15px;​​font-weight:bold;​这个分别是字体大小和粗体。
  1. .skin-box-bd{background:none;border:none;} 
  2. .menu-list{background:none;} 
  3. .link{background:none;border:none;} 
  4. .menu{background:none;} 
  5. .all-cats{background:none;} 
  6. .skin-box-bd .all-cats .link{border:none;} 
  7. .skin-box-bd .menu-list .menu{border:none;} 
  8. .menu-list .menu .title{color:#000000;font-size:15px;font-weight:bold;} 
  9. .all-cats .link .title{color:#000000;font-size:15px;font-weight:bold;} 
  10. .skin-box-bd .menu-list .menu-selected .link{background:none;} 
  11. .skin-box-bd .menu-list .menu-selected .link .title{background:none;} 

淘宝天猫导航CSS样式代码在线生成工具

http://www.ahatao.com/menucss/

淘宝店铺导航CSS代码使用修改技巧


很多 CSS 初学者在前端开发过程中,经常会用到 CSS 虚线样式,但是不知道 CSS 虚线样式该如何实现,比如一个 CSS 这样写:​border-style:dotted solid double dashed; ​出来的框就是:上边框是点状,右边框是实线,下边框是双线,左边框是虚线,如果一个 CSS 这样写:border-bottom:1px dashed #000000;出来的框就是一条宽度为1像素的黑色下划虚线··· CSS 关于“线”的类型还真是挺多的,其中新手们比较关注的还是“虚线的实现方法”。


css虚线实现方法

定义和用法:
border-style 属性用于设置元素所有边框的样式,或者单独地为各边设置边框样式。只有当这个值不是 ​none​ 时边框才可能出现。

这里边框属性的虚线边框 ​border ​控制虚线。以下配置的 CSS 高度(CSS height)和 CSS 宽度( CSS width)为350像素。

1、四边为虚线边框
border:1px dashed #000;​ 黑色虚线边框

实例:


实例

.hackhome{border:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置边框缩写形式解释 ​hackhome​ 挑选器四边边框为1px的黑色虚线边框

2、左边为虚线:

实例

.hackhome-1{border-left:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了左边一边为黑色虚线边框

3、右边为虚线:

实例

.hackhome-1{border-right:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了右边一边为黑色虚线边框

4、顶部边(上边)为虚线:

实例

.hackhome-1{border-top:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了顶边(上边线)一边为黑色虚线边框

5、底部边(下边)为虚线:

实例

.hackhome-1{border-bottom:1px dashed #000; height:50px;width:350px}


尝试一下 »
这里配置了底边(下边线)一边为黑色虚线边框

6、随意一边不为虚线,其它三边为虚线状况
参与右边边框不为虚线而没有边线,其它三边为黑色虚线边框

实例

.hackhome{ border:1px dashed #000;border-right:0; height:50px;width:350px; }

尝试一下 »
这里先配置了该对象四边为黑色1px 虚线边框,紧接着又配置一边边线为0的配置,这样相当于配置了3边的边框虚线属性,但是这里留意边框属性配置前后顺序

常用css虚线样式

例1
border-style:dotted solid double dashed; 
上边框是点状
右边框是实线
下边框是双线
左边框是虚线

例2
border-style:dotted solid double;
上边框是点状
右边框和左边框是实线
下边框是双线

例3
border-style:dotted solid;
上边框和下边框是点状
右边框和左边框是实线

例4
border-style:dotted;
所有 4 个边框都是点状

怎么用CSS实现链接的虚线下划线效果

修改您的样式表,找下边这段(一般都在开头)

a {

color:#3399FF;

font-weight:Normal; /*字体效果 普通 可以改成bold粗体*/

text-decoration:none; /*下划线效果:无下划线*/

}

a:hover {

color:#4499EE;

text-decoration:none; /*下划线效果:无下划线*/

border-bottom: 1px #0099CC dotted /*加一个只有下边的框 边框为虚线*/

}

a{}控制连接的效果 a:hover{}控制鼠标移上去的效果。


css分割线虚线代码应用实例

实心的线条:

<hr align=left width=490 color=#990099 SIZE=3 noShade>

实心线条
竖直线:

<HR align=center width=1 color=red size=100>

竖直线

虚线:

<hr size=1 style="color: blue;border-style:dotted;width:490">


虚线size

双线:

<hr size=1 style="COLOR:#ff9999;border-style:double;width:490">


双线



很多朋友在网页设计中要自定义滚动条样式的情景,滚动条的样式我们可以通过css来控制的,比如网易邮箱的滚动条样子很好看,就是利用的CSS来设置实现的。但是css控制的滚动条应该如何实现和隐藏呢?滚动条能不能换颜色或者做的更好看一些呢?下面通通告诉你。

在开始本节内容前,你可以复习一下CSS overflow 属性的内容。


1、​overflow-y​ : 设置当对象的内容超过其指定高度时如何管理内容;​overflow-x ​: 设置当对象的内容超过其指定宽度时如何管理内容。

参数:
visible​:扩大面积以显示所有内容

auto​:仅当内容超出限定值时添加滚动条

hidden​:总是隐藏滚动条

scroll​:总是显示滚动条

2、​height​ : 设置滚动条的高度(修改其后数值即可)。

3、滚动条颜色参数设置:

scrollbar-3d-light-color ​设置或检索滚动条亮边框颜色

scrollbar-highlight-color ​设置或检索滚动条3D界面的亮边(ThreedHighlight)颜色

scrollbar-face-color​  设置或检索滚动条3D表面(ThreedFace)的颜色

scrollbar-arrow-color ​ 设置或检索滚动条方向箭头的颜色

scrollbar-shadow-color​  设置或检索滚动条3D界面的暗边(ThreedShadow)颜色

scrollbar-dark-shadow-color ​设置或检索滚动条暗边框(ThreedDarkShadow)颜色

scrollbar-base-color ​ 设置或检索滚动条基准颜色

设置滚动条样式

在原来的 html 的时候,我们可以这样定义整个页面的滚动条
body{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
   scrollbar-highlight-color:#fff; /*- 左二 -*/
   scrollbar-face-color:#E4E4E4; /*- 面子 -*/
   scrollbar-arrow-color:#666; /*- 箭头 -*/
   scrollbar-shadow-color:#808080; /*- 右二 -*/
   scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
   scrollbar-base-color:#D7DCE0; /*- 基色 -*/
   scrollbar-track-color:#;/*- 滑道 -*/
}

但是同样的代码,我们应用在 xhtml 下就不起作用了,我相信好多朋友也遇到过同样的问题
那么怎么才能在 xhtml 下应用滚动条样式呢?看下列代码
html{
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/
   scrollbar-highlight-color:#fff; /*- 左二 -*/
   scrollbar-face-color:#E4E4E4; /*- 面子 -*/
   scrollbar-arrow-color:#666; /*- 箭头 -*/
   scrollbar-shadow-color:#808080; /*- 右二 -*/
   scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/
   scrollbar-base-color:#D7DCE0; /*- 基色 -*/
   scrollbar-track-color:#;/*- 滑道 -*/
}

这段代码和上一段唯一的不同就是在 CSS 定义的元素上,一个是 body 一个是 html。我们再测试一下,把 html 页面的"body"修改成"html"测试一下,发现依然可以实现效果。那到底是为什么呢?

从字面上来看,xhtml 比 html 多一个 x,那么这个 x 其实也就是 xml,为什么要加一个 xml 在里面?其实最根本的原因就是要让 html 更加结构化标准化(因为 html 实在是太烂)。我们在 html 里面定义的是 body,因为 html 不是很标准所以这样可以生效,而在xhtml里面这样就不行了,我看看那个图很明显,body 标签本身不是根元素,只有 html 才是根元素,而页面的滚动条也是属于根元素的,所以这就是我们为什么定义 body 没有效果的原因,因为我们定义的只是一个子原素。ok,我们知道了原理,来做一个试验如果把定义"body"或"xhtml"换成​*​,
*{
scrollbar-3dlight-color:#D4D0C8; 
   scrollbar-highlight-color:#fff; 
   scrollbar-face-color:#E4E4E4; 
   scrollbar-arrow-color:#666; 
   scrollbar-shadow-color:#808080; 
   scrollbar-darkshadow-color:#D7DCE0; 
   scrollbar-base-color:#D7DCE0; 
   scrollbar-track-color:#;
}

在html和xhtml都通过,因为*就是定义页面上的任何标签当然也包括了“html”这个标签。

(ps:其实与其说是 html 与 xhtml 的区别到不如说是有无 XHTML 1.0 transitional doctype的区别,但是如果你把页面的 XHTML 1.0 transitional doctype 去掉的话,那么这个页面就没有 doctype,默认的显示方式就是html4.01,不过你要把XHTML 1.0 transitional doctype 修改成 HTML 4.01 doctype 同样页面定义 body 也不会有效果的,虽然这个页面的标准是html 4.01) 

CSS 隐藏滚动条(横向,坚向)

网上都说使用 ​overflow-y:hidden​ 可以隐藏滚动条,但是只能针对 div 元素,并不能隐藏浏览器,而一些资料说 <boby>里加入​scroll="no"​,可隐藏滚动条;在<boby>里加入​style="overflow-x:hidden"​,可隐藏水平滚动条;加入​style="overflow-y:hidden"​,可隐藏垂直滚动条。

1、完全隐藏

  在里加入​scroll="no"​,可隐藏滚动条;

2、在不需要时隐藏

  指当浏览器窗口宽度或高度大于页面的宽或高时,不显示滚动条;反之,则显示;

3、样式表方法

  在里加入​style="overflow-x:hidden"​,可隐藏水平滚动条;

  加入​style="overflow-y:hidden"​,可隐藏垂直滚动条。

body{ overflow-x:hidden; } 在标准 DTD 下是不可以的

html { overflow: scroll; }

  • 强制隐藏滚动条:html { overflow: hidden; }
  • 隐藏IE的水平滚动条:html { overflow-x: hidden; }
  • 隐藏IE的垂直滚动条:html { overflow-y: hidden; }
  • 强制显示IE的水平滚动条:html { overflow-x: scroll; }
  • 强制显示IE的垂直滚动条:html { overflow-y: scroll; }
  • 强制显示Mozilla的水平滚动条:html { overflow:-moz-scrollbars-horizontal; }
  • 注意: 仅仅强制显示水平滚动条. 也就是说, 即使需要显示垂直滚动条时, 垂直滚动条也不会出现.
  • 强制显示Mozilla的垂直滚动条:html { overflow:-moz-scrollbars-vertical; }
  • 注意: 仅仅强制显示垂直滚动条. 也就是说, 即使需要显示水平滚动条时, 水平滚动条也不会出现.


最终的解决办法:

在页面添加:

<style>

html { overflow-x:hidden; //隐藏水平滚动条overflow-y:hidden;//隐藏垂直滚动条}

</style>


CSS怎么美化滚动条

各种浏览器对CSS滚动条的支持情况:

这里说的 Webkit 浏览器包括谷歌浏览器,苹果公司的 Safari 浏览器,以及最新的 Opera 浏览器。这些浏览器加起来占有超过半数的桌面浏览器市场份额。对于移动端浏览器,基本上是谷歌浏览器和 Safari 浏览器的天下。唯一的遗憾是火狐浏览器,至今没有对CSS滚动条属性做任何的改进。至于IE浏览器,我们期待吧。

鉴于目前浏览器市场的格局,我们很有信心相信 CSS 滚动条美化功能会有很好的很光明的前景。

很多年前谷歌浏览器就已经开始支持对滚动条的 CSS 美化。这些 Webkit 浏览器专属的CSS属性需要使用 -webkit- 浏览器引擎前缀,我们在这里将只会使用一些基本的CSS滚动条属性,在代码里会增加一些必要的解释说明。

::-webkit-scrollbar {

  width: 15px;

} /* 这是针对缺省样式 (必须的) */

当 CSS 中出现伪元素样式时,Webkit 引擎将会关闭它的缺省滚动条样式输出,只使用CSS里提供的样式信息。

这里是其它一些伪元素样式:

::-webkit-scrollbar-track {

  background-color: #b46868;

} /* 滚动条的滑轨背景颜色 */

::-webkit-scrollbar-thumb {

  background-color: rgba(0, 0, 0, 0.2); 

} /* 滑块颜色 */

::-webkit-scrollbar-button {

  background-color: #7c2929;

} /* 滑轨两头的监听按钮颜色 */

::-webkit-scrollbar-corner {

  background-color: black;

} /* 横向滚动条和纵向滚动条相交处尖角的颜色 */

加上了这些 CSS 属性,你将会看到下面的效果(再次提醒:你需要使用 Webkit 浏览器,比如谷歌浏览器才能看到效果)。


谷歌浏览器的用户是最幸福的。但我们也不能放弃火狐浏览器和IE浏览器用户。对于这些浏览器,有一个非常有效的补救方案,就是使用 javascript 插件。网上有不少人推荐一个由 Kelvin Luck 开发的一个 jQuery 插件:jScrollPane。但也有人评论这个插件是“PITA”,我翻了一下字典,发现“PITA”中文意思是“让人蛋疼”。经过试用,感到它的确是让人蛋疼。不推荐使用它。我发现了另外一个插件 malihu-custom-scrollbar-plugin,感觉相当不错,它的用法是:

<link rel="stylesheet" href="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.min.css">

<!-- latest jQuery direct from google's CDN -->

<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>

<script type="text/javascript" src="js/jquery-migrate-1.2.1.min.js"></script>

<script src="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js"></script>

<script>

if (!$.browser.webkit) {

$.mCustomScrollbar.defaults.scrollButtons.enable=true; //enable scrolling buttons by default

$.mCustomScrollbar.defaults.axis="yx"; //enable 2 axis scrollbars by default

$(".container").mCustomScrollbar({theme:"dark"});

}

</script>

火狐浏览器中的效果截图:

火狐浏览器

已经有很多网站都使用了这些滚动条的 CSS 美化技巧,特别是谷歌的一些应用和网站上,比如 Gmail 和 Google+。相信很快火狐浏览器和IE浏览器也会提供自己的解决方案。

用CSS调整滚动条配色

IE浏览器可以通过调整CSS的方式,来给滚动条换色。

代码如下:

.uicss-cn

{

height:580px;overflow-y: scroll;

scrollbar-face-color:#EAEAEA;

scrollbar-shadow-color:#EAEAEA;

scrollbar-highlight-color:#EAEAEA;

scrollbar-3dlight-color:#EAEAEA;

scrollbar-darkshadow-color:#697074;

scrollbar-track-color:#F7F7F7;

scrollbar-arrow-color:#666666;

}

具体样式对应的滚动条区域如图所示:

滚动条变色


导航条是一个网站的基础,美观易用的导航条对于任何网站都是非常重要的。按照传统的方法,导航条是由放在一行表格单元里的图形图像构成。由于人们不再推荐用表格来定位任何非表格的页面内容,所以很多人都用结构化的 XHTML 标记和 CSS 格式来创建导航条。下面先来看一下最简单的 CSS 导航条是怎么实现的:


css导航条

首先,我们来给这个下拉菜单写一个 HTML 的代码.先创建一个 div 来做为容器,然后把这个导航菜单放到这个容器里.正如下面的代码,我们用无序列表来创建这个导航菜单.在这个导航菜单中 Portfolio 项下有一个子菜单,用粗体表示出来,别忘了关闭</li>。

<div id="nav"> 

<ul> 

<li class="first"><a href="#">Home</a></li> 

<li><a href="#">About Me</a></li> 

<li><a href="#">Portfolio</a> 

<ul> 

<li><a href="#">Web</a></li> 

<li><a href="#">Print</a></li> 

<li><a href="#">Photos</a></li> 

</ul> 

</li> 

<li><a href="#">Contact Me</a></li> 

</ul> 

</div> 

The CSS


首先,我们来给#nav div设置一个样式,给它一个宽度,高度,字体大小.并把默认的无序列表样式给去掉.。

*{ margin:0px; padding: 0px; } 

#nav { 

font-family: arial, sans-serif; 

position: relative; 

width: 390px; 

height:56px; 

font-size:14px; 

color:#999; 

margin: 0 auto; 

#nav ul { 

list-style-type: none; 

在这一步我们给<li>设置左浮动让整个导航水平.并且设置相对,记<li>成为一个祖元素,这样我们下面就可以利用到绝对定位了。

#nav ul li { 

float: left 

position: relative; 

在这一步我们给<a>标签设置一个样式被它看起来像一个按扭(div css教程-如何使用css创建一个类似按扭的导航) 

#nav ul li a { 

text-align: center; 

border-right:1px solid #e9e9e9; 

padding:20px; 

display:block; 

text-decoration:none; 

color:#999; 

最重要的部分 
这部分将展示给你看如何让下拉菜单的显示和隐藏。当光标没有移动到Portfolio里下拉菜单不显示,当光标移动到Portfolio上面时下拉菜单显示,我们用display的属性来实现这个效果。

#nav ul li ul { 

display: none 

#nav ul li:hover ul { 

display: block; 

position: absolute; 

我们给下拉菜单的悬停状态设置样式 

#nav ul li:hover ul li a { 

display:block; 

background:#12aeef; 

color:#ffffff; 

width: 110px; 

text-align: center; 

border-bottom: 1px solid #f2f2f2; 

border-right: none; 

#nav ul li:hover ul li a:hover { 

background:#6dc7ec; 

color:#fff; 

完整的CSS 

实例

#nav ul li:hover ul { 

display: block; 

position: absolute; } 

#nav ul li:hover ul li a { 

display:block; 

background:#12aeef; 

color:#ffffff; 

width: 110px; 

text-align: center; 

border-bottom: 1px solid #f2f2f2; 

border-right: none; } 

#nav ul li:hover ul li a:hover { 

background:#6dc7ec; 

color:#fff; }


尝试一下 »

查看在线运行效果

css导航条素材下载


4色横向CSS导航条菜单
4色横向CSS导航
点此下载


纯CSS实现的彩色导航菜单

纯CSS彩色导航
点此下载


左侧导航布局CSS网页模板

左侧导航

点此下载

CSS中英文双语导航菜单

中英文双语导航

点此下载


CSS水平下拉菜单

水平下拉菜单

点此下载


div css下拉导航菜单分类代码

导航菜单分类

点此下载


五款漂亮的CSS横向下拉菜单导航条

样式一

样式三

样式四

样式五

点此下载


我们都对“两端对齐”并不陌生,在 word、powerpoint、outlook 等界面工具栏里,都有两端对齐(分散对齐)的功能按钮,只是平时使用的并不是太多,从编辑习惯上来说基本都是用左对齐、居中对齐、右对齐的方式来对齐页面的文本或模块,而当我们在做表单的时候经常遇到比如姓名, 手机号码, 出生地等等字段长短不一的情况,此时就需要用css让两个字段的词语两端对齐才能使整体表单看起来比较协调,如下图所示:


微信截图_20201110164641


CSS 文字两端对齐

text-align:Justify (火狐);


text-justify:inter-ideograph (IE)


如果有需要,你可以先阅读CSS text-align属性部分的内容。

text-justify(IE)
基本语法

text-justify : auto | distribute | distribute-all-lines | distribute-center-last | inter-cluster | inter-ideograph | inter-word | kashida | newspaper


语法取值

auto​ : 默认值。允许浏览器代理用户确定使用的两端对齐法则

distribute​ : 处理空格很像 newspaper ,适用于东亚文档。尤其是泰文

distribute-all-lines​ : 两端对齐行的方式与

distribute​ 相同,也同样不包含两段对齐段落的最后一行。适用于表意字文档

distribute-center-last :​ 未实现

inter-cluster​ : 调整文本无词间空格的行。这种模式的调整是用于优化亚洲语言文档的

inter-ideograph​ : 为表意字文本提供完全两端对齐。他增加或减少表意字和词间的空格

inter-word​ : 通过增加字之间的空格对齐文本。该行为是对齐所有文本行最快的方法。它的两端对齐行为对段落的最后一行无效

kashida​ : 通过拉长选定点的字符调整文本。这种调整模式是特别为阿拉伯脚本语言提供的。需要IE5.5+支持

newspaper : 通过增加或减少字或字母之间的空格对齐文本。是用于拉丁文字母表两端对齐的最精确格式

应用代码实例

如上图所示的注册表单,我们就要用到 text-aligntext-justify样式了。 text-align 直接设为 justify 就行了, text-justify 的情况相对比较复杂 。
HTML代码如下:

<form>

<div>

<span>用 户 名</span>

<input id='username' type="text" name="" />

<strong></strong>

</div>

<div>

<span>密 码</span>

<input type="password" name="" />

<strong></strong>

</div>

<div>

<span>确 认 密 码</span>

<input type="password" name="" />

<strong></strong>

</div>

<div>

<span>兴 趣 爱 好</span>

<input type="text" name="" />

<strong></strong>

</div>

<div class='reg'>

<input type="button" value='点此注册' name="" />

</div>

</form

注意,在没两个字符之间是有一个空格的 

样式代码:

/*CSS reset 顶部为css的重置代码*/ html{color:#000;background:#FFF;font-family:Microsoft YaHei,sans-serif,Arial,'宋体';} body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td,strong{padding:0;margin:0;font-family:Microsoft YaHei,sans-serif,Arial;} table{border-collapse:collapse;border-spacing:0;} fieldset,img{border:0;} a{text-decoration:none; color:#; outline:none;}/*此处待添加默认链接颜色*/ a:hover{text-decoration:none;color:#cb1114}; var,em,strong{font-style:normal;} address,caption,cite,code,dfn,em,strong,th,var, optgroup{font-style:inherit;font-weight:inherit;} del,ins{text-decoration:none;} li{list-style:none;} caption,th{text-align:left;} h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} q:before,q:after{content:'';} abbr,acronym{border:0;font-variant:normal;} sup{vertical-align:baseline;} sub{vertical-align:baseline;} legend{color:#000;} input,button,textarea,select,optgroup,option{font-family:inherit; font-size:inherit;font-style:inherit;font-weight:inherit;} input,button,textarea,select{*font-size:100%;} .clear {clear:both;height:0px;overflow:hidden;} body{-webkit-user-select:none;-webkit-text-size-adjust:none;-webkit-transform-style:preserve-3d;} *{-webkit-tap-highlight-color:rgba(0,0,0,0);} /*form 从此处起为表单的样式处理*/ form{width:430px;margin:20px auto 0;} div{ 

width:430px; 

height:40px; 

line-height:40px; 

clear:both; 

word-spacing:-1em;/*调整文本,以防止使用两端对齐之后字间距过大*/ 

text-align:justify; 

text-justify:distribute-all-lines;/*ie6-8*/ 

text-align-last:justify;/* ie9*/ 

-moz-text-align-last:justify;/*ff*/ 

-webkit-text-align-last:justify;/*chrome 20+*/ 

} @media screen and (-webkit-min-device-pixel-ratio:0){/* 兼容chrome*/ div span:after{ content:"."; display: inline-block; width:100%; overflow:hidden; height:0; } } span{float:left;width:65px;height:40px;line-height:40px;margin-right:10px;} strong{float:left;width:140px;height:40px;line-height:40px;margin-left:10px;background:#ccf;} input[type=text]{float:left;width:200px;height:20px;margin:10px 0;} input[type=password]{float:left;width:200px;height:20px;margin:10px 0;} input[type=button]{color:#00f;width:100px;height:30px;} .reg{text-align:center;margin:20px auto 0;}

使用 text-align:justify;text-justify:inter-ideograph; 设置文字两端对齐的效果,无论是英文还是中文,在IE和 chrome 下都不起作用。解决方法如下:

加入样式代码:

实例

div.justify 

{text-align: justify; width:200px; font-size:15px; color:red; 

border:1px solid blue; height:18px;}

div.justify > span 

{display: inline-block /* Opera */; 

padding-left: 100%; }


尝试一下 »
效果图:
微信截图_20201110162040 

从效果图可以看到,除了要在块级元素加 ​text-align:justify ​样式外,还需要在里面加一个空的​ span​ 元素,并应用样式。另外,对于中文还必须用空格隔开汉字,否则也没有两端对齐的效果。英文每个单词都有空格隔开,所以没问题。

微信截图_20201110164756

两端对齐英文文字的 CSS 代码

代码如下:
<div style="text-align:justify;">
中间是英文资料
</div>
<div align="justify">
中间是英文资料
</div>
这样就英文显示就可以对齐了,单词也不会断开。
但是有时候我们需要单词断开就在后面加个“-”,怎样做呢?代码如下:
<div style="text-align:justify;text-justify:inter-ideograph;">
中间是英文资料
</div>
这样就可以了,不过这个代码好像只有在 IE 里用。
--------------------------------------------------------------------

如果上面代码没效果,可以参考下面的示例:

实例

div.justify { text-align: justify; width:200px; font-size:15px; color:red; border:1px solid blue; height:18px;}

div.justify > span { display: inline-block /* Opera */; padding-left: 100%; }


尝试一下 »
除了要在块级元素加 ​text-align:justify ​样式外,还需要在里面加一个空的​ span​ 元素,并应用样式。另外,对于中文还必须用空格隔开汉字,否则也没有两端对齐的效果。英文每个单词都有空格隔开,所以没问题。


当我们在做网页的时候,有时为了整体页面搭配的美观,需要设置层样式为透明或者半透明,因为透明往往能产生不错的网页视觉效果。在使用的背景的页面中,如果不设置页面内容区为半透明状态,突出不了背景的作用,也显得不那么协调。用传统的 CSS 实现背景半透明效果的方法是用两个层,一个放文字,另一个做透明背景,但是透明滤镜的效果会影响到里面的内容。如果只需要在IE下实现,是有更简单的方法可以实现的。

CSS半透明属性

兼容主流浏览器的 CSS 透明代码:

.transparent_class {

filter:alpha(opacity=50);

-moz-opacity:0.5;

-khtml-opacity: 0.5;

opacity: 0.5;

}

上面的几个属性分别是:

opacity: 0.5; 这是最重要的,因为它是 CSS 标准.该属性支持 Firefox, Safari 和 Opera.

②filter:alpha(opacity=50); 这个是为 IE6 设的,可取值在 0-100,其它三个 0 到 1.

③-moz-opacity:0.5; 这个是为了支持一些老版本的 Mozilla 浏览器。

④-khtml-opacity: 0.5; 这个为了支持一些老版本的 Safari 浏览器。

CSS 透明度继承问题

CSS 的透明属性涉及到一个继承问题,当为父级元素设置透明度后,子元素将自动继承其透明度,比如下图的效果:


css透明度继承


即使你又为子元素指定透明度为1也是无效的。


对于子元素是文字的情况,一般的解决方法是如果多少还能够看清,就不管。另一个折中的方法是,为文本子元素指定一个相对更深的颜色。也就是说,当子元素继承透明度后,所得到的文本颜色正好就是你想要的。前提是这个颜色还有加深的可能,和需要详细的计算颜色和透明度的值。


还有“取消透明度继承”的说法,这个说法是不太准确的,实际上没有任何取消透明度继承的方法。只能说,当想要实现“多个元素覆盖,只让指定的元素透明”时,可以使用的一些Hack。


还有一种不错的实现方法:添加一个空元素作为透明层,和不想透明但是要实现覆盖效果的元素为同级元素。父级元素使用 position:relative 定位; 两个子元素使用 position:absolute 定位,实现覆盖。具体解释说明请点击本链接


半透明

IE下实现半透明

HTML代码:

<div class="alpha1"> 

<div class="ap2"> 

<p>背景为红色(#FF0000),透明度20%。</p> 

</div> 

</div>

CSS代码:

.alpha1{  

width:300px;  

height:200px;  

background-color:#FF0000;  

filter:Alpha(Opacity=30);  }  

.ap2{  

position:relative;   }

实例

.alpha1{  

width:300px;  

height:200px;  

background-color:#FF0000;  

filter:Alpha(Opacity=30);  }


尝试一下 »

兼容FF、OP的写法:

两个层重叠的方法改下页面结构与CSS样式

HTML代码:

<div class="alpha1"> 

<div class="ap2"> 

<p>背景为红色(#FF0000),透明度20%。</p> 

</div> 

<div class="alpha2"> 

</div>

</div>

CSS代码:

.alpha1,.alpha2{  

width:100%;  

height:auto;  

min-height:250px;/*必需*/  

_height:250px;/*必需*/  

overflow:hidden;  

background-color:#FF0000;/*背景色*/  }  

 .alpha1{  

filter:alpha(opacity=20);/*IE透明度20%*/  }  

.alpha2{  

background-color:#FFFFFF;  

-moz-opacity:0.8;/*MozFF透明度20%*/  

opacity:0.8;/*支持CSS3的浏览器(FF1.5也支持)透明度20%*/  }  

.ap2{  

position:absolute;  }  

实例

.alpha1,.alpha2{  

width:100%;  

height:auto;  

min-height:250px;/*必需*/  

_height:250px;/*必需*/  

overflow:hidden;  

background-color:#FF0000;/*背景色*/  } 


尝试一下 »


有很多刚刚接触 CSS 的新手有时会遇到 CSS 加载失败这个问题,但测试时,网页上没有显示该样式的问题,这就说明 CSS 加载失败了。出现这种状况一般是因为的 CSS 路径书写错,或者是在浏览器中禁止掉了 CSS 的加载,可以重新启动浏览器刷新,在文件中 CSS 的调用,一般都是通过 link 加上你的路径来实现,具体可以看下代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>index</title>

<link rel='stylesheet' type='text/css' href='./css/index1.css'>//注意好文件名的书写就没问题了。

造成 CSS 加载失败的原因有很多,这可能跟你代码出错,浏览器、路径、编码等等都是有关联的。所以在具体情况具体分析。最常见的失败原因有以下几类:


1.网络原因

IIS空间不足、浏览者网速慢、空间速度慢等网络因素是造成 CSS 加载失败的原因之一,其具体表现为:当我们打开网页时,网页布局完整,但却没有任何布局样式显示。

2.路径错误或者代码不兼容

如果网页打开时,没有显示 CSS 设定的样式,只以原始状态显示。那么就可能是我们 CSS 文件路径出错或者 CSS代码不兼容了。 

3.if造成失败 

第三个原因是,我们编在写 CSS 时,可能使用了if判断语句对什么浏览器调用什么 CSS 文件时疏忽造成if调用的混乱,导致在某些浏览器上能正常显示,在某些浏览器上不能正常显示。对于这个原因,解决方法就是好好检查造成 CSS 加载失败的 if 判断设置。

  

4.另类CSS加载失败 

何为另类 CSS 加载失败?这是由于我们本身的 CSS 代码写法有问题,没有设置好造成在各浏览器显示不同布局差距效果。在 CSS 里面,我们称为css hack


css

5、浏览器导致

在 Chrome 浏览器的错误控制台下看看 CSS 文件有没有加载进来,确定已加载的话,检查元素的类名与 CSS 中定义的类名是否相同。可能局限于 IE 浏览器,你用谷歌浏览器就会出现错误。所以尝试换个浏览器,然后等会在用,也可能修复故障。 

6、编码不对

如果不是上述问题则看一看你的 CSS 文件的字符集是否和你的调用 CSS 文件的网页的字符集是否一致,就是 charset 属性那里。在你使用浏览器进行浏览效果的时候,ie浏览器中菜单栏上有一个“查看--编码”,在查看编码上面 UTF-8 或者 GBK 看看是不是同一个编码。可能是编码不一致所造成。

  

以上就是造成 CSS 加载失败最常见的六大原因。我们了解这些原因后,如果在实际操作中遇到类似问题,便可逐一对照排查,对症下药解决问题。


我们都知道 HTML 和 CSS 是作用不相同的两种语言,但是它们对一个网页能够同时产生作用,网页(webPage)= 内容(html) + 表现(css) + 行为(javascript)。因此需要把 CSS 引入 HTML 一起使用。要想在浏览器中显示出预期的 CSS 样式表效果,就要让浏览器识别并正确调用 CSS。当浏览器读取样式表时,要依照文本格式来读,而且当 CSS 样式表放在不同的地方,所产生的作用范围也是不同的。在 HTML 中,主要用四种方法引入 CSS:行内式、内嵌式、导入式和链接式。


HTML引入CSS

(1)行内式

<p style=”color:red”>网页中css的导入方式</p>

即在标记的style属性中设定CSS样式,这种方式本质上没体现出CSS的优势,因此不推荐使用。


(2)嵌入式

<style type=”text/css”>

p{ color:red }

</style>

在对页面中各种元素的设置集中写在<head>和</head>之间的,对于单个页面来说,这种方式很方便。但是这种方法的使用情况要少的多,最长见得就是访问量大的门户网站。或者访问量较大的企业网站的首页。与第一种方法比起来,优点突出,弊端也明显。优点:速度快,所有的 CSS 控制都是针对本页面标签的,没有多余的 CSS 命令;再者不用外链 CSS 文件。直接在 HTML 文档中读取样式。缺点就是改版麻烦些,单个页面显得臃肿,CSS 不能被其他 HTML 引用造成代码量相对较多,维护也麻烦些。但是采用这种方法的公司大多有钱,对他们来说用户量是关键,他们不缺人进行复杂的维护工作。


(3)导入式

<!-- 导入外部样式:在内部样式表的<style></style>标记之间导入一个外部样式表,导入时用@import。 -->  

<style type="text/css">  

 @import "jisuan.css";  

</style>


(4)链接式

<link href="jisuan.css" rel=”stylesheet” type=”text/css” />


导入式和链接式差不多,都是从外部引入 CSS 文件。但是链接式对于客户端用户浏览网站时,效果会好些。

链接式可以说是现在占统治地位的引入方法。如同 IE 与浏览器。这也是最能体现 CSS 特点的方法;最能体现 DIV+CSS 中的内容与显示分离的思想,也最易改版维护,代码看起来也是最美观的一种。

如果希望用 javascript 来动态决定引入哪个 css 文件,则必须使用连接式才能实现。大多数的网站还是比较喜欢使用链接的方式引用外部 CSS 的。


css链接式

采用导入式和链接式的区别:

1、导入式:会在整个页面装载完成后再装载 CSS 文件,对于有的浏览器来说,在一些情况下,如果网页文件的体积比较大,则会出现先显示无样式的页面,闪烁一下之后再出现设置样式后的效果,从浏览者的感受来说,这是导入式的一个缺陷。


2、链接式:会在装载页面主体部分之前装载 CSS 文件,这样显示出来的网页从一开始就是带有样式效果的。


对于一些比较大的网站,为了便于维护,可能会希望把所有的 CSS 样式分类别放到几个 CSS 文件中,这样如果使用连接式引入,就需要几个语句分别导入 CSS 文件。如果要调整 CSS 文件的分类,就需要同时调整 HTML 文件,这对于维护工作来说,是一个缺陷,如果使用导入式,则可以只引进一个总的 CSS 文件,在这个文件中再导入其他独立 CSS 文件;而链接式则不具备这个特性。


因此给大家的建议是:如果仅需要引入一个 CSS 文件,则使用链接方式,如果需要引入多个 CSS 文件,则首先用链接方式引入一个“目录”CSS 文件,这个“目录”CSS 文件中再使用导入式引入其他 CSS 文件。

link 和@import 的区别

Quote link的定义
HTML 和 XHTML 都有一个结构,它使网页作者可以增加于 HTML 文档相关的额外信息。这些额外资源可以是样式化信息(CSS)、导航助手、属于另外形式的信息(RSS)、联系信息等等。

Quote @import 的定义

指定导入的外部样式表及目标设备类型。其实 link 和@import 的最根本区别就是,link 是一个 HTML 的一个标签,而@import 是 CSS 的一个标签,link 除了调用 CSS 外还可以有其他作用譬如声明页面链接属性,声明目录,rss等等,而@import 就只能调用 CSS。如果单独从外部引用 CSS 来说,他们的作用是基本一样,只不过上面的老大不一样而已。


link和import哪个更好些?

上面说了因为上面的老大不一样,所以在使用上就会有一些细节的区别,不能说总体谁好谁坏,只能说具体情况具体分析。
1、如果要用 javascript 进行样式选择:
这个时候就要用 link,因为l ink 是 html 元素,可用 javascript 去控制 dom 元素最后达到改变样式的效果。

2、如果要应用打印样式;
打印样式顾名思义就是打印页面时候的样式。
这个样式在普通浏览下是没有效果的,只有在打印的时候生效。
如果要为页面单独引用打印样式的话,link 和@import 都可以的。

3、如果要引用多个样式;
如果要在一个页面上引用多个样式组合产生效果的话,link 和@import 也是都可以的。

最后,其实这种@import 文件导入的方式已经很少用了,建议用 link 方式。原因是 link 载入时是和 HTML 的载入同步加载的,而@import 则是在页面内容载入完成之后再引用的。如果网速慢的话,可能会导致页面的样式混乱。另外使用@import 时要注意添加地方,在 CSS 手册中提到:该规则必须在样式表头部最先声明。并且其后的分号是必需的,如果省略了此分号,外部样式表将无法正确导入,并会生成错误信息。IE 使用@import无法引入超过35条的样式表。


我们对Windows各种各样的鼠标样式都不陌生,当鼠标移动到不同的地方时,当鼠标执行不同的功能时,当系统处于不同的状态时,都会使鼠标的形状发生变化。而在网页上往往只有当鼠标在超级链接上时才出现一个手形,在其它地方似乎没有什么变化,同充满动感的网页显得不怎么和谐。这里教大家用CSS来定义20种种鼠标样式形状。在CSS中,使用cursor属性来定义鼠标的样式。


用css控制鼠标样式的语法如下:

<span style="cursor:*">文本或其它页面元素</span>

把 * 换成如下20个可选值的一种:

cursor属性取值如下,默认值为default。大家可能会说,cursor属性值这么多,怎么记呀?其实大家不用担心,在实际开发中,我们一般只用到“default”和“pointer”这两个属性值,其他的一般都很少用得上。如果实在没办法还需要其他的,那就回来查这种表就行了。

crosshair;


十字准心

The cursor render as a crosshair

光标表现为十字准线

cursor: pointer; 
cursor: hand;
写两个是为了照顾IE5,它只认hand。

 

The cursor render as a pointer (a hand) that indicates a link

光标标以暗示(手指)的形式来表明有一个连接

cursor: wait;

 

等待/沙漏

The cursor indicates that the program is busy (often a watch or an hourglass)
光标暗示当前程序正忙(一般为一块表或是一个沙漏)

cursor: help;

 

帮助

The cursor indicates that help is available (often a question mark or a balloon)
光标暗示当前位置可得到帮助(一般为问号或是气球)

cursor: no-drop;

 

无法释放

cursor: no-drop;

cursor: text;

 

文字/编辑

The cursor indicates text
光标暗示当前所处位置为文字内容

cursor: move;

 

可移动对象

The cursor indicates something that should be moved
光标暗示一些东西应该被移动

cursor: n-resize;

 

向上改变大小(North)

The cursor indicates that an edge of a box is to be moved up (north)
边缘可向上移动(北)

cursor: s-resize;

 

向下改变大小(South)

The cursor indicates that an edge of a box is to be moved down (south)
边缘可向下方移动(南)

cursor: e-resize;

 

向右改变大小(East)

The cursor indicates that an edge of a box is to be moved right (east)
box边缘可向右(东)边移动

cursor: w-resize;


向左改变大小(West)

The cursor indicates that an edge of a box is to be moved left (west)
边缘可向左移动(西)

cursor: ne-resize;

 

向上右改变大小(North East)

The cursor indicates that an edge of a box is to be moved up and right (north/east)
光标暗示box的边缘可向右上方移动(东北方向)

cursor: nw-resize;

 

向上左改变大小(North West)

The cursor indicates that an edge of a box is to be moved up and left (north/west)
边缘可向左上方移动(西北)

cursor: se-resize;

 

向下右改变大小(South East)

The cursor indicates that an edge of a box is to be moved down and right (south/east)
边缘可向右下方移动(东南)

cursor: sw-resize;

 

向下左改变大小(South West)

The cursor indicates that an edge of a box is to be moved down and left (south/west)
边缘可向左下方移动(西南)

cursor: auto;

 

自动

The browser sets a cursor
浏览器设置一个光标

cursor:not-allowed;

 

禁止

cursor:not-allowed;

cursor: progress;

 

处理中

cursor: progress;

cursor: default;

 

系统默认

The default cursor (often an arrow)
默认的光标状态(通常为一个箭头)

cursor: url(' # ');
# = 光标文件地址      (注意文件格式必须为:.cur 或 .ani)。

 

用户自定义(可用动画)

The url of a custom cursor to be used.
自定义光标的url位置

Note: Always define a generic cursor at the end of the list in case none of the url-defined cursors can be used
注意:在定义完自定义的光标之后在末尾加上一般性的光标,以防那些url所定义的光标不能使用


cursor的pointer与hand区别

cursor:hand 与 cursor:pointer 的效果是一样,都像手形光标。那为什么有两个呢,这两个有什么区别呢?

用浏览器测试得出以下结论:
cursor:hand :IE完全支持。但是在 firefox 是不支持的,没有效果。
cursor:pointer :是 CSS2.0 的标准。所以 firefox 是支持的,但是 IE5.0 既之前版本不支持。IE6 开始支持。
所以为了兼容各个主流浏览器,尽量使用 cursor:pointer,而不要使用 cursor:hand。

实例:

实例

#div_default{cursor:default;}

#div_pointer{cursor:pointer;}


尝试一下 »
在浏览器预览效果如下:

css鼠标样式

CSS Cursor鼠标指针样式兼容性参考表

下面分享一个鼠标指针样式兼容性在线参考表,黑色图标:表示该属性兼容此浏览器。灰色图标:表示该属性不兼容此浏览器。

CSS Cursor兼容表


为了让用户拥有更好的阅读体验,将文章中数据以更直观的方式展示是非常必要的,因此,拥有良好的表格设计就显得非常重要了。下面,51coolma就和大家分享4款好看且实用的CSS表格样式。


具体操作:直接复制粘贴后即可在浏览器打开显示

     ——CSS快速入门

1. 单像素边框CSS表格

微信截图_20201110143709

 

这是一个简单但是常用的表格样式。

源代码:

实例

table.gridtable {font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #666666;border-collapse: collapse;}

table.gridtable th {border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #dedede;}

table.gridtable td {border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #ffffff;}


尝试一下 »

2. 带背景图的CSS样式表格

QQ截图20201110144413

这个样式和和上面的差不多,只是多了背景图,的视觉上会好看不少。

源代码:

实例

table.imagetable {font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #999999;border-collapse: collapse;}

table.imagetable th {background:#b5cfd2 url('cell-blue.jpg');border-width: 1px;padding: 8px;border-style: solid;border-color: #999999;}

table.imagetable td {background:#dcddc0 url('cell-grey.jpg');border-width: 1px;padding: 8px;border-style: solid;border-color: #999999;}


尝试一下 »

3. 自动换整行颜色的CSS样式表格(需要用到JS)

QQ截图20201110144710

这个CSS表格会自动切换每一行的颜色,这种呈现方式,在我们编辑一个数据庞大的表格时,非常好用。

源代码:

实例

function altRows(id){

if(document.getElementsByTagName){ 

var table = document.getElementById(id); 

var rows = table.getElementsByTagName("tr");

for(i = 0; i < rows.length; i++){         

if(i % 2 == 0){

rows[i].className = "evenrowcolor";

}else{

rows[i].className = "oddrowcolor";

}}}}

window.onload=function(){

altRows('alternatecolor');}


尝试一下 »

4. 鼠标悬停高亮的CSS样式表格 (需要JS)

微信截图_20201110145003

纯CSS显示表格高亮在IE中显示有问题,所以这边使用了JS来做高亮。

注意:不要定义格子的背景色。

源代码:

实例

table.hovertable tr {

background-color:#d4e3e5;}


尝试一下 »

 以上是51coolma为大家推荐的几种比较常见和常用的CSS表格样式了,希望大家喜欢。


  CSS 和 HTML 都是前端技术的核心语言,那么这两者分别是干什么的?又有什么区别呢?

QQ截图20180423112845

  HTML(结构)

  全称 Hyper Text Markup Language(超文本标记语言),该语言是用于定义文档内容结构

  功能:

  1.该语言写的代码通常会被浏览器解析执行

  2.超文本:不止包括文本,还有图片、链接、音乐...

  3.一个页面就是一篇文档,而一篇文档最核心的就是内容,不同含义

  注释格式:<!--注释内容-->


  CSS(布局)

  全称 Cascading Style Sheets (层叠样式表)

  功能:

  1.用于定义 HTML 文档的样式(外观)

  2.页面表现的基础,可以控制布局,控制元素的渲染

  注释格式:/*注释内容*/

  总的来说就是一句话:HTML 是网页的结构,CSS 是网页的样式。打个比方,如果把整个网页比喻成一个人,那么 HTML 就是骨头,CSS 就是衣服。


  相关教程:

  HTML入门教程

  CSS入门教程


CSS变换改变元素的位置和形状。

CSS变换可以将仿射线性变换应用于HTML元素。

这些变换包括在平面和3D空间中的旋转,倾斜,缩放和平移。

CSS转换属性

我们可以使用以下两个属性来定义CSS变换。

  • transform - 指定要应用于元素的变换。
  • transform-origin - 指定原点的位置。默认情况下,它在元素的中心。

translate()方法

我们可以使用translate()方法从当前位置移动元素。

在下面的代码中 translate(50px,100px)移动元素从左边50像素,从顶部100像素。

<!DOCTYPE html><html><head><style> div {    width: 100px;    height: 75px;    background-color: red;    border: 1px solid black;}div#div2 {    -ms-transform: translate(50px,100px); /* IE 9 */    -webkit-transform: translate(50px,100px); /* Chrome, Safari, Opera */    transform: translate(50px,100px); /* Standard syntax */}</style></head><body>    <div>Hello.</div>    <div id="div2">Hello. </div></body></html>

上面的代码呈现如下:

translate()方法




           translate()方法示例

rotate()方法

我们可以使用rotate()方法以给定的度数顺时针旋转元素。

我们也可以使用负值逆时针旋转元素。

在下面的代码中 rotate(30deg)将元素顺时针旋转30度。

<!DOCTYPE html><html><head><style> div {    width: 100px;    height: 75px;    background-color: black;    border: 1px solid red;}div#div2 {    -ms-transform: rotate(30deg); /* IE 9 */    -webkit-transform: rotate(30deg); /* Chrome, Safari, Opera */    transform: rotate(30deg); /* Standard syntax */}</style></head><body>    <div>Hello.</div>    <div id="div2">Hello. </div></body></html>

上面的代码呈现如下:

rotate()方法


scale()方法

我们可以使用scale()方法来增加或减少元素大小。

我们可以改变宽度(X轴)和高度(Y轴)。

在下面的代码中 scale(2,4)将宽度转换为原始大小的两倍,高度为其原始尺寸的4倍。

<!DOCTYPE html><html><head><style> div {    width: 100px;    height: 75px;    background-color: blue;    border: 1px solid black;}div#div2 {    margin: 100px;    -ms-transform: scale(2,4); /* IE 9 */    -webkit-transform: scale(2,4); /* Chrome, Safari, Opera */    transform: scale(2,4); /* Standard syntax */}</style></head><body><div>Hello.</div><div id="div2">Hello.</div></body></html>

上面的代码呈现如下:

scale()方法


skew() 方法

我们可以使用skew()方法在给定的角度转动元素。

我们可以沿水平(X轴)和垂直(Y轴)线旋转元素。

<!DOCTYPE html><html><head><style> div {    width: 100px;    height: 75px;    background-color: red;    border: 1px solid black;}div#div2 {    -ms-transform: skew(30deg,20deg); /* IE 9 */    -webkit-transform: skew(30deg,20deg); /* Chrome, Safari, Opera */    transform: skew(30deg,20deg); /* Standard syntax */}</style></head><body><div>Hello.</div><div id="div2">Hello.</div></body></html>

上面的代码呈现如下:

skew()方法

matrix()方法

matrix()方法将所有的2D变换方法组合成一个。

矩阵方法采用六个参数,包含数学函数,它允许您:旋转,缩放,移动(平移)和偏斜元素。

<!DOCTYPE html><html><head><style> div {    width: 100px;    height: 100px;    background-color: blue;    border: 1px solid black;}div#div2 {    -ms-transform: matrix(0.866,0.5,-0.5,0.866,0,0);    -webkit-transform: matrix(0.866,0.5,-0.5,0.866,0,0);    transform: matrix(0.866,0.5,-0.5,0.866,0,0);}</style></head><body><div>Hello. </div><div id="div2">Hello. </div></body></html>

上面的代码呈现如下:

matrix()方法


rotateX()方法

我们可以使用 rotateX()方法以给定的度数围绕其X轴旋转元素。

<!DOCTYPE html><html><head><style> div {    width: 100px;    height: 75px;    background-color: red;    border: 1px solid black;}div#div2 {    -webkit-transform: rotateX(130deg);    transform: rotateX(130deg);}</style></head><body>    <div>Hello. </div>    <div id="div2">Hello. </div></body></html>

上面的代码呈现如下:

rotateX()方法


rotateY()方法

我们可以使用 rotateY()方法以给定的度数围绕其Y轴旋转元素。

<!DOCTYPE html><html><head><style> div {    width: 100px;    height: 75px;    background-color: red;    border: 1px solid black;}div#div2 {    -webkit-transform: rotateY(130deg);    transform: rotateY(130deg);}</style></head><body>    <div>Hello. </div>    <div id="div2">Hello. </div></body></html>

上面的代码呈现如下:


属性 描述 CSS
transform-origin设置转换元素的位置3
transform-style设置转换的样式3
transform转换的简写属性3

CSS渐变是CSS3图像模块中添加的新类型的图像。

CSS渐变允许您在两个或多个指定颜色之间显示平滑过渡。

浏览器支持两种类型的渐变:

  • linear, 用linear-gradient()函数定义,
  • radial, 用radial-gradient()函数定义.

CSS3线性渐变

要创建线性渐变,我们将起点和方向设置为角度。

我们还定义颜色停止。颜色停止是渲染平滑过渡的颜色。我们必须指定至少两个停止颜色。

这里是一个线性渐变,从中心(水平)和顶部(垂直)开始,并开始蓝色,过渡到白色。

<!DOCTYPE html><html><head><style>#grad1 {    width: 100px;     height: 100px;     border: 1px solid rgb(51, 51, 51);     background: -moz-linear-gradient(top, red, white);     background: -moz-linear-gradient(to bottom, red, white);     background: -ms-linear-gradient(top, red, white);     background: -o-linear-gradient(top, red, white);     background: -webkit-linear-gradient(top, red, white);}</style></head><body>    <div id="grad1"></div></body></html>

上面的代码呈现如下:

线性渐变

例2

更改相同的渐变从左到右运行:

<!DOCTYPE html><html><head><style>#grad1 {    width: 100px;     height: 100px;     border: 1px solid rgb(51, 51, 51);     background: -moz-linear-gradient(left, red, white);     background: -moz-linear-gradient(to right, red, white);     background: -ms-linear-gradient(left, red, white);     background: -o-linear-gradient(left, red, white);     background: -webkit-linear-gradient(left, red, white);}</style></head><body>    <div id="grad1"></div></body></html>

上面的代码呈现如下:

从左到右渐变

例3

要使渐变沿对角线运行,请指定水平和垂直起始位置。

例如:

<!DOCTYPE html><html><head><style>#grad1 {    width: 100px;     height: 100px;     border: 1px solid rgb(51, 51, 51);     background: -moz-linear-gradient(left top, red, white);     background: -moz-linear-gradient(to bottom right, red, white);     background: -ms-linear-gradient(left top, red, white);     background: -o-linear-gradient(left top, red, white);     background: -webkit-linear-gradient(left top, red, white);}</style></head><body>    <div id="grad1"></div></body></html>

上面的代码呈现如下:

沿对角渐变

使用线性渐变的角度

没有角度,浏览器将根据给定的方向自动确定值。

我们可以专门设置角度来控制渐变的方向。以下代码显示如何设置角度。

background: linear-gradient(70deg, black, white);

例如,这里是两个梯度,第一个具有朝向右边的方向,第二个具有70度的角度。

<!DOCTYPE html><html><head><style>#grad1 {    width: 100px;     height: 100px;     border: 1px solid rgb(51, 51, 51);     background: linear-gradient(70deg, black, white);}#grad2 {    width: 100px;     height: 100px;     border: 1px solid rgb(51, 51, 51);     background: linear-gradient(black, white);}</style></head><body>    <div id="grad1"></div>    <div id="grad2"></div></body></html>

上面的代码呈现如下:

线性渐变的角度


例4

上面的代码呈现如下:

<!DOCTYPE html><html><head><style>#grad1 {    height: 100px;    background: -webkit-linear-gradient(0deg, red, white);    background: -o-linear-gradient(0deg, red, white);    background: -moz-linear-gradient(0deg, red, white);    background: linear-gradient(0deg, red, white);}#grad2 {    height: 100px;    background: -webkit-linear-gradient(90deg, red, white);    background: -o-linear-gradient(90deg, red, white);    background: -moz-linear-gradient(90deg, red, white);    background: linear-gradient(90deg, red, white);}#grad3 {    height: 100px;    background: -webkit-linear-gradient(180deg, red, white);    background: -o-linear-gradient(180deg, red, white);    background: -moz-linear-gradient(180deg, red, white);    background: linear-gradient(180deg, red, white);}#grad4 {    height: 100px;    background: -webkit-linear-gradient(-90deg, red, white);    background: -o-linear-gradient(-90deg, red, white);    background: -moz-linear-gradient(-90deg, red, white);    background: linear-gradient(-90deg, red, white);}</style></head><body>    <div id="grad1" style="color:white;text-align:center;">0deg</div><br>    <div id="grad2" style="color:white;text-align:center;">90deg</div><br>    <div id="grad3" style="color:white;text-align:center;">180deg</div><br>    <div id="grad4" style="color:white;text-align:center;">-90deg</div></body></html>

上面的代码呈现如下:

0deg

90deg

180deg

-90deg


颜色停止

颜色停止沿着渐变线定义在该位置具有特定颜色的点。

位置可以指定为线的长度的百分比,或绝对长度。

您可以指定与您一样多的停止点。

要以百分比形式指定位置,0%表示起点,而100%表示结束点。

要创建效果,我们可以在必要时使用该范围之外的值。

此示例指定三个停止点:

<!DOCTYPE html><html><head><style>#grad1 {    width: 100px;     height: 100px;     border: 1px solid rgb(51, 51, 51);     background: -moz-linear-gradient(center top , blue, white 60%, red);     background: -moz-linear-gradient(to bottom, blue, white 60%, red);     background: -ms-linear-gradient(center top , blue, white 60%, red);     background: -o-linear-gradient(center top , blue, white 60%, red);     background: -webkit-linear-gradient(top , blue, white 60%, red);     background: linear-gradient(to bottom, blue, white 60%, red);}     </style></head><body>    <div id="grad1"></div>    <div id="grad2"></div></body></html>

上面的代码呈现如下:

颜色停止


例5

这里有一个使用各种颜色的示例,所有颜色均匀分布:

<!DOCTYPE html><html><head><style>#grad1 {    width: 100px;     height: 100px;     border: 1px solid rgb(51, 51, 51);     background: -moz-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;     background: -moz-linear-gradient(to right, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;     background: -ms-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;     background: -o-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;     background: -webkit-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;}     </style></head><body>    <div id="grad1"></div></body></html>

上面的代码呈现如下:

均匀间隔


透明度和梯度

CSS渐变支持透明度。

为了增加透明度,我们使用 rgba()函数定义颜色停止。

rgba()函数中的最后一个参数可以是从0到1的值。它定义颜色的透明度:0表示完全透明,1表示完全不透明。

<!DOCTYPE html><html><head><style>#grad1 {    height: 200px;    background: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1));}</style></head><body><div id="grad1"></div></body></html>

上面的代码呈现如下:

透明度和梯度


径向梯度

径向梯度使用 radial-gradient()函数来指定。

它的语法与线性渐变类似,只不过您可以指定渐变的结束形状,圆形或椭圆形以及其大小。

默认情况下,结束形状是一个椭圆,其比例与容器的框相同。

以下代码显示了具有均匀间隔的色彩停止的径向渐变。

<!DOCTYPE html><html><head><style>#grad1 {    height: 200px;    width: 200px;    background: -webkit-radial-gradient(red, green, yellow);    background: -o-radial-gradient(red, green, yellow);    background: -moz-radial-gradient(red, green, yellow);     background: radial-gradient(red, green, yellow);}</style></head><body>    <div id="grad1"></div></body></html>

上面的代码呈现如下:

径向梯度

例6

以下代码显示了如何创建具有不同间隔色停的径向梯度。

<!DOCTYPE html><html><head><style>#grad1 {    height: 150px;    width: 200px;    background: -webkit-radial-gradient(red 5%, green 15%, yellow 60%);    background: -o-radial-gradient(red 5%, green 15%, yellow 60%);    background: -moz-radial-gradient(red 5%, green 15%, yellow 60%);    background: radial-gradient(red 5%, green 15%, yellow 60%);}</style></head><body><div id="grad1"></div></body></html>

上面的代码呈现如下:

同间隔色停的径向梯度

设置径向渐变的形状

shape参数定义径向梯度的形状。

它可以取值 circle ellipse 。默认值为 ellipse

<!DOCTYPE html><html><head><style>#grad1 {    height: 150px;    width: 200px;    background: -webkit-radial-gradient(red, yellow, green);    background: -o-radial-gradient(red, yellow, green);    background: -moz-radial-gradient(red, yellow, green);    background: radial-gradient(red, yellow, green);}#grad2 {    height: 150px;    width: 200px;    background: -webkit-radial-gradient(circle, red, yellow, green);    background: -o-radial-gradient(circle, red, yellow, green);    background: -moz-radial-gradient(circle, red, yellow, green);    background: radial-gradient(circle, red, yellow, green);}</style></head><body><p>Ellipse (this is default):</p><div id="grad1"></div><p>Circle:</p><div id="grad2"></div></body></html>

上面的代码呈现如下:

椭圆(这是默认值):

椭圆


圆:

圆


径向梯度大小

我们可以使用size参数定义径向渐变的大小。

径向渐变的大小可以取四个值:

  • closest-side
  • farthest-side
  • closest-corner
  • farthest-corner
<!DOCTYPE html><html><head><style>#grad1 {    height: 150px;    width: 150px;    background: radial-gradient(closest-side at 60% 55%,blue,green,yellow,red);}#grad2 {    height: 150px;    width: 150px;    background: radial-gradient(farthest-side at 60% 55%,blue,green,yellow,red);}#grad3 {    height: 150px;    width: 150px;    background: radial-gradient(closest-corner at 60% 55%,blue,green,yellow,red);}#grad4 {    height: 150px;    width: 150px;    background: radial-gradient(farthest-corner at 60% 55%,blue,green,yellow,red);}</style></head><body><p><strong>closest-side:</strong></p><div id="grad1"></div><p><strong>farthest-side:</strong></p><div id="grad2"></div><p><strong>closest-corner:</strong></p><div id="grad3"></div><p><strong>farthest-corner (this is default):</strong></p><div id="grad4"></div></body></html>

上面的代码呈现如下:

closest-side:
closest-side:

farthest-side:
farthest-side:

closest-corner:

farthest-corner (this is default):
farthest-corner (this is default):

重复的梯度

linear-gradient() radial-gradient()不要重复停止。

repeating-linear-gradient() repeating-radial-gradient()可以重复梯度。

此示例使用 repeating-linear-gradient()创建渐变:

<!DOCTYPE html><html><head><style>#grad1 {    height: 150px;    width: 200px;    background: repeating-linear-gradient(-45deg, yellow, yellow 5px, white 5px, white 10px);}</style></head><body><div id="grad1"></div></body></html>

上面的代码呈现如下:

重复的梯度

例7

此示例使用 repeating-radial-gradient()创建渐变:

<!DOCTYPE html><html><head><style>#grad1 {    height: 150px;    width: 200px;    background: repeating-radial-gradient(red, red 5px, white 5px, white 10px);}</style></head><body><div id="grad1"></div></body></html>

上面的代码呈现如下:

repeating-radial-gradient()

CSS Outline轮廓

轮廓是边界的替代。

轮廓线是围绕边框外的元素绘制的线。

+-------------------------------------+|   Outline                           |  |   +-----------------------------+   ||   |Border                       |   ||   |   +--------------------+    |   ||   |   |Padding             |    |   ||   |   |  +--------------+  |    |   ||   |   |  |Content       |  |    |   ||   |   |  |              |  |    |   ||   |   |  +--------------+  |    |   ||   |   |                    |    |   ||   |   +--------------------+    |   ||   |                             |   ||   +-----------------------------+   ||                                     |+-------------------------------------+

我们可以用样式,颜色和宽度来设计轮廓。

outline 属性与 border 属性不同:outline不是元素尺寸的一部分,元素的总宽度和高度不受轮廓宽度的影响。

轮廓不被视为页面的一部分,因此在应用它们时不会导致页面布局被调整。

以下列表描述了与轮廓相关的元素。

  • outline-color
    设置轮廓的颜色
    Value: color
  • outline-offset
    设置轮廓的偏移量。
    Value:length
  • outline-style
    设置轮廓的样式。
    此值与border-style属性的值相同。
  • outline-width
    设置轮廓的宽度。
    Value:thin or medium or thick or length
  • outline
    简写属性在单个声明中设置轮廓。
    Value: color style width

轮廓样式

outline-style 属性指定轮廓的样式。

下表列出了outline-style的可能值。

描述
none没有轮廓。 这是默认值
hidden隐藏轮廓
dotted点状轮廓
dashed虚线轮廓
solid实线轮廓
double双轮廓
groove一个3D槽轮廓。 效果取决于轮廓颜色值
ridge3D垄状轮廓。 效果取决于轮廓颜色值
inset3D inset 轮廓。 效果取决于轮廓颜色值
outset3D outset 轮廓。 效果取决于轮廓颜色值
initial将此属性设置为其默认值。
inherit从其父元素继承此属性。

仅当指定了!DOCTYPE时,IE8才支持轮廓属性。

以下代码显示如何使用轮廓样式。

p.dotted {outline-style: dotted;}p.dashed {outline-style: dashed;}p.solid {outline-style: solid;}p.double {outline-style: double;}p.groove {outline-style: groove;}p.ridge {outline-style: ridge;}p.inset {outline-style: inset;}p.outset {outline-style: outset;}

轮廓颜色

outline-color 属性设置轮廓的颜色。

p {    outline-style: dotted;    outline-color: #00ff00;}

轮廓宽度

outline-width 设置轮廓的宽度。

描述
medium中等轮廓。这是默认值
thin细轮廓
thick粗轮廓
length允许您定义轮廓的粗细
initial将此属性设置为其默认值。
inherit从其父元素继承此属性。

以下代码设置轮廓宽度。

p {    outline-style: dotted;    outline-width: 5px;}

轮廓快捷方式

outline 简写属性在一个声明中设置所有轮廓属性。

简写属性具有以下语法:

outline: outline-color, outline-style, outline-width
<!DOCTYPE html><html><head><style>p {    border: 1px solid red;    outline: green dotted thick;}</style></head><body><p>This is a test</p></body></html>
属性 描述 CSS
outline-color设置轮廓颜色3
outline-offset设置轮廓偏移3
outline-style设置轮廓样式3
outline-width设置轮廓宽度3
outline轮廓的简写属性3


CSS 单位

若您想让某个 HTML 元素在指定窗口显示出您所期望的样子,那么需要您为它设置 CSS 属性并为该属性指定一个具体的数值和单位,例如 ​width​ 属性,​font-size​ 属性。


CSS 中定义了两种长度单位类型:

  1. 绝对单位( absolute )
  2. 相对单位( relative )


以下代码在属性中设置测量单位:

<!DOCTYPE HTML><html><head><style type="text/css">p  {    background: grey;    color:white;    width: 5cm;    font-size:  20pt;}</style></head><body>   <p>this is a test.</p></body></html>

要指定长度,请将数字和单位标识符连接在一起。

在上面的代码中,width 属性为 5cm 。 font-size (字体大小)属性为 20pt

    绝对长度

    这些单位是现实世界的测量单位。比如千米、米、厘米、毫米这样固定的单位就被称为绝对单位。 


    CSS 支持五种类型的绝对单位。

    单位标识符描述
    in英寸
    cm厘米
    mm毫米
    pt点或磅 (1 点 = 1/72 英寸)
    pc12点活字 (1 pc = 12 pt)

    您可以在样式中混合和匹配单位,也可以混合绝对和相对单位。

    您可以混合和匹配单位。

    <!DOCTYPE HTML> <html>     <head>         <style>         p {             width: 5cm;             font-size: 20pt;         }         </style>     </head>     <body>         <p>I like <span>HTML</span> and CSS. www.w3cschool.cn</p>     </body> </html>


    注:
    • 绝对单位在网页中很少使用,但在一些特殊场合使用绝对单位来解决问题还是很有必要的。

    相对长度

    相对单位会根据一个不固定的参照值来测量决定显示结果。比如:


    Snipaste_2020-07-02_10-50-51

    Snipaste_2020-07-02_10-51-12


    可以看到相对单位 ​%​ 根据父元素(蓝绿色框框)的宽决定了子元素的显示结果。而相对单位 ​px​ 保持不变。


    CSS 定义了大范围的相对测量。

    下表显示了 CSS 在主流浏览器中定义和支持的相对单位。

    单位标识符描述
    em相对于元素的字体大小
    ex相对于元素字体的“x-height”
    rem相对于根元素的字体大小
    px许多 CSS 像素(假定在 96dpi 显示器上)
    %另一个属性的值的百分比

    在以下示例中,height 属性的值为 ​2em​。 ​2em​ 意味着​p​元素的高度是字体大小的两倍。

    <!DOCTYPE HTML> <html>     <head>         <style>         p {             font-size: 15pt;             height: 2em;         }         </style>     </head>     <body>         <a href="https://www.w3cschool.cn">Visit the website</a>         <p>I like <span>HTML</span> and CSS.</p>         <p style="font-size:12pt">Font size 12pt.</p>     </body> </html>


    例子

    以下代码显示如何比较英寸和像素中的高度设置。

    <html><head><title>Pixels to Inches</title><style type="text/css">div {  background: #000;  border: 1px solid rgb(128, 128, 128);  color: white;  font: 9px monospace;  margin: 15px;  text-align: center;}div#inches {  width: 1in;  height: 1in;}div#pixels {  width: 96px;  height: 96px;}</style></head><body>  <div id="inches">&lt;-- 1 Inch --&gt;</div>  <div id="pixels">&lt;-- 96 Pixels --&gt;</div></body></html>


    像素值

    一个容易设置的长度是使用像素值。1 像素是 1/96 英寸。以下代码设置字体大小和宽度的像素值。

    <!DOCTYPE HTML> <html>     <head>         <style type="text/css">         p {             background: grey;             color:white;             font-size: 20px;             width: 200px;         }         </style>     </head>     <body>         <a href="https://www.w3cschool.cn">Visit the website</a>         <p>I like <span>HTML</span> and CSS.</p>     </body> </html>


    百分比值

    您可以将度量单位表示为另一个属性值的百分比。您可以使用 %(百分比)单位。

    <!DOCTYPE HTML> <html>     <head>         <style type="text/css">         p {             background: grey;             color:white;             font-size: 200%;             width: 50%;         }         </style>     </head>     <body>         <a href="https://www.w3cschool.cn">Visit the website</a>         <p>I like <span>HTML</span> and CSS.</p>     </body> </html>

    百分比值的一个很好的功能是,当您调整浏览器窗口的大小时,值正在更新。


    相对于字体大小

    以下代码使用相对单位。

    <!DOCTYPE HTML><html><head><style type="text/css">p  {    background: grey;    color:white;    font-size:  15pt;    height: 2em;}</style></head><body>    <p>This is a test.</p>    <p style="font-size:12pt">This is another test.</p></body></html>

    上面的代码将height属性设置为 2em ,这意味着 p元素的高度是字体大小的两倍。

    第一个 p 元素的字体大小为15pt。第二个 p 元素的 ​font-size​ 为12pt。


    派生自其他相对值

    您可以使用相对单位来表示另一个相对度量的倍数。

    以下示例显示 height 属性以 em 单位表示。 em 单位派生自​ font-size​ 属性的值,其使用 rem 单位表示。

    <!DOCTYPE HTML><html><head><style type="text/css">html  {    font-size: 0.2in;}p  {    background: grey;    color:white;    font-size:  2rem;    height: 2em;}</style></head><body style="font-size:14pt">   <a href="https://www.w3cschool.cn">website</a>   <p>This is a test.</p>   <a href="https://w3.org" rel="external nofollow" target="_blank"  rel="external nofollow" target="_blank" >W3C</a></body></html>

    上述示例分配的绝对字体大小为 0.2 英寸。

    rem 单位是相对于字体大小的 HTML 元素,也称为根元素。

    font-size​ 值 2rem 意味着字体大小将是根元素字体 0.4 英寸的大小的两倍。

    相同样式中的 ​height​ 属性被指定为 ​2em​,这是再次的两倍。这意味着浏览器将使用高度为0.4英寸的字体显示 ​p​ 元素,并且整体元素将为 0.8 英寸高。

    另一个与字体相关的相对单位是 ex 1ex 大约为 0.5em


    像素

    主流浏览器将 1 个像素视为 1/96 英寸。

    下面的代码演示了如何指定 CSS 样式中的像素。

    <!DOCTYPE HTML><html><head><style type="text/css">p  {    background: grey;    color:white;    font-size:  20px;    width:  200px;}</style></head><body>   <p>This is a test.</p></body></html>

    px 单位更灵活。你只需要改变字体的大小,其余的风格无缝地工作。


    百分比

    您可以将度量单位表示为另一个属性值的百分比。

    您可以使用%(百分比)单位。

    以下代码将单位表示为另一个属性值的百分比。

    <!DOCTYPE HTML><html><head><style type="text/css">p {    background: grey;    color:white;    font-size: 200%;    width: 50%;}</style></head><body>    <a href="https://www.w3cschool.cn">website</a>    <p>this is a test.</p>    <a href="https://w3.org" rel="external nofollow" target="_blank"  rel="external nofollow" target="_blank" >W3C</a></body></html>