了解CSS|青训营笔记

36 阅读5分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天

本堂课重点内容

  • 认识CSS

  • CSS是如何工作的

  • 认识选择器

  • 了解颜色、字体

详细知识点介绍

CSS是什么?

Cascading Style Sheets 层叠样式表

用来定义页面元素的样式

  • 设置字体和颜色

  • 设置位置和大小

  • 添加动画效果

下面根据一个基础样式来介绍一下css

h1 {
    color: white;
    font-size: 14px;
}

其中 h1 为选择器(Selector):

使用选择器选中页面中某些元素, 为选中的元素定义样式

例如这里的 h1 为选择器,则说明我们将为页面上的所有h1定义样式

另外的color\font-size都是属性(选择器 Property)

white\14px都是属性值(Value)

我们将属性、属性值用冒号组合起来称之为声明(Declaration)

将多条声明用分号隔开,放在大括号中称之为声明块

选择器加上声明块,我们称之为一条规则

CSS本质上是一条条样式规则组成

在页面中使用CSS

在页面中使用CSS共有三种方法

  1. 外链 将CSS定义放在单独文件中,用<link>标签引入到页面中

    <!-- 外链 -->
    <link rel="stylesheet" href="/assets/style.css">
    
  2. 嵌入 将CSS样式定义代码直接通过<style>标签,写在页面中

    <!-- 嵌入 -->
    <style>
        li { margin: 0; list-style: none; }
        p { margin: 1em 0;}
    </style>
    
  3. 内联 HTML基本所有标签都有 style 属性,我们将CSS样式直接写在 style 属性中

    <!-- 内联 -->
    <p style="margin:1em 0">Example Content</p>
    

    一般我们使用外链写法,起到样式和功能分离的效果

CSS 是如何工作的

02_css是如何工作的.png

选择器 Selector

找出页面中的元素,以便给他们设置样式

使用多种方法选择元素

  • 按照标签名、类名或 id

  • 按照属性

  • 按照 DOM 树中的位置

标签选择器
通配选择器
<h1>This is heading</h1>
<p>this is some paragraph.</p>


<style>
* {
    color: red;
    font-size: 20px;
}
<style>

如上代码中的“*”号即为通配选择器,它将对所有元素起作用

id 选择器

通过 #+id 去选中对应的元素,我们通过id 选择器,选中元素时,id值需要是唯一的

类选择器
<h2>Todo List</h2>
<ul>
    <li class="done">Learn HTML</li>
    <li class="done">Learn CSS</li>
    <li>Learn JavaScript</li>
</ul>
<style>
.done {
    color: gray;
    text-decoration: line-through;
}
</style>

通过 .+类名 去选中对应的元素,与id选择器不同,类名可以出现多次

属性选择器

通过 [属性名=“属性值”] 去选中对应的元素,其中属性值可选

伪类(pseudo-classes)

不基于标签和属性定位元素

几种伪类

  • 状态伪类

  • 结构性伪类

组合(Combinators)

名称语法说明示例
直接组合AB满足A同时满足Binput:focus
后代组合A B选中B,如果它是A的子孙nav a
亲子组合A > B选中B,如果它是A的子元素section > p
兄弟选择器A ~ B选中B,如果它在A后且合A同级h2 ~ p
相邻选择器A + B选中B,如果它紧跟在A后面h2 + p

选择器组

通过“,”将选择器分开合成选择器组

颜色

颜色 - RGB

RGB色彩就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成,因此也称为加色模式。

颜色 - HSL

Hue Saturation Lightness

色相    饱和度    亮度

HSL是一种将RGB色彩模型中的点在圆柱坐标系中的表示法。

alpha 透明度

取值可以在0-255之间或者0.0f---1.0f之间,数值越小透明度越高

字体

通用字体族

  • Serif 衬线体

    • Grorgia、宋体
  • Sans-Serif 无衬线体

    • Arial、Helvetica、黑体、微软雅黑
  • Cursive 手写体

    • Caflisch Script、楷体
  • Monospace 等宽字体

    • Consolas、Courier、中文字体
  • Fantasy

    较为夸张的字体

    • Comic Sans MS、Papyrus

font-family

