CSS概述

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

2、样式定义如何显示 HTML 元素

3、样式通常存储在样式表中

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

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

6、外部样式表通常存储在 CSS 文件中

7、多个样式定义可层叠为一

用途

1、HTML标签原本被设计为用于定义文档内容。通过使用<h1>、<p>、<table>这样的标签,HTML的初衷是表达“这是标题”、“这是段落”、“这是表格”之类的信息。同时文档布局由浏览器来完成,而不使用任何的格式化标签。由于两种主要的浏览器(Netscape 和 Internet Explorer)不断地将新的HTML标签和属性(比如字体标签和颜色属性)添加到HTML规范中,创建文档内容清晰地独立于文档表现层的站点变得越来越困难。因此为了解决这个问题,所有的主流浏览器均支持层叠样式表

2、样式表定义如何显示HTML元素,样式通常保存在外部的.css文件中。通过仅仅编辑一个简单的CSS文档,外部样式表使你有能力同时改变站点中所有页面的布局和外观

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

层叠次序

一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字4拥有最高的优先权
1、浏览器缺省设置

2、外部样式表

3、内部样式表(位于<head>标签内部)

4、内联样式(在HTML元素内部)

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

CSS基础语法

CSS规则由两个主要的部分构成:选择器,以及一条或多条声明(这种是写在head标签中的格式)

selector {declaration1; declaration2; ... declarationN }

注:
1、选择器通常是您需要改变样式的HTML元素

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

3、属性是您希望设置的样式属性:每个属性有一个值。属性和值被冒号分开selector {property: value}

4、请使用花括号来包围声明

例1:

h1 {color:red; font-size:14px;}

注:如果值为若干单词,则要给值加引号,如p {font-family: "sans serif";}

多重声明

1、如果要定义不止一个声明,则需要用分号将每个声明分开

2、最后一条声明后是不需要加分号的,只是通常大家都会在每条声明的末尾都加上分号(包括末尾的声明后)

3、应该在每行只描述一个属性,这样可以增强样式定义的可读性,如:

例2:

p {
  text-align: center;
  color: black;
  font-family: arial;
}

 

 

空格和大小写

1、大多数样式表包含不止一条规则,而大多数规则包含不止一个声明。多重声明和空格的使用使得样式表更容易被编辑

2、是否包含空格不会影响CSS在浏览器的工作效果

3、CSS对大小写不敏感。不过存在一个例外:如果涉及到与HTML文档一起工作的话,class和id名称对大小写是敏感的

例3:

body {
  color: #000;
  background: #fff;
  margin: 0;
  padding: 0;
  font-family: Georgia, Palatino, serif;
  }

内部样式表

1、在<head>标签对中通过<style>标签定义内部样式表,并为<style>标签增加属性type="text/css"

2、在<head>标签中可以对整个HTML文档中的标签对进行样式设置(<style>标签对),格式为:标签名{属性:属性值;}


内联样式

1、需要对某个标签对设置样式时,可以使用内联样式,格式为:标签名 style="属性:属性值;" (在开始标签中设置样式属性)

2、当设置了内部样式表但未设置内联样式时,就使用的是内部样式表;当设置了内部样式表且设置了内联样式时,就使用的是内联样式

例4:

<html>
<head>
<meta charset="utf-8">
<style type="text/css">
    p{background-color: gray; padding: 20px;}
</style>
</head>

<body>
<p style="background-color: red">这是段落</p>
<p class="no2">这个段落设置了内边距。</p>
</body>

</html>


CSS高级语法

选择器的分组

你可以对选择器进行分组,这样被分组的选择器就可以分享相同的声明。用逗号将需要分组的选择器分开

例5:

<html>
<head>
<style type="text/css">
    h1,h2,h3,h4,h5,h6,p{color: green;}
</style>
</head>
<body>
<h1>这是标题 1</h1>
<h2>这是标题 2</h2>
<h6>这是标题 2</h6>
<p>这是段落</p>
</body>
</html>

继承

根据CSS语法规则子元素将从父元素继承属性

例6:

<html>
<head>
<style type="text/css">
    body {
     font-family: Verdana, sans-serif;
     color: green;
     }
</style>
</head>
<body>
<h1>这是一个标题</h1>
<p class="normal">这是一个段落</p>
<p class="italic">这是一个段落</p>

<ol style="color: red";>
    <li>Apples</li>
    <li>Bananas</li>
    <li>Lemons</li>
    <li>Oranges</li>
</ol>
</body>
</html>

