CSS

正如我们在前一章中所解释的那样,HTML元素使网页设计者能够在文档中标记其结构。HTML规范列出了浏览器应如何显示这些元素的指南。例如,您可以合理地确定强 元素的内容将以粗体显示。此外,您几乎可以相信大多数浏览器将使用大字体大小显示h1元素的内容...至少大于p元素并且大于h2元素。但除了信任和希望之外,您无法控制文本的显示方式。

CSS改变了这一点。CSS将设计师置于驾驶员的位置。我们将本书的其余部分用于解释您可以使用CSS做些什么。在本章中,我们首先介绍如何编写样式表的基础知识,以及CSS和HTML如何协同工作来描述文档的结构和外观。

规则和样式表

要开始使用CSS,您甚至不必编写样式表。第16章将告诉您如何指向Web上的现有样式表。

有两种方法可以创建CSS。您可以使用普通文本编辑器并“手动”编写样式表,也可以使用专用工具(例如支持CSS的网页设计应用程序)。专用工具允许您在不学习CSS语言语法的情况下创建样式表。但是,在许多情况下,设计师之后会想要手动调整样式表,因此我们建议您学会手动编写和编辑CSS。让我们开始吧

H1 { color: green }

您在上面看到的是一个包含一个规则的简单CSS规则。一个规则是关于一个或多个元素的一个文体方面的发言。甲 样式表是一组适用于HTML文档的一个或多个规则。上面的规则设置所有第一级标题的颜色(h1)。让我们快速看一下规则的可视结果:


分组选择器和规则

在设计CSS时,简洁是一个目标。我们认为,如果我们可以减少样式表的大小,我们可以让设计师“手动”编写和编辑样式表。此外,短样式表比较长样式表加载速度快。因此,CSS包括几种通过对选择器和声明进行分组来缩短样式表的机制。

例如,考虑以下三个规则:

H1 { font-weight: bold }

H2 { font-weight: bold }

H3 { font-weight: bold }

所有三个规则都具有完全相同的声明 - 它们将字体设置为粗体。(这是使用font-weight属性完成的,我们在See Fonts中讨论。)由于所有三个声明都是相同的,我们可以将选择器分组为逗号分隔列表,只列出一次声明,如下所示:

H1,H2,H3 {font-style:bold}

此规则将产生与前三个相同的结果。

选择器可能有多个声明。例如,我们可以编写一个包含以下两个规则的样式表:

H1 { color: green }

H1 { text-align: center }

在这种情况下,我们将所有h1设置为绿色并以画布为中心。(这是使用text-align 属性完成的,在第5 章中讨论过 。)

但是,通过将与同一选择器相关的声明分组为以分号分隔的列表,我们可以更快地实现相同的效果,如下所示:

H1 {

  color: green;

  text-align: center;

}

所有声明都必须包含在花括号中。分号分隔声明,可以 - 但不必 - 也出现在最后一个声明的末尾。另外,为了使您的代码更易于阅读,我们建议您将每个声明放在自己的行中,就像我们在这里所做的那样。(浏览器不关心,他们只会忽略所有额外的空格和换行符。)

现在您已掌握了如何创建CSS规则和样式表的基础知识。但是,你还没有完成。为了使样式表具有任何效果,您必须将样式表“粘合”到HTML文档中。

将样式表“粘合”到文档中

对于影响HTML文档的任何样式表,必须将其“粘合”到文档中。也就是说,必须组合样式表和HTML文档,以便它们可以一起工作以呈现文档。这可以通过以下四种方式之一完成:

使用样式 元素为文档应用基本的文档范围样式表。

使用style属性将样式表应用于单个元素。

使用link元素将外部样式表链接到文档。

使用CSS @import表示法导入样式表。

在下一节中,我们将讨论第一种方法:使用样式元素。我们将讨论使用第 4 章“CSS选择器”中的style属性,并使用第16 章“ 外部样式表”中的link元素和@import表示法 。

使用STYLE元素进行粘合

