一、创建 CSS 样式表有三种方式

1. 元素内嵌样式
<p style="color:red;font-size:50px;">这是一段文本</p>
解释:即在当前元素使用 style 属性的声明方式。

2. 文档内嵌样式
<style type="text/css">
p {
color: blue;
font-size: 40px;
}
</style>
<p>这是一段文本</p>
解释:在<head>元素之间创建<style>元素,通过选择器的方式调用指定的元素并设
置相关 CSS。

3. 外部引用样式
<link rel="stylesheet" type="text/css" href="style.css">
//style.css
@charset "utf-8";

p {
color: green;
font-size: 30px;
}

解释:很多时候,大量的 HTML 页面使用了同一个组 CSS。那么就可以将这些 CSS 样式保存在一个单独的.css 文件中,然后通过<link>元素去引入它即可。
@charset "utf-8"表明设置 CSS 的字符编码,如果不写默认就是 utf-8。如果有多个.css 文件,可以使用@import 导入方式引入.css 文件。只不过,性能不如多个<link>链接

二、层叠和继承

所谓的样式表层叠:指的是同一个元素通过不同方式设置样式表产生的样式重叠。样式表继承:指的是某一个被嵌套的元素得到它父元素样式。还有一种样式叫浏览器样式,是这个元素在这个浏览器运行时默认附加的样式。

1. 浏览器样式
<b>这个元素隐含加粗样式</b>
<span style="font-weight:bold;">这个元素通过 style 加粗</span>
解释:<b>元素就是具有加粗的隐含样式,而<span>元素没有任何隐含样式,通过 style属性设置样式。

2. 样式表层叠
样式表层叠通过五种方式进行,如果样式相同,那么比如会产生冲突替换。这时,它的优先级顺序就显的比较重要。以下优先级从低到高:
(1).浏览器样式(元素自身携带的样式);
(2).外部引入样式(使用<link>引入的样式);
(3).文档内嵌样式(使用<style>元素设置);
(4).元素内嵌样式(使用 style 属性设置)。

如果某一个样式被优先级高的给替换掉了,却又想执行这个样式方案,可以将这个方案标记成重要样式(important)。

//强行设置最高优先级
color: green !important;

 三、CSS选择器

基本选择器

1. 通用选择器
* {
border: 1px solid red;
}
解释:“*”号选择器是通用选择器,功能是匹配所有 html 元素的选择器包括<html>和<body>标签。可以使用如下元素标记测试效果:

2. 元素选择器
p {
color: red;
}
<p>段落</p>
解释:直接使用元素名称作为选择器名即可。

3.ID 选择器
#abc {
font-size: 20px;
}
<p id="abc">段落</p>
解释:通过对元素设置全局属性 id,然后使用#id 值来选择页面唯一元素。

4. 类选择器
.abc {
border: 1px solid red;
}
<b class="abc">加粗</b>
<span class="abc">无</span>
解释:通过对元素设置全局属性 class,然后使用.class 值选择页面一个或多个元素。
b.abc {
border: 1px solid red;
}
解释:也可以使用“元素.class 值”的形式,限定某种类型的元素。
<span class="abc edf">无</span>
解释:类选择器还可以调用多个样式,中间用空格隔开进行层叠。

5. 属性选择器
[href] {
color: orange;
}
解释:属性选择器,直接通过两个中括号里面包含属性名即可。当然,还有更多扩展的属性选择器。

[type="password"] {
border: 1px solid red;
}
解释:匹配属性值的属性选择器。

[href^="http"] {
color: orange;
}
解释:属性值开头匹配的属性选择器。

[href$=".com"] {
color: orange;
}
解释:属性值结尾匹配的属性选择器。

[href*="baidu"] {
color: orange;
}
解释:属性值包含指定字符的属性选择器。

[class~="edf"] {
font-size: 50px;
}
解释:属性值具有多个值时,匹配其中一个值的属性选择器。

[lang|="en"] {
color: red;
}
解释:属性值具有多个值且使用“-”号连接符分割的其中一个值的属性选择器。比如
<i lang="en-us">HTML5</i>。

复合选择器

将不同的选择器进行组合形成新的特定匹配,我们称为复合选择器。
1. 分组选择器
p,b,i,span {
color: red;
}
解释:将多个选择器通过逗号分割,同时设置一组样式。当然,不但可以分组元素选择器,还可以使用 ID 选择器、类选择器、属性选择器混合使用。

2. 后代选择器
p b {
color: red;
}
解释:选择<p>元素内部所有<b>元素。不在乎<b>的层次深度。当然,后代选择器也可以混合使用 ID 选择器、类选择器、属性选择器。

3. 子选择器
ul > li {
border: 1px solid red;
}
<ul>
<li>我是儿子
<ol>
<li>我是孙子</li>
<li>我是孙子</li>
</ol>
</li>
<li>我是儿子</li>
<li>我是儿子</li>
</ul>
解释:子选择器类似与后代选择器,而最大的区别就是子选择器只能选择父元素向下一级的元素,不可以再往下选择。

