python学习笔记-Day13 -css基础知识

CSS 概述
CSS 指层叠样式表 (Cascading Style Sheets),用于定义如何显示 HTML 标签,进行美化页面,css通常存储在样式表中。


css有三种存在方式

标签内联、页面嵌入和外部引入,比较三种方式的优缺点。

    在标签中使用 style='xx:xxx;'
    在页面中嵌入 < style type="text/css"> </style > 块
    引入外部css文件


注意:

当有多个css对同一个标签的的样式进行定义的时候,会按如下的顺序进行加载,越靠后,优先级越高。

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

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


基础语法:

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

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

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 单位,因为 0 就是 0,无论单位是什么。


注意写引号

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

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


多重声明:

提示:如果要定义不止一个声明,则需要用分号将每个声明分开。下面的例子展示出如何定义一个红 色文字的居中段落。最后一条规则是不需要加分号的,因为分号在英语中是一个分隔符号,不是结束符号。然而,大多数有经验的设计师会在每条声明的末尾都加上 分号,这么做的好处是,当你从现有的规则中增减声明时,会尽可能地减少出错的可能性。就像这样:

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

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

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


空格和大小写:

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

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

是否包含空格不会影响 CSS 在浏览器的工作效果,同样,与 XHTML 不同,CSS 对大小写不敏感。不过存在一个例外:如果涉及到与 HTML 文档一起工作的话,class 和 id 名称对大小写是敏感的。


选择器的分组

你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。用逗号将需要分组的选择器分开。在下面的例子中,我们对所有的标题标签进行了分组。所有的标题标签都是绿色的。

h1,h2,h3,h4,h5,h6 {
  color: green;
  }

继承及其问题

根据 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 还存在相关的问题,在表格内的字体样式会被忽略。我们又该如何是好呢?

如果你不希望 "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 New Roman", serif;
     }



CSS 标签选择器

最常见的 CSS 选择器是标签选择器。换句话说,文档的标签就是最基本的选择器。

如果设置 HTML 的样式,选择器通常将是某个 HTML 标签,比如 p、h1、em、a,甚至可以是 html 本身:

html {color:black;}
h1 {color:blue;}
h2 {color:silver;}

可以将某个样式从一个标签切换到另一个标签。

假设您决定将上面的段落文本(而不是 h1 标签)设置为灰色。只需要把 h1 选择器改为 p:

html {color:black;}p {color:gray;}h2 {color:silver;}

类型选择器

在 W3C 标准中,标签选择器又称为类型选择器(type selector)。

“类型选择器匹配文档语言标签类型的名称。类型选择器匹配文档树中该标签类型的每一个实例。”

下面的规则匹配文档树中所有 h1 标签:

h1 {font-family: sans-serif;}

因此,我们也可以为 XML 文档中的标签设置样式:

XML 文档:

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/css" href="note.css"?><note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

CSS 文档:

note
  {
  font-family:Verdana, Arial;
  margin-left:30px;
  }
to
  {
  font-size:28px;
  display: block;
  }
from
  {
  font-size:28px;
  display: block;
  }
heading
  {
  color: red;
  font-size:60px;
  display: block;
  }
body
  {
  color: blue;
  font-size:35px;
  display: block;
  }



CSS类选择器

类选择器允许以一种独立于文档标签的方式来指定样式。

该选择器可以单独使用,也可以与其他标签结合使用。

提示:只有适当地标记文档后,才能使用这些选择器,所以使用这两种选择器通常需要先做一些构想和计划。

要应用样式而不考虑具体设计的标签,最常用的方法就是使用类选择器。

修改HTML代码

在使用类选择器之前,需要修改具体的文档标记,以便类选择器正常工作。

为了将类选择器的样式与标签关联,必须将 class指定为一个适当的值。请看下面的HTML代码:

<h1
class="important">
This
heading is very important.
</h1>
<p
class="important">
This
paragraph is very important.
</p>

在上面的代码中,两个标签的 class都指定为 important:第一个标题(h1标签),第二个段落(p标签)。

语法

然后我们使用以下语法向这些归类的标签应用样式,即类名前有一个点号(.),然后结合通配选择器:

*.important
{color:red;}

如果您只想选择所有类名相同的标签,可以在类选择器中忽略通配选择器,这没有任何不好的影响:

.important
{color:red;}
结合标签选择器

类选择器可以结合标签选择器来使用。