通过将样式表放在文档顶部的样式元素中,可以将样式表和HTML文档粘合在一起。所述样式元件在HTML引入专门以允许HTML文档内的被插入的样式表。这是使用样式元素粘贴到示例文档的样式表(以粗体显示)。结果如图2.3 所示 。

<HTML>

  <TITLE>第二个样式页面</TITLE>

  <STYLE>

    H1, H2 { color: green }

  </STYLE>

  <BODY>

    <H1>尚学堂</H1>

    <P>课程

    <UL>

      <LI>java

      <LI>大数据

      <LI>前端

      <LI>人工智能,等

    </UL>

    <H2>历史</H2>

    <P>北京尚学堂科技有限公司是一家从事JAVA、IOS、android、hadoop大数据云计算技术开发、培训、咨询为一体的软件公司。公司由海外留学人员和国内IT精英人士创建,主要成员均拥有硕士以上学位,毕业于国内著名大学如:清华大学,北京航空航天大学等。

  </BODY>

</HTML>

向样式表添加规则以将h1变为绿色,然后使用样式元素将样式表粘贴到文档的结果。


请注意,style 元素放在title 元素之后和body元素之前。文档的标题不会显示在画布上,因此不受CSS样式的影响。

样式元素的内容是样式表。但是,当画布上出现h1,p和ul等元素 的内容时,样式元素的内容不会显示在画布上。相反,它是影响的内容的风格元素-样式表-即在画布上出现。因此,您不会在屏幕上看到“{color:green}”; 你看到两个 h1元素是绿色的。没有添加任何影响任何其他元素的规则,因此这些元素以浏览器的默认颜色显示。

浏览器和CSS

有关可用浏览器的更新概述,请参阅W3C概述页面

要使CSS按照本书中的描述工作,您必须使用CSS增强的浏览器,即支持CSS的浏览器。CSS增强型浏览器会将样式元素识别为样式表的容器,并相应地显示文档。目前分发的大多数浏览器都支持CSS,例如Microsoft Internet Explorer 4(IE4),Netscape Navigator 4(NS4)和Opera 3.5(O3.5)。保守估计表明,超过一半的网络用户使用CSS增强型浏览器,数字正在稳步上升。您与之交流的人可能拥有CSS增强的浏览器。如果没有,给他们升级的理由!

关于不同浏览器如何支持CSS的信息的最佳来源是WebReview的图标

唉,并非所有的CSS实现都是完美的。当您开始尝试样式表时,您很快就会注意到每个浏览器都带有一组错误和限制。通常,较新的浏览器比旧的浏览器表现更好。IE4和O3.5是最好的,Netscape的下一个产品 - 代号为Gecko - 也承诺大大改进了对CSS的支持。

那些不使用CSS增强浏览器的人仍然可以阅读使用样式表的页面。CSS经过精心设计,即使浏览器对CSS一无所知,所有内容仍应保持可见。某些浏览器,如Netscape的Navigator版本2和3不支持样式表,但他们对样式元素有足够的了解, 可以完全忽略它。在支持样式表旁边,这是正确的行为。

然而,其他浏览器不知道的风格元素,如Netscape的Navigator 1和Microsoft Internet Explorer 2将忽略这些 样式 的标签,但显示的 内容中的风格 元素。因此,用户将最终得到打印在画布顶部的样式表。在撰写本文时,只有百分之几的Web用户会遇到此问题。为避免这种情况,您可以将样式表放在HTML注释中,我们将在第1 章中讨论 。由于评论不会显示在屏幕上,因此通过将样式表放在HTML注释中,可以防止最旧的浏览器显示style 元素的内容。CSS增强的浏览器知道这个技巧,并将style元素的内容视为样式表。

回想一下HTML注释的开头<!--和结尾-->。以下是上一个代码示例的摘录,该示例演示了如何在HTML注释中编写样式表。注释仅包含样式元素内容:

<HTML>

  <TITLE>第二个样式页面</TITLE>

  <STYLE> <! -

      H1 {颜色:绿色}

    - >

</ STYLE>

  <BODY>

    ..

  </ BODY>

</ HTML>

