CSS基础

CSS 概述

        层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等

文件样式的计算机语言。

        CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表

现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对

象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS能够根据不

同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。

       关于CSS概述总结了7点:

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

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

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

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

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

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

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

       CSS的出现解决了很多HTML的问题:

       一样式解决了一个普遍的问题

       HTML 标签原本被设计为用于定义文档内容。通过使用 <h1><p><table> 这样的标签,HTML 的初衷是表

这是标题这是段落这是表格之类的信息。同时文档布局由浏览器来完成,而不使用任何的格式化标签。

由于两种主要的浏览器(Netscape Internet Explorer)不断地将新的 HTML 标签和属性(比如字体标签和颜色属

性)添加到 HTML 规范中,创建文档内容清晰地独立于文档表现层的站点变得越来越困难。

       为了解决这个问题,万维网联盟(W3C),这个非营利的标准化联盟,肩负起了 HTML 标准化的使命,并在

 HTML 4.0 之外创造出样式(Style)。所有的主流浏览器均支持层叠样式表。

       二样式表极大地提高了工作效率

       样式表定义如何显示 HTML 元素,就像 HTML 3.2 的字体标签和颜色属性所起的作用那样。样式通常保存在外部

.css 文件中。通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面的布局和外

观。
       
由于允许同时控制多重页面的样式和布局,CSS 可以称得上Web设计领域的一个突破。作为网站开发者,你能够

为每个 HTML 元素定义样式,并将之应用于你希望的任意多的页面中。如需进行全局的更新,只需简单地改变样式,

然后网站中的所有元素均会自动地更新。

       三多重样式将层叠为一个

       样式表允许以多种方式规定样式信息。样式可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在一

个外部的 CSS 文件中。甚至可以在同一个 HTML 文档内部引用多个外部样式表。

       层叠次序

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

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

       1浏览器缺省设置

       2外部样式表

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

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

       因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明:<head> 标签

中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。

        说了这么多我们可以简单的见识一下CSS的背景色的效果:

[html] view plaincopyprint?

1.  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2.  <html xmlns="http://www.w3.org/1999/xhtml">  

3.  <head>  

4.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  

5.  <title>CSS背景色演示</title>  

6.  <style type="text/css">  

7.    

8.  body {background-color: yellow}  