4. 相邻兄弟选择器
p + b {
color: red;
}
解释:相邻兄弟选择器匹配和第一个元素相邻的第二个元素。

5. 普通兄弟选择器
p ~ b {
color: red;
}
解释:普通兄弟选择器匹配和第一个元素后面的所有元素。

伪元素选择器

伪选择器分为两种第一种是下节伪类选择器,还有一种就是伪元素选择器。这两种选择
器特性上比较容易混淆,在 CSS3 中为了区分,伪元素前置两个冒号(::),伪类前置一个
冒号(:)。
1.::first-line 块级首行
::first-line {
color: red;
}
解释:块级元素比如<p>、<div>等的首行文本被选定。如果想限定某种元素,可以加
上前置 p::first-line。
2.::first-letter 块级首字母
::first-letter {
color: red;
}
解释:块级元素的首行字母。
3.::before 文本前插入
a::before {
content: '点击-';
}
解释:在文本前插入内容。
4.::after 文本后插入
a::before {
content: '-请进';
}
解释:在文本后插入内容。

结构性伪类选择器
结构性伪类选择器能够根据元素在文档中的位置选择元素。这类元素都有一个前缀(:)。

1. 根元素选择器
:root {
border: 1px solid red;
}
解释:匹配文档中的根元素,基本不怎么用,因为总是返回<html>元素。

2. 子元素选择器
ul > li:first-child {
color: red;
}
解释:选择第一个子元素。
ul > li:last-child {
color: red;
}
解释:选择最后一个子元素。
ul > li:only-child {
color: red;
}
解释:选择只有一个子元素的那个子元素。
div > p:only-of-type {
color: red;
}
解释:选择只有一个指定类型的子元素的那个子元素。

3.:nth-child(n) 系列
ul > li:nth-child(2) {
color: red;
}
解释:选择子元素的第二个元素。
ul > li:nth-last-child(2) {
color: red;
}
解释:选择子元素倒数第二个元素。
div > p:nth-of-type(2) {
color: red;
};
解释:选择特定子元素的第二个元素。
div > p:nth-last-of-type(2) {
color: red;
};
解释:选择特定子元素的倒数第二个元素。

UI 伪类选择器
UI 伪类选择器是根据元素的状态匹配元素。

1.:enabled
:enabled {
border: 1px solid red;
}
解释:选择启用状态的元素。

2.:disabled
:disabled {
border: 1px solid red;
}
解释:选择禁用状态的元素。

3.:checked
:checked {
display: none;
}
解释:选择勾选的 input 元素。

4.:default
:default {
display: none;
}
解释:从一组类似的元素中选择默认元素。比如 input 被勾选的即默认的。

5.:valid 和:invalid
input:valid {
border: 1px solid blue;
}
input:invalid {
border: 1px solid green;
}
解释:输入验证合法与不合法显示时选择的元素。

6.:required 和:optional
input:required {
border: 1px solid blue;
}
input:optional {
border: 1px solid green;
}
解释:根据是否具有 required 属性选择元素。

动态伪类选择器
动态伪类选择器根据条件的改变匹配元素。

1.:link 和 和 visited
a:link {
color: red;
}
a:visited {
color: orange;
}
解释::link 表示未访问过的超链接,:visited 表示已访问过的超链接。

2.:hover
a:hover {
color: blue;
}
解释:表示鼠标悬停在超链接上。

3.:active
a:active {
color: green;
}
解释:表示鼠标按下激活超链接时。

4.:focus
input:focus {
border: 1px solid red;
}
解释:表示获得焦点时。

其他伪类选择器

1.:not
a:not([href*="baidu"]) {
color: red;
}
解释:否定选择器,反选。
2.:empty
:empty {
display: none;
}
解释:匹配没有任何内容的元素。
3.:lang
:lang(en) {
color: red;
}
解释:选择包含 lang 属性,属性值前缀为 en 的元素。和属性选择器匹配结果一致。
4.:target
:target {
color: red;
}
解释:定位到锚点时,选择此元素。
5.::selection
::selection {
color: red;
}
解释:这是一个伪元素选择器,当选择文字时触发选择。CSS3 版本下的选择器。