font-family 属性的值是用于某个元素的字体族名称或/及类族名称的一个优先表

Web Fonts

可以让网页使用在线字体的一种技术手段

font-size

设置字体大小

  • 关键字

    • small、medium、large
  • 长度

    • px、em
  • 百分数

    • 相对于元素字体大小

font-style

设置字体样式,如斜体

font-weight

设置字重,范围为100-900,受字体影响,需要字体支持

line-height

设置行高

white-space

HTML中对空白符的处理规则

  • normal:合并多余空格

  • nowrap:强制不换行

  • pre:保留所有空格和换行

  • pre-wrap:一行内显示不下时自动换行

  • pre-line:合并空格但保留换行

调试CSS

  • 右键点击页面,选择[检查]

  • 使用快捷键

    • Ctrl+Shift+I(windows)

    • Cmd+Opt+I(Mac)

实践练习例子

例一:了解CSS

<head>
    <meta charset="UTF-8">
    <title>Blog</title>
    <style>
        h1 {
            color: orange;
            font-size: 24px;
        }
        p {
            color: gray;
            font-size: 14px;
            line-height: 1.8;
        }
    </style>
</head>
<body>
    <h1>Web框架的架构模式探讨</h1>
    <p>在写干货之前,我想先探讨两个问题,模式的局限性?模式有什么用?</p>
</body>

解析

在HTML中使用嵌入方式引用CSS样式

运行效果

01_了解css.png

例二: 认识伪类__状态伪类

<a href="htpp://example.com">
    example.com
</a>

<label>
    用户名:
    <input type="text">
</label>

<style>
    a:link {
        color: black;
    }

    a:visited {
        color: gray;
    }

    a:hover {
        color: orange;
    }

    a:active {
        color: red;
    }

    :focus {
        outline: 2px solid orange;
    }
</style>

解析

由<a>标签构成的链接,在HTML中有多种状态,如默认状态、点击、鼠标滑过等

因此我们可以用伪类选择器,定义不同状态下的样式

  • a:link 表示默认状态下的样式

  • a:visited 表示访问过的链接的样式

  • a:hover 表示鼠标移到链接上后的样式

  • a:active 表示鼠标按下后链接的样式

另外,输入框存在 focus 状态,即点击后,可在输入框输入文字的状态,通过 :focus 设置对应样式

运行效果

03_认识伪类_状态伪类.png

例三: 认识伪类__结构性伪类

<ol>
    <li>阿凡达</li>
    <li>泰坦尼克号</li>
    <li>星球大战:原力觉醒</li>
    <li>复仇者联盟 3</li>
    <li>侏罗纪世界</li>
</ol>

<style>
    li {
        list-style-position: inside;
        border-bottom: 1px solid;
        padding: 0.5em;
    }

    li:first-child {
        color: coral;
    }

    li:last-child {
        border-bottom: none;
    }
</style>

解析

结构性伪类会根据你的DOM 节点,在DOM 树中出现的位置,决定是否选中元素

例子中,通过 first-child 伪类,为li 中首个 child 设置样式。用过 last-child 为 li 中 末位 child 设置样式。

运行结果

04_认识伪类_结构性伪类.png

例四:认识组合选择器

<article>
    <h1>拉森火山国家公园</h1>
    <p>拉森火山国家公园是位于...</p>
    <section>
        <h2>气候</h2>
        <p>因为拉森火山国家公园...</p>
        <p>高于这个高度,气候非常寒冷...</p>
    </section>
</article>

<style>
    article p {
        color: black;
    }

    article > p {
        color: blue;
    }

    h2 + p {
        color:red;
    }
</style>

解析

  • article p:选择 article 下所有的 p 标签

  • article > p:选择 article 下直接的 p 标签

  • h2 + p: 选择 h2 紧跟下的 p 标签

运行结果

05_认识组合选择器.png

课后个人总结

在这次的 CSS学习中,让我大致对 CSS 有一个粗略的了解,可以算是学会了 CSS 的基础知识。

个人感觉其中选择器的认识需要特别掌握,而选择器中,伪类知识点又是难点所在,尤其要注意伪类和伪元素的使用,需要多加练习。

引用参考

w3school-CSS 教程