9.  h1 {background-color: #00ff00}  

10. h2 {background-color: transparent}  

11. p {background-color: rgb(250,0,255)}  

12.   

13. p.no2 {background-color: gray; padding: 20px;}  

14.   

15. </style>  

16. </head>  

17.   

18. <body>  

19. <h1>这是标题 1</h1>  

20. <h2>这是标题 2</h2>  

21. <p>这是段落</p>  

22. <p class="no2">这个段落设置了内边距。</p>  

23. </body>  

24. </html>  

        运行结果为:

 

 

 

说到底如何创建CSS,就是要说HTMLCSS以怎样的方式结合?如何插入样式表,这是HTMLCSS结合最重

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

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

        style属性方式(内联样式)

        利用标签中的style属性来改变每个标签的显示样式。每一个HTML标签中都有style样式属性,该属性的值就是

CSS语言代码。下面简单的说明一下:

[html] view plaincopyprint?

1.  <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2.  <html xmlns="http://www.w3.org/1999/xhtml">  

3.  <head>  

4.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  

5.  <title>HTML与CSS结合一</title>  

6.  </head>  

7.    

8.  <body style="background-image:url(../Documents/我的第一个网站/4.jpg)">  

9.         <p style="background-color:#FF0000;color:#FFFFFF">这是一个段落1</p>  

10.        <p style="color:#FF0000;margin-left:20px">这是一个段落2</p>  

11.        <hr style="color:sienna"/>  

12.        <p style="color:#FF0000;margin-left:20px">这是一个段落3</p>  

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

14. </body>  

15. </html></span>  

       显示的结果为: 

       该方式比较灵活,但是对于多个相同标签的同一样式比较麻烦,适合局部修改。由于要将表现和内容混杂在一

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

联样式,你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。

       style标签方式

       <head>标签中加入<style>标签,对多个标签进行统一修改。

[html] view plaincopyprint?

1.  <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2.  <html xmlns="http://www.w3.org/1999/xhtml">  

3.  <head>  

4.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  

5.  <title>HTML与CSS结合二</title>  

6.  <style type="text/css">  

7.  body {background-image:url(../Documents/我的第一个网站/4.jpg)  

8.  }  

9.  p {color:#FF0000;  

10. margin-left:20px;  

11. }  

12. hr{color:sienna;  

13. }  

14. </style>  

15. </head>  

16.   

17. <body>  

18.         <p style="background-color:#FF0000;color:#FFFFFF">这是一个段落1</p>  

19.        <p>这是一个段落2</p>  

20.        <hr/>  

21.        <p>这是一个段落3</p>  

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

23. </body>  

24. </html></span>  

      显示的结果为:

       该方式可以对单个页面的样式进行统一设置,但对于局部不够灵活。

       三内部样式表

       当单个文档需要特殊的样式时,就应该使用内部样式表。这个也需要在<style>标签内完成,只是HTML语言和

CSS语言就不在同一个文档内,需要独立出CSS文件。将网页显示的内容和样式真正分离,HTML主要负责网页显示

的内容,CSS层叠样式表主要负责网页的样式显示。

       HTML代码:

[html] view plaincopyprint?

1.  <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2.  <html xmlns="http://www.w3.org/1999/xhtml">  

3.  <head>  

4.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  

5.  <title>HTML与CSS结合三</title>  

6.  <style type="text/css">  

7.  @import url(4.css);  

8.  </style>  

9.  </head>  

10.   

11. <body>  

12.          

13.         <p style="background-color:#FF0000;color:#FFFFFF">这是一个段落1</p>  

14.        <p>这是一个段落2</p>  

15.        <hr/>  

16.        <p>这是一个段落3</p>  

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

18. </body>  

19. </html></span>  

       CSS代码(4.css)

[css] view plaincopyprint?

1.  <span style="font-size:18px;">/* CSS Document */  

2.  body {background-image:url(../Documents/我的第一个网站/4.jpg)  

3.  }  

4.  p {color:#FF0000;  

5.  margin-left:20px;  

6.  }  

7.  hr{color:sienna;  

8.  }</span>  

      运行的结果为:

       四外部样式表

        对于第三种结合方式还是有一定的缺点,如果要对整个网页进行分区域的样式显示,也会造成大量的代码输入,

很麻烦。这就出现了第四种结合方式——外部样式表。

       先来说明一下为何出现这种目前最流行的结合方式。

       HTML代码:

[html] view plaincopyprint?

1.  <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2.  <html xmlns="http://www.w3.org/1999/xhtml">  

3.  <head>  

4.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  

5.  <title></title>  

6.  <style type="text/css">  

7.  @import url(4.css);  

8.  @import url(5.css);  

9.  @import url(6.css);  

10. </style>  

11. </head>  

12.   

13. <body>  

14.            

15.         <p style="background-color:#FF0000;color:#FFFFFF">这是一个段落1</p>  

16.        <p>这是一个段落2</p>  

17.        <hr/>  

18.        <p>这是一个段落3</p>  

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

20.         <div>这是一个div区域1</div>  

21.        <div>这是一个div区域2</div>  

22.        <span>这是一个span区域1</span>  

23.        <span>这是一个span区域2</span>  

24. </body>  

25. </html></span>  

       CSS代码(5.css6.css)

[html] view plaincopyprint?

1.  /* CSS Document */  

2.  div {background-color:#0000FF;  

3.  color:#FFFF00;  

4.  }  

[css] view plaincopyprint?

1.  /* CSS Document */  

2.  span {background-color:#00FFFF;  

3.  color:#FF0000;  

4.  }  

       如果大量的增加CSS文件,在style标签内也会引入大量的CSS文件。如果可以把这些CSS文件整合在一个CSS

文件中,也是可以的。 

[css] view plaincopyprint?

1.  <span style="font-size:18px;"><span style="font-size:18px;">/* CSS Document */  

2.  @import url(4.css);  

3.  @import url(5.css);  

4.  @import url(6.css);</span></span>  

       CSS代码:

[css] view plaincopyprint?

1.  <span style="font-size:18px;">/* CSS Document */  

2.  body {background-image:url(../Documents/我的第一个网站/4.jpg)  

3.  }  

4.  p {color:#FF0000;  

5.  margin-left:20px;  

6.  }  

7.  hr{color:sienna;  

8.  }  

9.    

10. div {background-color:#0000FF;  

11. color:#FFFF00;  

12. }  

13. span {background-color:#00FFFF;  

14. color:#FF0000;  

15. }</span>  

       在进行在style标签内引入:<styletype="text/css">
                                                 @import url(7.css);
                                                 </style>

        运行的结果完全相同。

        还有就是利用link标签引入CSS文件,这就是所要说的第四种结合方式,也是我们最常用的方式,HTML文件和

CSS文件分开进行写入,最后在HTML中利用link标签引入CSS文件。运行的结果完全一样。

[html] view plaincopyprint?

1.  <span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2.  <html xmlns="http://www.w3.org/1999/xhtml">  

3.  <head>  

4.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  

5.  <title>HTML与CSS结合四</title>  

6.  <link rel="stylesheet" href="7.css" type="text/css" />  

7.  </head>  

8.    

9.  <body>  

10.         <p style="background-color:#FF0000;color:#FFFFFF">这是一个段落1</p>  

11.        <p>这是一个段落2</p>  

12.        <hr/>  

13.        <p>这是一个段落3</p>  

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

15.         <div>这是一个div区域1</div>  

16.        <div>这是一个div区域2</div>  

17.        <span>这是一个span区域1</span>  

18.        <span>这是一个span区域2</span>  

19. </body>  

20. </html></span>  

        当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一

个文件来改变整个站点的外观。每个页面使用 <link> 标签链接到样式表。<link> 标签在(文档的)头部。外部样式表

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

       最后一个问题也很重要,必须理解:

       多重样式

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

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

       总而言之,一般原则由上而下,由外到内,由低级到高级。但也有例外

 CSS语法分为基础语法和高级语法。

        CSS 基础语法

        (1)CSS 语法

        CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明,请使用花括号来包围声明。

        selector{declaration1; declaration2; ... declarationN }

        选择器通常是您需要改变样式的 HTML 元素。每条声明由一个属性和一个值组成。属性(property)是您希望设

置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。

        selector{property: value}

       下面这行代码的作用是将 h1 元素内的文字颜色定义为红色,同时将字体大小设置为 14 像素。在这个例子中,h1

 是选择器,color font-size 是属性,red 14px 是值。

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

      下面的示意图为您展示了上面这段代码的结构:

        选择器:告诉浏览器你要改变哪个DOM元素的样式;声明:告诉浏览器DOM元素要变成什么样式。值:告诉浏览器改变某个样式的具体量。

        (2)值的不同写法和单位

       除了英文单词 red,我们还可以使用十六进制的颜色值 #ff0000

        p { color:#ff0000; }

       为了节约字节,我们可以使用 CSS 的缩写形式:

        p { color:#f00; }

        我们还可以通过两种方法使用 RGB 值:

        p { color:rgb(255,0,0); }

        p { color:rgb(100%,0%,0%); }

       请注意,当使用 RGB 百分比时,即使当值为 0 时也要写百分比符号。但是在其他的情况下就不需要这么做了。

比如说,当尺寸为 0 像素时,0 之后不需要使用 px 单位,因为 0 就是 0,无论单位是什么。

       (3)记得写引号

       如果值为若干单词,则要给值加引号:

       p{font-family: "sans serif";}

       (4)多重声明:

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

       下面的例子展示出如何定义一个红色文字的居中段落。最后一条规则是不需要加分号的,因为分号在英语中是一

个分隔符号,不是结束符号。然而,大多数有经验的设计师会在每条声明的末尾都加上分号,这么的好处是,当你从

现有的规则中增减声明时,会尽可能的减少出错的可能性。就像这样:

       p{text-align:center; color:red;}
       
你应该在每行只描述一个属性,这样可以增强样式定义的可读性,就像这样:

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

        (5)空格和大小写

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

编辑:

        body {
                    color: #000;
                    background: #fff;
                     margin:0;
                    padding: 0;
                    font-family: Georgia, Palatino, serif;
                 }
       
是否包含空格不会影响 CSS 在浏览器的工作效果,同样,与 XHTML 不同,CSS 对大小写不敏感。不过存在一

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

        CSS 高级语法

        (1)选择器的分组

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

下面的例子中,我们对所有的标题元素进行了分组。所有的标题元素都是绿色的。

       h1,h2,h3,h4,h5,h6 {

         color:green;
        }

       (2)继承及其问题

       根据 CSS,子元素从父元素继承属性。但是它并不总是按此方式工作。看看下面这条规则:
        body {
         font-family: Verdana, sans-serif;
        }

       根据上面这条规则,站点的 body 元素将使用 Verdana 字体(假如访问者的系统中存在该字体的话)。通过 CSS

 继承,子元素将继承最高级元素(在本例中是 body)所拥有的属性(这些子元素诸如 p, td, ul, ol, ul, li, dl, dt,

 dd)。不需要另外的规则,所有 body 的子元素都应该显示 Verdana 字体,子元素的子元素也一样。并且在大部分的

现代浏览器中,也确实是这样的。

       但是在那个浏览器大战的血腥年代里,这种情况就未必会发生,那时候对标准的支持并不是企业的优先选择。比

方说,Netscape 4 就不支持继承,它不仅忽略继承,而且也忽略应用于 body 元素的规则。IE/Windows 直到 IE6

存在相关的问题,在表格内的字体样式会被忽略。我们又该如何是好呢?

       (3)友善地对待Netscape 4

       幸运地是,你可以通过使用我们称为 "Be Kind to Netscape 4" 冗余法则来处理旧式浏览器无法理解继承的问

题。
        body  {
             font-family: Verdana,sans-serif;
        }

 

       p, td, ul,ol, li, dl, dt, dd  {
            font-family: Verdana, sans-serif;
        }

       4.0 浏览器无法理解继承,不过他们可以理解组选择器。这么做虽然会浪费一些用户的带宽,但是如果需要对

 Netscape 4 用户进行支持,就不得不这么做。

        (4)继承是一个诅咒吗?

        如果你不希望 "Verdana, sans-serif" 字体被所有的子元素继承,又该怎么做呢?比方说,你希望段落的字体是

 Times。没问题。创建一个针对 p 的特殊规则,这样它就会摆脱父元素的规则:

       body  {
           font-family: Verdana, sans-serif;
       }
      td, ul, ol, ul, li, dl, dt, dd  {
          font-family: Verdana, sans-serif;
       }
       p  {
         font-family: Times, "Times NewRoman", serif;
       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值