HTML5-CSS(一)的更多相关文章

  1. HTML5 & CSS初学者教程(详细、通俗易懂)

    前端语言基础:HTML5 & CSS (一) HTML5:超文本标记语言 (1) 基本概念 是由一系列成对出现的元素标签(标记)嵌套组合而成 ( XML也是标签构成的 ) 这些标签以的形式出现 ...

  2. 使用 HTML5 & CSS 实现一个自定义开关按钮 switch button

    使用 HTML5 & CSS 实现一个自定义开关按钮 switch button switch button <div class="switch"> < ...

  3. html5/css学习笔记

    请始终将正斜杠添加到子文件夹.假如这样书写链接:href="http://www.w3cschool.cc/html",就会向服务器产生两次 HTTP 请求.这是因为服务器会添加正 ...

  4. 【原】无脑操作:HTML5 + CSS + JavaScript实现比赛排程

    1.背景:朋友请帮忙做一个比赛排程软件 2.需求: ① 比赛人数未知,可以通过文本文件读取参赛人员名称: ② 对参赛人员随机分组,一组两人,两两PK,如果是奇数人数,某一个参赛人员成为幸运儿自动晋级: ...

  5. 酷炫,用Html5/CSS实现文字阴影

    前两天有一个学html5前端小美女问我一个有关文字阴影的效果怎么去实现.她和我说文字阴影嘛,她也知道text-shadow,.但是却做不出想要的样子,其实css3的新功能是很强大的,不要把你的思想太过 ...

  6. HTML5&CSS挑战

    地址:https://www.w3cschool.cn/codecamp/list?pename=html5_and_css_camp 开始学习HTML标签:欢迎来到编程训练营的第一个编程挑战!你可以 ...

  7. 笔记 jsp/ajax/js/jquery/html5/css+div->table

    1. jsp 1).jsp(39,33)   equal symbol expected: 这个异常是说第39行有 " '( 冒号单引号)问题 2)${map[key]}  map和key换 ...

  8. HTML文档 html,html5,css,css3

    HTML 各种标签及简单应用: http://www.w3school.com.cn 1 <p><p> 2 <br/> 3 <hr/>横线 4 < ...

  9. HTML5+CSS:02用户注册表单

            新的学期已开始接近两个月了,还记得是在国庆节那几天申请的博客账号,可过了一个月都还没开始写博客,(>_<)有点小偷懒了,不过,学习还是不能落下的,今写一个有点实践运用的关于 ...

  10. html5+css+js简单了解

    最近敲了敲HTML5的代码,感觉真的是很吸引人的东西,反正我是非常喜欢的,所以想写一点关于HTML的东xi首先呢我了解的不多,所以也是想写一点点我对它的认识.说起HTML5是打开Pycharm敲pyt ...

随机推荐

  1. 简化可视SLAM应用程序的开发

    简化可视SLAM应用程序的开发 Easing the development of visual SLAM applications 同步定位和映射(SLAM)描述了一个设备(如机器人)使用传感器数据 ...

  2. 部署通用基础设施, 满足顶级 SLA 要求

    部署通用基础设施, 满足顶级 SLA 要求 Telefónica 使用基于英特尔 至强 可扩展处理器和英特尔 傲腾 数据中心级固态盘 的 VMware 虚拟存储区域网络 (vSAN)* 架构,完成对高 ...

  3. seldom 2.0 让接口自动化测试更简单

    前言 HTTP接口测试很简单,不管工具.框架.还是平台,只要很的好的几个点就是好工具. 测试数据问题:比如删除接口,重复执行还能保持结果一致,必定要做数据初始化. 接口依赖问题:B接口依赖A的返回值, ...

  4. 十一、设置Nginx开机自启动

    一.创建nginx.service文件 [root@svr7 ~]# vim /lib/systemd/system/nginx.service [Unit]Description=nginx ser ...

  5. UF_PART 部件操作

    Open C uc5000 uc5001uc5003UF_PART_add_to_recent_file_listUF_PART_apply_family_instanceUF_PART_ask_co ...

  6. 合宙Luat | 一文读懂LuaTask延时,看我如何从《射雕英雄传》角度分析。

    武侠小说中,主人公之所以能纵横江湖,常常离不开一样可遇不可求的绝世法宝--武功秘籍.如今勇于尝试的开发者,笃定地告诉后来者:选Luat二次开发,就如同拥有了物联网开发的武功秘籍. 本期让我们通过< ...

  7. 合宙Luat | 电源设计——模块应用必看的2个要点

    在模块应用设计中,电源设计是很重要的一部分. 由于射频发射时,会在短时间有一个较大电流的突发脉冲.在突发脉冲阶段内,电源必须能够提供高的峰值电流,不然有可能会引起供电电压的跌落.   而很多初学的朋友 ...

  8. FreeRTOS移植EasyFlash

    1. EasyFlash Easyflash可以让 Flash 成为小型 KV 数据库(Key-Value) GitHub: https://github.com/armink/SFUD Gitee: ...

  9. .NET Core如何全局获取用户信息?

    前言 在增删改查中的增和改操作中,我们经常需要更新数据流的创建人和修改人,无论我们项目是基于DDD,抑或是简单仅有服务层,此时我们都需要获取用户信息,那么我们只能将用户标识从控制器层层传递到服务或仓储 ...

  10. 【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译

    面对这场突如其来的变革,作为软件开发者,应该如何选择自己今后的发展方向?桌面软件开发领域还有前景吗? 起源 自从苹果发布m1处理器,让自家Mac支持IOS移动端app运行之后,彻底打破了移动端app和 ...