共计 3041 个字符,预计需要花费 8 分钟才能阅读完成。
文章大纲来源:【Day 3】HTML 复习 + CSS 基础
初识 CSS
入门 CSS
初识 CSS
层叠样式表(Cascading Style Sheets),即前端常说的 CSS。
内容引用:CSS 简介
样式解决了什么问题?
HTML 标签原本被设计为用于定义文档内容。
通过使用标签来表达语义信息。
那个时候的文档布局由浏览器实现,没有使用什么格式的标签。
但是当时主要的浏览器(Netscape 和 Internet Explorer)不断地将新的 HTML 标签和属性(比如字体颜色等)加入到 HTML 规范中,文档内容要独立于文档表示层越来越困难(各家都有各家的 HTML 书写属性规范,并且样式一般不统一)。
为了解决这个问题,万维网联盟(W3C)在 HTML 4.0 之外创造出样式(Style)。
样式表如何提高工作效率?
样式表(Style Sheets)定义如何显示 HTML 元素。
样式通常保存在外部的.css 文件中,并且可以被多个.html 文件所引用,所以外部的样式表可以一处修改,多处协同影响。
CSS 的使用方法
一共有三种:
标签内属性定义
<!– learn.html –>
<body style=”background: red;”>
…
</body>
内部定义
<!– learn.html –>
<style>
body {
background: red;
}
</style>
外部定义
<!– learn.html –>
<head>
<link rel=”stylesheet” type=”text/css” href=”style.css” />
</head>
/* style.css */
body {
background: red;
}
外部定义可以 <link> 多个样式表,书写多个 <link> 标签引用即可。
那“层叠”指的是什么?
样式表允许多种方式规定样式信息。
HTML 元素属性中
HTML 的头元素中
外部的 CSS 文件中
同一个文档引用多个外部样式表
那么就容易遇到一个问题:“当同一个 HTML 元素被不止一个样式定义时,会使用哪个样式呢?”
这就是一种层叠了,即多重样式将层叠为一个。
在这个层叠过程中,就需要一种层叠次序,来选择最后到底选择哪一个样式:
最高 —— 内联样式,即 HTML 元素内部
高 —— 内部样式表,即 <head> 标签内部
中 —— 外部样式表
最低 —— 浏览器缺省样式
拥有高次序的样式会覆盖低次序的样式定义。
入门 CSS
基础语法
CSS 规则 由两个主要部分构成:选择器,以及声明。
selector {
declaration1;
declaration2;
…
declarationN;
}
选择器(selector)用于选择需要改变的 HTML 元素
声明(declaration)定义需要改变的属性和值,每条声明由一个属性和一个值组成(property: value)。
例如:
h1 {
color: red;
font-size: 14px;
}
将 <h1> 元素内的文字颜色定义为红色,同时字体大小设置为 14 像素。
内容引用:CSS 基础语法
语法补充
除了基础语法,还有一些需要补充的内容。
内容引用:CSS 高级语法
选择器分组
被分组的选择器可以分享相同的声明。
h1,h2,h3,h4,h5,h6 {
color: green;
}
使用逗号将需要分组到一组的选择器连接在一起即可。
样式继承
根据 CSS,子元素从父元素继承属性。
body {
font-family: Verdana, sans-serif;
}
上述规则说明,<body> 元素将使用 Verdana 字体(如果访问者系统中有的话)。
通过 CSS 继承,子元素将继承最高级元素(上面的例子是 <body>)所拥有的属性。这里的子元素指的就是在 <body> 标签内声明的那些所有标签 (其实并不一定是所有,具体取决于浏览器支持度)。
但是在使用 CSS 继承规则时,如果不希望一个特定子元素继承该 CSS,则再说明一条特殊规则来覆盖即可(这部分涉及到选择器优先级问题,将在后面说明)。
body {
font-family: Verdana, sans-serif;
}
p {
font-family: Times, “Times New Roman”, serif;
}
CSS 派生选择器
依据元素的位置关系来定义样式。
CSS1 称其为上下文选择器(contextual selectors),CSS2 称其为派生选择器。
例子:
li strong {
font-style: italic;
font-weight: normal;
}
<p>
<strong> 我是粗体字,不是斜体,因为这个规则对我不起作用 </strong>
</p>
<ol>
<li>
<strong> 我是斜体字。这是因为 strong 元素位于 li 元素内。</strong>
</li>
<li> 我是正常的字体。</li>
</ol>
只有 li 元素中的 strong 元素的样式为斜体字,这样无需为需要修饰的 strong 元素单独定义 class 或者 id,代码更加简洁。
派生选择器还有更加深入的内容:
CSS 后代选择器
CSS 子元素选择器
CSS 相邻兄弟选择器
内容引用:CSS 派生选择器
CSS id 选择器
为标有 特定 id 的 HTML 元素指定特定的样式。
id 选择器以 ”#” 来定义。
#red {color: red;}
#green {color: green;}
<p id=”red”> 这个段落是红色。</p>
<p id=”green”> 这个段落是绿色。</p>
之所以叫特定的,就是因为 id 属性 只能在每个 HTML 文档中出现一次。
在现在布局中,id 选择器常常用于建立派生选择器。
#sidebar p {
…
}
样式只会应用于出现在 id 是 sidebar 的元素内的段落。
内容引用:CSS id 选择器
CSS 类选择器
类选择器的功能可以简单看成是:能给多个元素相同 id 的 id 选择器,只不过这里不再是用 id 了,而是用 class。
在 CSS 中,类选择器以一个点号显示。
.center {
text-align: center;
}
所有拥有 center 类的 HTML 元素都会应用这个样式。
<h1 class=”center”>
This heading will be center-aligned
</h1>
<p class=”center”>
This paragraph will also be center-aligned.
</p>
注意:类名的第一个字符不能是数字,否则无法在 Mozilla 或 Firefox 中起作用。
和 id 一样,class 也可被用作派生选择器。
.sidebar p {
…
}
内容引用:CSS 类选择器
CSS 属性选择器
对带有指定属性的 HTML 元素设置样式,不仅限于 class 和 id 属性。
注意:只有在规定了 !DOCTYPE 时,IE7 和 IE8 才支持属性选择器。在 IE6 及更低的版本中,不支持属性选择。
属性选择器:
/* 带有 title 属性的所有元素 */
[title] {
color: red;
}
属性和值选择器:
/* title=”W3School” 的所有元素 */
[title=W3School] {
border: 5px solid blue;
}
如果一个属性有多个值,想要选中这样的元素:
/* 适用于由空格分隔的属性值 */
[title~=hello] {
color: red;
}
/* 适用于由连字符分隔的属性值 */
[lang|=en] {
color: red;
}
这种方法的一个应用是设置表单的样式:
input[type=”text”] {
…
}
input[type=”button”] {
…
}
…
内容引用:CSS 属性选择器
个人静态博客:
气泡的前端日记:https://rheabubbles.github.io