注:
1、上面例子中:我们只是对body标签对进行了属性设置,未对其子标签(元素:h1、p)设置属性,但根据输出结果可以看出其子标签也使用(继承)了父标签的属性

2、通过CSS继承,子元素将继承最高级元素(在本例中是body)所拥有的属性。不需要另外的规则,所有 body 的子元素都应该显示 Verdana 字体,子元素的子元素也一样。并且在大部分的现代浏览器中,也确实是这样的。

3、这些子元素诸如p, td, ul, ol, ul, li, dl, dt,和dd也会继承父元素的样式

4、如果不希望子元素继承父元素的样式,则可以对子元素设置特定的样式

例6_1:

<html>
<head>
<style type="text/css">
    body {
     font-family: Verdana, sans-serif;
     color: green;
     }
    p.italic {font-style:oblique;
                color: blue;
                }
</style>
</head>
<body>
<h1>这是一个标题</h1>
<p class="normal">这是一个段落</p>
<p class="italic">这是一个段落</p>

<ol style="color: red";>
    <li>Apples</li>
    <li>Bananas</li>
    <li>Lemons</li>
    <li style="color: green";>Oranges</li>
</ol>
</body>
</html>

如何插入样式表

当读到一个样式表时,浏览器会根据它来格式化HTML文档。插入样式表的方法有三种:

外部样式表

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

例7:

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

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

2、外部样式表应用于多个HTML文档,对于某个HTML而言它是作用于整个HTML文档的(把内部样式写在了一个外部文档里面,只是声明方式不一样?)

3、外部样式表可以在任何文本编辑器中进行编辑。文件不能包含任何的html标签。样式表应该以.css扩展名进行保存

4、link 元素是空元素,它仅包含属性

5、此元素只能存在于head部分,不过它可出现任何次数

例7_1:

body {background-image: url("images/back40.gif");}
hr {color: sienna;}
p {margin-left: 20px;}

注:
不要在属性值与单位之间留有空格。假如将"margin-left: 20px" 写成了"argin-left: 20 px",它可能在在Mozilla/Firefox中却无法正常工作

 


内部样式表

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

例8:

<head>
<style type="text/css">
  hr {color: sienna;}
  p {margin-left: 20px;}
  body {background-image: url("images/back40.gif");}
</style>
</head>

 

 

内联样式

由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。要使用内联样式,需要在相关的标签内使用样式(style)属性。Style属性可以包含任何CSS属性

例9:

<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>

 

 

多重样式

如果某些属性在不同的样式表中被同样的选择器定义,那么属性值将从更具体的样式表中被继承过来,优先级为内联->内部->外部

例10:

外部样式表拥有针对 h3 选择器的三个属性:

<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>

而内部样式表拥有针对 h3 选择器的两个属性

h3 {
  text-align: right;
  font-size: 20pt;
  }

假如拥有内部样式表的这个页面同时与外部样式表链接,那么h3得到的样式是:

color: red;
text-align: right;
font-size: 20pt;

 

 

派生选择器

1、通过依据元素在其位置的上下文关系来定义样式;在CSS1中,通过这种方式来应用规则的选择器被称为上下文选择器,这是由于它们依赖于上下文关系来应用或者避免某项规则

2、派生选择器允许你根据文档的上下文关系来确定某个标签的样式。通过合理地使用派生选择器,我们可以使 HTML 代码变得更加整洁

例7:希望列表中的strong元素变为斜体字,而不是通常的粗体字

<html>
<head>
<style type="text/css">
    li strong {
    font-style: italic;
    font-weight: normal;
  }
</style>
</head>
<body>
<p>
    <strong>我是粗体字,不是斜体字,因为我不在列表当中,所以这个规则对我不起作用</strong>
</p>

<ol>
    <li>
        <strong>我是斜体字。这是因为 strong 元素位于 li 元素内。</strong>
    </li>
    <li>我是正常的字体。</li>
</ol>
</body>
</html>

注:
1、首先看在定义样式时的定义方法:li strong表示li标签下的strong,即需要满足这两个条件才会生效

2、上面的例子中,只有li元素中的strong元素的样式为斜体字,无需为strong元素定义特别的class或id

例7_1:

<html>
<head>
<style type="text/css">
    strong {
         color: red;
         }

    h2 {
         color: red;
         }

    h2 strong {
         color: blue;
        }
</style>
</head>
<body>
<p>The strongly emphasized word in this paragraph is<strong>red</strong>.</p>
<h2>This subhead is also red.</h2>
<h2>The strongly emphasized word in this subhead is<strong>blue</strong>.</h2>
</body>
</html>
 
 
 
02-10 09:34