CSS也有自己的一组注释,您可以在样式表中使用它们。CSS注释以“/ *”开头,以“* /”结尾。(那些熟悉C编程语言的人会认识到这些。)CSS注释中的CSS规则不会对文档的表示产生任何影响。

浏览器还需要告知您正在使用CSS样式表。CSS是目前唯一与HTML文档一起使用的样式表语言,我们不希望这种情况发生变化。对于XML,情况可能会有所不同。但就像有多种图像格式(GIF,JPEG和PNG一样),可能会有多种样式表语言。所以告诉浏览器他们正在处理CSS是一个好习惯。(事实上​​,HTML要求你。)这是使用style元素的type属性完成的。类型的值表示正在使用哪种类型的样式表。对于CSS,该值为“text / css”。以下是我们之前的示例文档的摘录,该文档向您展示了如何编写此文档(结合使用HTML注释):

<HTML>

  <TITLE>第二个样式页面</ TITLE>

  <STYLE TYPE =“text / css”>

    <! -

      H1 {颜色:绿色}

    - >

  </ STYLE>

  <BODY>

    ..

  </ BODY>

</ HTML>

当浏览器加载文档时,它会检查它是否理解样式表语言。如果是,它将尝试读取工作表,否则将忽略它。该类型属性的上式元件是一种方法,让浏览器知道正在使用哪个样式表语言。该类型属性必须被包括在内。

为了使示例更易于阅读,我们选择不在HTML注释中包装样式表,但我们在本书中使用了type属性。

树结构和继承

回忆第1 章 关于HTML的讨论,该HTML表示具有树状结构的文档以及HTML中的元素如何具有子项和父项。拥有树形结构文档的原因有很多。对于样式表,有一个很好的理由:继承。就像孩子从父母那里继承一样,HTML元素也是如此。HTML元素不是继承基因和金钱,而是继承风格属性。

让我们首先看一下示例文档:

<HTML>

  <TITLE>我的第二个样式页面</ TITLE>

  <BODY>

    <H1>尚学堂</ H1>

    北京尚学堂科技有限公司是一家从事JAVA、android、hadoop大数据云、人工智能计算技术开发、培训、咨询为一体的软件公司。

      <STRONG>行业</ STRONG>总多

    <UL>

      <LI> JAVA

      <LI>hadoop大数据云

      <LI>圣人工智能

    </ UL>

  </ BODY>

</ HTML>

该文档的树结构是:

通过继承,在一个元素上设置的CSS属性值将从树向下传输到其后代。例如,我们的示例到目前为止,h1和h2元素的颜色设置为绿色 。现在,比如说,您希望在文档中的所有元素上设置相同的颜色。您可以通过列出选择器中的所有元素类型来执行此操作:

<STYLE TYPE =“text / css”>

  H1,H2,P,LI {颜色:绿色}

</ STYLE>

但是,大多数HTML文档比我们的示例文档更复杂,您的样式表很快就会变长。有一种更好 - 更短的方式。我们不是在每个元素类型上设置样式,而是将它设置在它们的共同祖先身体元素上:

<STYLE TYPE =“text / css”>

  身体{颜色:绿色}

</ STYLE>

继承的结果.

如上所述,继承是一种运输工具,它将风格属性分配给元素的后代。由于body元素是所有可见元素的共同祖先,因此当您要为整个文档设置样式规则时,body是一个方便的选择器。

重写继承

在前面的示例中,所有元素都通过继承赋予相同的颜色。然而,有时孩子看起来不像父母。毫不奇怪,CSS也解释了这一点。假设您希望h1 元素为蓝色,而其余元素应为绿色。这在CSS中很容易表达:

<STYLE TYPE="text/css">

  BODY { color: green }

  H1 { color: navy }

</STYLE>

由于h1是body的子元素(从而继承自body),因此上述样式表中的两个规则是冲突的。第一个设置body元素的颜色- 从而也设置h1通过继承的颜色- 而第二个设置颜色特定于h1元素。哪条规则会获胜?我们来看看:


