CSS 初探

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

样式,定义了如何显示 HTML 元素

作用


将 HTML 中元素的编写,和样式定制分开

只需定义一个外部 CSS 文件,可以供全网站所有页面使用,方便修改

CSS 规则的语法


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

selector {declaration1; declaration2; ... declarationN }

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

每条声明由一个属性和一个值组成。属性是希望设置的样式属性,每个属性有一个值,属性与值通过冒号分隔。

selector {property: value}

多重声明


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

最后一条规则是不需要加分号的。然而,大多数有经验的设计师会在每条声明的末尾都加上分号,这么做的好处是方便增删,避免出错。

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

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

class 和 id 名称对大小写是敏感的。

选择器


选择器的分组

有相同声明的选择器可以被分在一组共享声明,只需要用逗号将同一个分组的选择器分开。

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

派生选择器

用空格表示层级关系

li strong {
  font-style: italic;
  font-weight: normal;
}

为 li 元素中 strong 元素中的内容定制样式

HTML 代码:

<li><strong>我是斜体字。这是因为 strong 元素位于 li 元素内。</strong></li>

id 选择器

#来表示对有某个 id 的元素指定样式

#red {color:red;}

将下面代码中,id 属性为 red 的 p 元素显示为红色

<p id="red">这个段落是红色。</p>

或者

对 id 为 sidebar 的 div 元素定制样式

div#sidebar {
  border: 1px dotted #000;
  padding: 10px;
}
  • 用作派生选择器

可以用 id 选择器 建立 派生选择器

id 为 sidebar 的元素中的 段落 和 二级标题 定制样式

#sidebar p {
  font-style: italic;
  text-align: right;
  margin-top: 0.5em;
}

#sidebar h2 {
  font-size: 1em;
  font-weight: normal;
  font-style: italic;
  margin: 0;
  line-height: 1.5;
  text-align: right;
}

类选择器

.表示针对类指定样式

.center {text-align: center}

所有拥有 center 类的 HTML 元素均为居中。

<h1 class="center">
This heading will be center-aligned
</h1>
  • 用作派生选择器

和 id选择器 一样,类选择器 也可被用作派生选择器

.fancy td {
  color: #f60;
  background: #666;
}

类名为 fancy 的元素内部的表格单元会以灰色背景显示橙色文字

元素也可以基于它们的类而被选择:

td.fancy {
  color: #f60;
  background: #666;
}

属性选择器

可以为拥有指定属性的 HTML 元素设置样式

[title]
{
color:red;
}
[title=W3School]
{
border:5px solid blue;
}

属性选择器在为不带有 class 或 id 的表单设置样式时特别有用:

input[type="text"]
{
  width:150px;
  display:block;
  margin-bottom:10px;
  background-color:yellow;
  font-family: Verdana, Arial;
}

input[type="button"]
{
  width:120px;
  margin-left:35px;
  display:block;
  font-family: Verdana, Arial;
}

使用


样式可以在以下几个地方定义并被页面使用

(优先级由高到低)

  • HTML 元素内部定义
  • HTML 文件头元素中
  • 外部 CSS 文件/样式表文件

将多重样式定义层叠为一个

当同一个 HTML 元素的一个属性被不止一个样式定义时,只有一个优先级最高的样式定义会生效。所有根据规则生效的样式,会组成一个新的虚拟样式表。

外部样式表拥有针对 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;

HTML 元素内部定义

当样式仅需要在一个元素上应用一次时

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

HTML 文件头元素中

当单个文档需要特殊的样式时

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

外部 CSS 文件

样式可以存储在样式表中,外部样式表是 CSS 文件。可以在同一个 HTML 文档内部引用多个外部样式表。

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

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

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

样式表文件内容的例子

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

HTML 代码:

一个类中可以指定多个样式,用空格隔开

  <body>
  <ul class="nav">
    <li>[站外图片上传中……(2)]</li>
  </ul>
  <ul class="nav header">
    <li><a href="">Home</a></li>
    <li><a href="">Site</a></li>
    <li><a href="">Other</a></li>
  </ul>
  </body>
  • 覆盖

在样式表中这样定义:

}
h1, h2, h3 {
  color: #37A5F0;
}
h1 {
  color: #ffffff;
  margin: 10px 0 15px 0;
  text-align: center;
}
h2 {
  margin: 10px 0 20px 0;
  text-align: center;
  font-size: 26px;
  font-weight: bold;
}
h3 {
  margin: 15px 0 15px 0;
  border-bottom: 1px solid #CCCCCC;
  padding-bottom: 3px;
  font-size: 18px;
  font-weight: bold;
}

选择器组中定义的声明,优先级低于单独定义的

疑问?

li:last-child

.nav {
  padding-left: 0;
  margin: 5px 0 20px 0;
  text-align: center;
}
.nav li {
  display: inline;
  padding-right: 10px;
}
.nav li:last-child {
  padding-right: 0;
}

参考资料

http://www.w3school.com.cn/

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,754评论 1 92
  • Head First HTML与CSS 第十章 div与span CSS——掌控页面的表现 <a>元素的不同状态 ...
    一个非典型IT学习者阅读 279评论 0 0
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,555评论 32 459
  • “清风啊!等下!” 青年回头一看,是同学桑梓镇和阿央。哎呦,这对好哥们,走哪都不散。“喂,你俩,咱迟到了知不知...
    L埋O饼V酱E阅读 212评论 1 4
  • 我是如何把自己作成敏感皮的 我是一个有着十几年和敏感肌肤作战经验的资深敏皮,最近痛下决心要把这些年的抗敏血泪史好好...
    甜心已死阅读 432评论 20 4