当前位置: 首页 > news >正文

CSS常见选择器

目录

1.CSS的概念及引入

2.常见选择器用法总结


1.CSS的概念及引入

1.1 什么是CSS

层叠样式表 (Cascading Style Sheets).

CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结 构分离.

在之前我们只学习了HTML的时候 ,想要美化网页其实是一件比较困难的事情,但是在我们学习了CSS后,我们就将打开新世界的大门。

1.2 CSS基本语法规范

选择器 + {一条/N条声明}

选择器决定针对谁修改 (找谁)

声明决定修改啥. (干啥)

声明的属性是键值对. 使用 ; 区分键值对, 使用 : 区分键和值.

比如下面就是一个简单的CSS

<style>
    p {
        /* 设置字体颜色 */
        color: red;
        /* 设置字体大小 */
        font-size: 30px;
   }
</style>
<p>hello</p>

注意:

CSS 要写到 style 标签中(后面还会介绍其他写法)

style 标签可以放到页面任意位置. 一般放到 head 标签内.

CSS 使用 /* */ 作为注释. (使用 ctrl + / 快速切换) . 

 1.3 引入方式

内部样式表

写在 style 标签中. 嵌入到 html 内部.

理论上来说 style 放到 html 的哪里都行. 但是一般都是放到 head 标签中.

优点: 这样做能够让样式和页面结构分离.

缺点: 分离的还不够彻底. 尤其是 css 内容多的时候

行内样式表

通过 style 属性, 来指定某个标签的样式. 只适合于写简单样式. 只针对某个标签生效.

缺点: 不能写太复杂的样式. 这种写法优先级较高, 会覆盖其他的样式.

<style>
    div {
        color: red;
   }
</style>
<div style="color:green">这是一句话</div>

外部样式 

 实际开发中最常用的方式.

1. 创建一个 css 文件.

2. 使用 link 标签引入 css

<link rel="stylesheet" href="[CSS文件路径]">

注意: 不要忘记 link 标签调用 CSS, 否则不生效.

优点: 样式和结构彻底分离了.

缺点: 受到浏览器缓存影响, 修改之后不一定立刻生效

网页依赖的资源(图片/CSS/JS等)通常是从服务器上获取的. 如果频繁访问该网站, 那么这些外部资 源就没必要反复从服务器获取. 就可以使用缓存先存起来(就是存在本地磁盘上了). 从而提高访问效率.

可以通过 ctrl + F5 强制刷新页面, 强制浏览器重新获取 css 文件. 

2.常见选择器用法总结 

所谓选择器就是选中页面中的元素,方便我们进行后续的修改。

2.1 选择器的种类

注意:以下内容只是 CSS2 标准中支持的选择器

1. 基础选择器: 单个选择器构成的

标签选择器 类选择器 id 选择器 通配符选择器

2. 复合选择器: 把多种基础选择器综合运用起来.

后代选择器 子选择器 并集选择器 伪类选择器

参考文档 

2.2 基础选择器

标签选择器

特点: 能快速为同一类型的标签都选择出来. 但是不能差异化选择

<style>
p {
    color: red;
}
div {
    color: green;
}
</style>
<p>张三</p>
<p>张三</p>
<p>张三</p>
<div>李四</div>
<div>李四</div>
<div>李四</div>

类选择器

特点: 差异化表示不同的标签 可以让多个标签的都使用同一个标签.

<style>
    .blue {
        color: blue;
   }
</style>
<div class="blue">咬人猫</div>
<div>咬人猫</div

注意:

类名用 . 开头的

下方的标签使用 class 属性来调用

一个类可以被多个标签使用, 一个标签也能使用多个类(多个类名要使用空格分割, 这种做法可以让 代码更好复用)

如果是长的类名, 可以使用 - 分割

不要使用纯数字, 或者中文, 以及标签名来命名类名

id 选择器 

注意:

CSS 中使用 # 开头表示 id 选择器

id 选择器的值和 html 中某个元素的 id 值相同

html 的元素 id 不必带 #

id是唯一的, 不能被多个标签使用 (是和 类选择器 最大的区别)

<style>
    #ha {
        color: red;
   }
</style>
<div id="ha">hhhh</div>

 通配符选择器

使用 * 的定义, 选取所有的标签

* {
 color: red;
}

页面的所有内容都会被改成红色 . 不需要被页面结构调用.

2.3 复合选择器