第二条规则获胜的原因是它比第一条规则更具体。第一条规则非常通用 - 它会影响画布上的所有元素。第二条规则仅影响文档中的h1元素,因此更具体。

如果CSS是一种编程语言,那么指定规则的顺序将决定它们中的哪一个会获胜。CSS不是一种编程语言,在上面的例子中,顺序是无关紧要的。如果我们使用此样式表,结果完全相同:

<STYLE TYPE="text/css">

  H1 { color: navy }

  BODY { color: green }

</STYLE>

CSS旨在解决上述样式表规则之间的冲突。特异性是其中一个方面

不继承的属性

作为一般规则,CSS中的属性从父元素继承到子元素,如前面的示例中所述。但是,有些属性不会继承,并且总有一个很好的理由。我们将使用background属性(作为不继承的属性的示例。

假设您要为页面设置背景图像。这是对Web的常见影响。在CSS中,您可以编写:

<HTML>

  <TITLE>Bach's home page</TITLE>

  <STYLE TYPE="text/css">

    BODY {

      background: url(texture.gif) white;

      color: black;

    }

  </STYLE>

  <BODY>

    <H1>北京尚学堂</H1>

    <P>北京尚学堂科技有限公司是一家从事JAVA、android、hadoop大数据云、人工智能计算技术开发、培训、咨询为一体的软件公司。公司由海外留学人员和国内IT精英人士创建,主要成员均拥有硕士以上学位,毕业于国内著名大学如:清华大学,北京航空航天大学等。

  </BODY>

</HTML>

背景 属性有一个指向一个背景图像作为值的URL(“texture.gif”)。加载图像时,画布看起来像:


上面的例子中有一些值得注意的事情:

背景图像像壁纸一样覆盖表面 - 也涵盖了h1和p元素的背景。这不是由于继承,而是因为除非另有设定,否则所有背景都是透明的。因此,由于我们没有将h1或p元素的背景设置为其他内容,因此父元素body将会通过。

除了图像的URL之外,还指定了颜色(白色)作为背景。如果找不到图像,您将看到颜色。

body元素的颜色已设置为黑色。为了确保文本和背景之间的对比,在设置背景属性时始终设置颜色是一个好习惯。

那么,究竟为什么背景属性不会继承?在视觉上,透明度的效果类似于继承:看起来所有元素都具有相同的背景。有两个原因:首先,透明背景比其他背景更快显示(没有什么可显示!)。其次,由于背景图像相对于它们所属的元素对齐,否则您将不会总是得到平滑的背景表面。

CSS的常见任务

设置颜色和背景 - 如上所述 - 是CSS执行的最常见任务之一。其他常见任务包括在元素周围设置字体和空白区域。本节将向您介绍CSS中最常用的属性。

常见任务:字体

让我们从字体开始。如果您以前使用过桌面出版应用程序,那么您应该能够阅读这个小样式表:

H1 { font: 36pt serif }

上面的规则设置h1元素的字体。值的第一部分 - 36pt - 将字体大小设置为36 磅。“点”是一种旧的印刷测量单位,它已经存活到数字时代。


字体 属性是同时设置其他几个属性的简写属性。通过使用它,您可以缩短样式表并在其替换的所有属性上设置值。如果您选择使用扩展版本,则必须设置所有这些以替换上面的示例:

H1 {

  font-size: 36pt;

  font-family: serif;

  font-style: normal;

  font-weight: normal;

  font-variant: normal;

  line-height: normal;

}

有时您只想设置其中一个。例如,您可能希望在某些元素中倾斜文本。这是一个例子:

UL {font-style:italic}

字体风格的 属性不会改变字体大小或字体系列,它将只偏股现有的字体。当在ul元素上设置时,里面的li元素将变为倾斜,因为继承了font-style

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,737评论 1 92
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,033评论 0 1
  • 1.CSS 元素选择器 最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。如果设置 H...
    饥人谷_小侯阅读 855评论 0 1
  • CSS 指层叠样式表(Cascading Style Sheets),是一种用来为结构化文档(如 HTML 文档或...
    神齐阅读 2,087评论 0 14
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,449评论 1 45