例如,您可能希望只有段落显示为红色文本:

p.important
{color:red;}

选择器现在会匹配 class属性包含 important的所有 p标签,但是其他任何类型的标签都不匹配,不论是否有此class属性。选择器 p.important解释为:“其 class属性值为 important的所有段落”。 因为 h1标签不是段落,这个规则的选择器与之不匹配,因此h1标签不会变成红色文本。

如果你确实希望为 h1标签指定不同的样式,可以使用选择器h1.important

p.important
{color:red;}
h1.important
{color:blue;}
CSS多类选择器

在上一节中,我们处理了 class值中包含一个词的情况。在 HTML中,一个 class值中可能包含一个词列表,各个词之间用空格分隔。例如,如果希望将一个特定的标签同时标记为重要(important)和警告(warning),就可以写作:

<p
class="important warning">
This
paragraph is a very important warning.
</p>

这两个词的顺序无关紧要,写成 warning important 也可以。

我们假设 classimportant的所有标签都是粗体,而 classwarning的所有标签为斜体,class中同时包含 importantwarning的所有标签还有一个银色的背景 。就可以写作:

.important
{font-weight:bold;}
.warning
{font-style:italic;}
.important.warning
{background:silver;}

通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的标签(类名的顺序不限)。

如果一个多类选择器包含类名列表中没有的一个类名,匹配就会失败。请看下面的规则:

.important.urgent
{background:silver;}

不出所料,这个选择器将只匹配 class属性中包含词 importanturgentp标签。因此,如果一个 p标签的 class属性中只有词 importantwarning,将不能匹配。不过,它能匹配以下标签:

<p
class="important urgent warning">
This
paragraph is a very important and urgent warning.
</p>

注意:在 IE7之前的版本中,不同平台的 Internet Explorer 都不能正确地处理多类选择器。



CSS ID 选择器

在某些方面,ID选择器类似于类选择器,不过也有一些重要差别。

语法

首先,ID选择器前面有一个 #-也称为棋盘号或井号。

请看下面的规则:

*#intro
{font-weight:bold;}

与类选择器一样,ID选择器中可以忽略通配选择器。前面的例子也可以写作:

#intro
{font-weight:bold;}

这个选择器的效果将是一样的。

第二个区别是 ID选择器不引用 class属性的值,毫无疑问,它要引用 id属性中的值。

以下是一个实际 ID选择器的例子:

<p
id="intro">This is a paragraph of introduction.</p>
类选择器和ID选择器的异同

在类选择器这一章中我们曾讲解过,可以为任意多个元素指定类。前一章中类名important被应用到 ph1元素,而且它还可以应用到更多元素。

区别1:只能在文档中使用一次

与类不同,在一个 HTML文档中,ID选择器会使用一次,而且仅一次。

区别2:不能使用ID词列表

不同于类选择器,ID选择器不能结合使用,因为 ID属性不允许有以空格分隔的词列表。

区别3ID能包含更多含义

类似于类,可以独立于元素来选择ID。有些情况下,您知道文档中会出现某个特定ID值,但是并不知道它会出现在哪个元素上,所以您想声明独立的ID选择器。例如,您可能知道在一个给定的文档中会有一个ID值为 mostImportant的元素。您不知道这个最重要的东西是一个段落、一个短语、一个列表项还是一个小节标题。您只知道每个文档都会有这么一个最重要的内容,它可能在任何元素 中,而且只能出现一个。在这种情况下,可以编写如下规则:

#mostImportant
{color:red; background:yellow;}

这个规则会与以下各个元素匹配(这些元素不能在同一个文档中同时出现,因为它们都有相同的ID值):

<h1
id="mostImportant">This is important!</h1>
<em
id="mostImportant">This is important!</em>
<ul
id="mostImportant">This is important!</ul>

区分大小写

请注意,类选择器和 ID选择器可能是区分大小写的。这取决于文档的语言。HTMLXHTML将类和 ID值定义为区分大小写,所以类和 ID值的大小写必须与文档中的相应值匹配。

因此,对于以下的 CSSHTML,元素不会变成粗体:

#intro
{font-weight:bold;}
<p
id="Intro">This is a paragraph of introduction.</p>

由于字母 i的大小写不同,所以选择器不会匹配上面的元素。


参考:

http://www.w3school.com.cn

http://www.cnblogs.com/wupeiqi/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章