如果只有基础选择器,那么对于CSS想要在一个比较复杂的页面选中想要的元素还是比较困难的,于是就有了复合选择器。复合选择器本质上其实是多种基础选择器的组合。

后代选择器

又叫包含选择器. 选择某个父元素中的某个子元素.

元素1 元素2 {样式声明}

元素 1 和 元素 2 要使用空格分割

元素 1 是父级, 元素 2 是子级, 只选元素 2 , 不影响元素 1

代码示例: 把 ol 中的 li 修改颜色, 不影响 ul

<ul>
    <li>aaa</li>
    <li>bbb</li>
    <li>ccc</li>
</ul>
<ol>
    <li>ddd</li>
    <li>eee</li>
    <li>fff</li>
</ol>
ol li {
    color: red;
}

注意:子级的意思不一定是儿子,只要是子元素就行,例如也可以是孙子元素

           可以是任意基础选择器的组合. (包括类选择器, id 选择器)

 子选择器

和后代选择器类似, 但是只能选择子标签.

元素1>元素2 { 样式声明 }

注意:

使用大于号分割

只选亲儿子, 不选孙子元素

并集选择器 

用于选择多组标签. (集体声明)

元素1, 元素2 { 样式声明 }

注意:

通过逗号分割等多个元素

表示同时选中元素 1 和 元素 2

任何基础选择器都可以使用并集选择器.

并集选择器建议竖着写. 每个选择器占一行. (最后一个选择器不能加逗号)

<div>苹果</div>
<h3>香蕉</h3>
<ul>
    <li>鸭梨</li>
    <li>橙子</li>
</ul>

 把鸭梨和橙子也都一起改成红色

div,
h3,
ul li {
    color: red;
}

伪类选择器

1:链接伪类选择器

a:link 选择未被访问过的链接

a:visited 选择已经被访问过的链接

a:hover 选择鼠标指针悬停上的链接

a:active 选择活动链接(鼠标按下了但是未弹起)

<a href="#">小猫</a>

a:link {
    color: black;
    /* 去掉 a 标签的下划线 */
    text-decoration: none;
}
a:visited {
    color: green;
}
a:hover {
    color: red;
}
a:active {
    color: blue;
}

 2 :force 伪类选择器

选取获取焦点的 input 表单元素.

<div class="three">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
</div>

.three>input:focus {
    color: red;
}

此时被选中的表单的字体就会变成红色.

相关文章:

  • React-函数组件的特性与闭包
  • MySQL的EXPLAIN执行计划深入分析
  • 【MySQL基础篇】MySQL数据库安装教程
  • 记某同事的两次误操作导致Linux瘫痪
  • 初识OpenGL (-)纹理过滤(Texture Filtering)
  • ATF官方文档翻译(二):Authentication Framework Chain of Trust(身份验证框架和信任链)(3)
  • wsl安装gpu版mindspore(二)
  • 输出总结是成长的开始
  • [RK3568 Android11] Binder通信整体框架
  • 【uiautomation】获取微信好友名单,可指定标签 全部
  • VAPS XT开发入门教程07:表元素(TableElements)介绍
  • 一文带你了解电感的5大损耗
  • C语言for循环必备练习题
  • Optimization of DQN
  • 猿创征文|微软出品效率神器PowerToys,太实用了
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 2017 年终总结 —— 在路上
  • ES学习笔记(12)--Symbol
  • JavaWeb(学习笔记二)
  • js算法-归并排序(merge_sort)
  • leetcode386. Lexicographical Numbers
  • ng6--错误信息小结(持续更新)
  • Python_OOP
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 关于使用markdown的方法(引自CSDN教程)
  • 后端_MYSQL
  • 类orAPI - 收藏集 - 掘金
  • 前端攻城师
  • 深度解析利用ES6进行Promise封装总结
  • 消息队列系列二(IOT中消息队列的应用)
  • 译有关态射的一切
  • 优化 Vue 项目编译文件大小
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​如何防止网络攻击?
  • #QT(串口助手-界面)
  • #WEB前端(HTML属性)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (12)Linux 常见的三种进程状态
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (七)c52学习之旅-中断
  • (四)linux文件内容查看
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .md即markdown文件的基本常用编写语法
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 调用php,php 调用.net com组件 --
  • .Net 垃圾回收机制原理(二)
  • .NET开发者必备的11款免费工具
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc