CSS

CSS 是 “Cascading Style Sheet” 的缩写,中文译为 “层叠样式表”,用来控制网页的样式,如 字体,颜色,边框,间距,大小,位置,可见性等

如果将 HTML 网页比作 “毛坯房”,那么有了 CSS 就是 “精装修”!

CSS 诞生

HTML 标签原本被设计为用于定义文档内容,通过使用 <h1><p><table> 这样的标签,HTML 的初衷是表达 这是标题这是段落这是表格 之类的信息。同时文档布局由浏览器来完成,而不使用任何的格式化标签

此时两种主要的浏览器 ( Netscape 和 Internet Explorer ) 不断地将新的 HTML 标签和属性(比如字体标签和颜色属性)添加到 HTML 规范中,创建文档内容清晰地独立于文档表现层的站点变得越来越困难

为了解决这个问题,万维网联盟(W3C),这个非盈利的标准化联盟,肩负起了 HTML 标准化的使命,并在 HTML 4.0 之外创建出样式 (Style)

所有的主流浏览器均支持层叠样式表

CSS 语法

CSS 规则由两个主要的部分构成:选择器 以及 一条或多条声明( 每条声明由一个属性和一个值组成 )

  • 选择器 通常是需要改变样式的 HTML 元素
  • 属性( property )是您希望设置的样式属性,每个属性有一个值,属性和值用冒号分开
  • 多条声明之间使用 ; 隔开

HTML 嵌入 CSS 样式

引入方式的优先级: 就近原则

行内样式

行内样式就是把 CSS 样式直接放在代码行内的标签中,一般都是放入标签的 style 属性中,最直接的一种方式,但是修改起来较为麻烦

<p style="font-size:30px;">行内样式</p>

内嵌式

内嵌式通过将 CSS 写在网页源文件的头部,即在 <head></head> 之间,通过使用 HTML 标签中的 <style> 标签将其包围,解决了行内样式多次书写的弊端

<!DOCTYPE html>
<html>
<head>
    <style> p {
     font-size: 32px; } </style>
</head>
<body>
    <p>内嵌样式</p>
</body>
</html>

链接式

链接式通过 HTML 的 <link> 标签,将外部样式表文件链接到 HTML 文档中,这也是网站使用最多的方式。这种方法将 HTML 和 CSS 完全分离,增强网页结构的扩展性和 CSS样式 的可维护性

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="./my.css">
</head>
<body>
    <p>链接样式</p>
</body>
</html>

@import导入

@import daoru.css;
@import 'daomxss';
@import "daoru.css";
@import url(daoru.css);
@import url('daoru.css');
@import url("daoru.css");

CSS 选择器

元素选择器

元素选择器,最常见的 CSS 选择器,匹配文档树中该元素类型的每一个实例

/* 单个元素选择器 */
div {
   
    background-color: pink;
}

/* 多个元素选择器 */
h1, p {
   
    color: gray;
}

id 选择器

通过元素的 id 属性定位元素,影响范围最小
选择符 #

#item{
   
    width: 200px;
    height: 200px;
}

class 选择器

通过元素的 class 属性定位元素
选择符 .

.box{
   
    width: 200px;
    height: 200px;
}

属性选择器

根据元素的属性及属性值来选择元素

/* 对包含 title 属性的元素生效 */
*[title] {
   color:red;}

/* 对包含 title,href 属性的 a 标签生效 */
a[href][title] {
   color:red;}

后代选择器

又称为 包含选择器,对指定元素中的某一元素生效,递归查询符合子元素,全部生效

h1 em {
   
    color:red;
}

查询 h1 标签中的 em 元素,不论嵌套多少层都会生效

子代选择器

仅对父元素下一级中符合的子元素生效

h1>em {
   
    color:red;
}

查询 h1 标签中的 em 元素,仅查询一级

兄弟选择器

兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素

伪类选择器

选择器 描述
:active 向被激活的元素添加样式
:focus 向拥有键盘输入焦点的元素添加样式
:hover 当鼠标悬浮在元素上方时,向元素添加样式
:link 向未被访问的链接添加样式
:visited 向已被访问的链接添加样式
:first-child 向元素的第一个子元素添加样式
/* 当鼠标悬停在 a 标签时生效 */
a:hover {
   
    color: red;
}

伪元素选择器

用于向某些选择器设置特殊效果

选择器 描述
:first-letter 向文本的第一个字母添加特殊样式
:first-line 向文本的首行添加特殊样式
:before 在元素之前添加内容
:after 在元素之后添加内容
/* 每个 <h1> 元素后面插入一句话 */
h1:after
  {
   
  content: "--zzzzls";
  }

选择器优先级

例如 同时两个选择器给同一个元素设置相同的属性,那么最终设置为哪个呢?这就要按照优先级来了

  • 内连样式 优先级 1000
  • id 选择器 优先级 100
  • class 选择器 优先级 10
  • 元素选择器 优先级 1
  • 统配选择器 优先级 0
  • 继承的样式优先级没有

以上的优先级先满足高的。

注意:

  1. 如果是两种相同优先级 为同一个元素 同一个属性设置 的话,是哪个写在代码靠后 最终就按那个的样式
  2. 交集选择器的优先级 所有优先级 加起来 运算 然后比较
  3. 并集的话 就是各算各的