CSS入门学习笔记+案例【一】

目录

一、CSS 是什么

二、引入方式

2.2 行内样式表

2.3 外部样式

三、 代码风格

3.1 样式格式

3.2 样式大小写

3.3 空格规范

四、 选择器

4.1 选择器的功能

4.2 选择器的种类

复合选择器小结


看完这篇博客 你将

  • 掌握 CSS 基本语法规范和代码书写风格
  • 掌握 CSS 选择器的各种用法
  • 熟练使用 CSS 中的常用属性.


一、CSS 是什么

层叠样式表 (Cascading Style Sheets).

CSS 能够对网页中元素位置的排版进行像素级精确控制 , 实现美化页面的效果 . 能够做到页面的样式和结构分离.
CSS 就是 "东方四大邪术 " 之化妆术.
基本语法规范
  • 选择器 + {一条/N条声明}
  • 选择器决定针对谁修改 (找谁)
  • 声明决定修改啥. (干啥)
  • 声明的属性是键值对. 使用 ; 区分键值对, 使用 : 区分键和值.
<style>
    p {
        /* 设置字体颜色 */
        color: red;
        /* 设置字体大小 */
        font-size: 30px;
   }
</style>
<p>hello</p>
注意 :
CSS 要写到 style 标签中 ( 后面还会介绍其他写法 )
style 标签可以放到页面任意位置 . 一般放到 head 标签内 .
CSS 使用 /* */ 作为注释 . ( 使用 ctrl + / 快速切换 ) .

二、引入方式

2.1 内部样式表

写在 style 标签中 . 嵌入到 html 内部 .
理论上来说 style 放到 html 的哪里都行 . 但是一般都是放到 head 标签中.

前面写的代码主要都是使用了这种方式 . 实际开发中不常用 .
PS: 搜狗搜索中仍然保留着这种写法 .
优点 : 这样做能够让样式和页面结构分离 .
缺点 : 分离的还不够彻底 . 尤其是 css 内容多的时候 .

2.2 行内样式表

通过 style 属性 , 来指定某个标签的样式 .
只适合于写简单样式 . 只针对某个标签生效 .
缺点 : 不能写太复杂的样式 .
这种写法优先级较高 , 会覆盖其他的样式 .
<style>
   p {
       /* 设置字体颜色 */
       color: red;
       /* 设置字体大小 */
       font-size: 30px;
  }
</style>
<p>hello</p>
可以看到 , red 颜色被覆盖了 .

2.3 外部样式

实际开发中最常用的方式 .
1. 创建一个 css 文件 .
2. 使用 link 标签引入 css
<link rel = "stylesheet" href = "[CSS 文件路径 ]" >
创建 demo.html
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>外部样式</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div>上帝为你关上一扇门, 然后就去睡觉了</div>
</body

创建 style.css
div {
    color: red;
}

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

优点 : 样式和结构彻底分离了 .
缺点 : 受到浏览器缓存影响 , 修改之后 不一定 立刻生效 .
关于缓存 :
这是计算机中一种常见的提升性能的技术手段 .
网页依赖的资源 ( 图片 /CSS/JS ) 通常是从服务器上获取的 . 如果频繁访问该网站 , 那么这些外部资源就没必要反复从服务器获取. 就可以使用缓存先存起来 ( 就是存在本地磁盘上了 ). 从而提高访问效率.
可以通过 ctrl + F5 强制刷新页面 , 强制浏览器重新获取 css 文件 .

三、 代码风格

3.1 样式格式

1) 紧凑风格

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

2) 展开风格 ( 推荐 )
p {
    color : red ;
    font-size : 30px ;
}

3.2 样式大小写

虽然 CSS 不区分大小写 , 我们开发时统一使用小写字母

3.3 空格规范

  • 冒号后面带空格
  • 选择器和 { 之间也有一个空格.

四、 选择器

4.1 选择器的功能

选中页面中指定的标签元素 .
要先选中元素 , 才能设置元素的属性 .
就好比 SC2, War3 这样的游戏 , 需要先选中单位 , 再指挥该单位行动 .

4.2 选择器的种类

1. 基础选择器 : 单个选择器构成的
  • 标签选择器
特点 :
能快速为同一类型的标签都选择出来 .
但是不能差异化选择
<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 属性来 调用 .
一个类可以被多个标签使用 , 一个标签也能使用多个类 ( 多个类名要使用空格分割 , 这种做法可以让代码更好复用)
如果是长的类名 , 可以使用 - 分割 .
不要使用纯数字 , 或者中文 , 以及标签名来命名类名 .

 代码示例: 使用多个类名

注意 : 一个标签可以同时使用多个类名
这样做可以把相同的属性提取出来 , 达到简化代码的效果 .
<style>
    .box {
        width: 200px;
        height: 150px;
   }
    .red {
        background-color: red;
   }
    .green {
        background-color: green;
   }
</style>
<div class="box red"></div>
<div class="box green"></div>
<div class="box red"></div>
  • id 选择器
和类选择器类似 .
  • id 选择器的值和 html 中某个元素的 id 值相同
  • html 的元素 id 不必带 #
  • id 是唯一的, 不能被多个标签使用 (是和 类选择器 最大的区别)
  • CSS 中使用 # 开头表示 id 选择器
<style>
    #ha {
        color: red;
   }
</style>
<div id="ha">蛤蛤蛤</div>
类比 :
姓名是类选择器 , 可以重复 .
身份证号码是 id 选择器 , 是唯一的 .
  • 通配符选择器

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

* {
 color: red;
}
页面的所有内容都会被改成 红色 .
不需要被页面结构调用 .
基础选择器小结

2. 复合选择器 : 把多种基础选择器综合运用起来 .
  • 后代选择器
又叫包含选择器 . 选择某个父元素中的某个子元素 .
元素 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;
}
代码示例 : 元素 2 不一定非是 儿子 , 也可以是孙子
<ul>
    <li>aaa</li>
    <li>bbb</li>
    <li><a href="#">ccc</a></li>
</ul>
ul li a {
    color: yellow;
}
或者
ul a {
    color: yellow;
}
代码示例 : 可以是任意基础选择器的组合 . ( 包括类选择器 , id 选择器 )
<ol class="one">
    <li>ddd</li>
    <li>eee</li>
    <li><a href="#">fff</a></li>
    <li><a href="#">fff</a></li>
    <li><a href="#">fff</a></li>
</ol>
.one li a {
    color: green;
}

  • 子选择器

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

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

  •  使用大于号分割
  • 只选亲儿子, 不选孙子元素
<div class="two">
    <a href="#">链接1</a>
    <p><a href="#">链接2</a></p>
</div

 后代选择器的写法, 会把链接1 2 都选中.
 

.two a {
    color: red;
}

 子选择器的写法, 只选链接 1

.two>a {
    color: red;
}

 练习

把以下代码中的 " 小猫 " 改成红色
<div class="cat">
    <ul>
        <li><a href="#">小猫</a></li>
        <li><a href="#">小猫</a></li>
        <li><a href="#">小猫</a></li>
    </ul>
</div>
CSS 结果 :
.cat ul li a {
    color: red;
}

  • 并集选择器

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

元素 1, 元素 2 { 样式声明 }
  •  通过 逗号 分割等多个元素.
  • 表示同时选中元素 1 和 元素 2
  • 任何基础选择器都可以使用并集选择器.
  • 并集选择器建议竖着写. 每个选择器占一行. (最后一个选择器不能加逗号)

代码示例

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

 1. 把苹果和香蕉颜色改成红色

div, h3 {
    color: red;
}

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

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;
}
如何让一个已经被访问过的链接恢复成未访问的状态 ?
清空浏览器历史记录即可 . ctrl + shift + delete
注意事项
  • 按照 LVHA 的顺序书写, 例如把 active 拿到前面去, 就会导致 active 失效. 记忆规则 "绿化"
  • 浏览器的 a 标签都有默认样式, 一般实际开发都需要单独制定样式.
  • 实际开发主要给链接做一个样式, 然后给 hover 做一个样式即可. link, visited, active 用的不多.

a {
    color: black;
}
a:hover {
    color: red;
}
2) :force 伪类选择器
选取获取焦点的 input 表单元素 .
<div class="three">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
</div>
.three>input:focus {
    color: red;
}

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

复合选择器小结

参考文档: https://www.w3school.com.cn/cssref/css_selectors.asp>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23992.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

美团面试:接口被恶意狂刷,怎么办?

如果Java接口被恶意狂刷&#xff0c;我们一般可以采取以下措施&#xff1a; 用TimeStamp &#xff08;兵不厌诈&#xff09; 比如给客户端提供一个timestamp参数&#xff0c;值是13位的毫秒级时间戳&#xff0c;可以在第12位或者13位做一个校验位&#xff0c;通过一定的算法给…

中国人民大学与加拿大女王大学金融硕士——每天都要优于过去的自己,加油!

职场中拉开人与人之间差距的&#xff0c;往往是日复一日微小的积累。满足已取得的成就会让人停滞不前&#xff0c;一旦停止学习&#xff0c;人就会止步不前。懂得持续学习、终生成长的人&#xff0c;能保持积极进取的状态。金融行业的你有计划来人民大学与加拿大女王大学金融硕…

Redis之高可用方案浅析

在工程项目中&#xff0c;系统应用的高可用性越来越重要&#xff0c;业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用&#xff0c;数据层高可用中常见的有关系型数据库mysql的高可用、非关系型NoSQl数据库redis的高可用等&#xff0c;下面聊聊典型的NoSQL数据库…

深入理解Linux虚拟内存管理

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核&#xff08;一&#xff09; 深入理解 Linux 内核&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;一&#xff09; Linux 设备驱动程序&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;三&#xf…

yolov5-7.0 添加BiFPN

1. BiFPN特征融合 BiFPN是目标检测中神经网络架构设计的选择之一&#xff0c;为了优化目标检测性能而提出。主要用来进行多尺度特征融合&#xff0c;对神经网络性能进行优化。来自EfficientDet: Scalable and Efficient Object Detection这篇论文。 在这篇论文中&#xff0c;作…

Linux的学习

学习笔记&#xff0c;只写重点&#xff0c;不连贯&#xff0c;写得很水。 视频from:2021韩顺平 一周学会Linux。学习地址&#xff1a;https://www.bilibili.com/video/BV1Sv411r7vd 老师说明&#xff1a;后面我们的Redis、ginx包括项目都会使用到Linux,也是和我讲解的Linux版本…

Seata AT模式源码解析二(Seata Client端启动流程)

文章目录 初始化TM和RM数据源代理 由于我们一般都是在springboot中使用的&#xff0c;而与springboot集成的我们一般就先看starter的spring.factories文件&#xff0c;看看它的自动装配 这里面主要关注SeataAutoConfiguration和SeataDataSourceAutoConfiguration。 SeataAutoCo…

破解极域(4):万能密码法(可以获取到原密码)

破解极域&#xff08;4&#xff09;&#xff1a;万能密码法 1.思路2.实现2.1 获得密码2.2 解除控制2.3 特别注意 3.视频展示 今天来分享下破解极域的第4种方法——万能密码法 1.思路 首先&#xff0c;我们要知道的是&#xff0c;极域这个东西它有一个万能密码&#xff0c;万能…

如何检查Linux硬盘大小、类型和硬件详细信息?

在Linux系统中&#xff0c;了解硬盘的大小、类型和硬件详细信息对于系统管理和故障排除非常重要。本文将详细介绍如何使用命令行工具来检查Linux硬盘的大小、类型和硬件详细信息。 1. 检查硬盘大小 要检查Linux硬盘的大小&#xff0c;可以使用lsblk命令。该命令显示了系统中所…

我用AI帮我唱了首“基尼太美”,颠覆了我的认知!太牛逼了

目录 前言 AI唱"基尼太美"是什么感觉 使用so-vits-svc打造自己专属歌手 1.声音素材整理 2.训练模型 3.让AI唱歌​编辑 AI歌手背后的技术 AI歌手会成为主流吗 写到最后 大家好&#xff0c;我是大侠&#xff0c;AI领域的专业博主 前言 在5月份&#xff0c;孙…

vue2_模版语法

目录 模版语法 react用jsx语法编译后的null作用 插值表达式{{}} v-bind和{{}} 关于国内谷歌自带翻译停用如何解决&#xff08;额外&#xff09; 会一点的插值表达式&#xff0c;也有限制 模版语法 更接近原生js的写法jsx语法 jsx是react提出的&#xff1b;后很多前端框架…

说说你对slot的理解?slot使用场景有哪些?

vue的slot的理解&#xff1f;slot使用场景有哪些&#xff1f; 定义 在Vue.js中&#xff0c;slot&#xff08;插槽&#xff09;是一种用于组件之间内容分发的机制。它允许你在父组件中编写子组件的内容&#xff0c;从而增加了组件的灵活性和可重用性。 Slot 艺名插槽&#xf…

汇编寄存器之内存访问

1.内存中字的存储: 在CPU中用一个16位寄存器来存储一个字, 高8位存高字节,低8位存低字节 如AX寄存器存在一个字,那么AH存高字节,AL存低字节 在内存中存储字时是用两个连续的字节来存储字的, 这个字的低字节存在低单元,高字节存在高单元. 如下表示: 内存单元编号 单元中…

【微博-计算Cell子控件的frame Objective-C语言】

一、计算Cell子控件的frame 1.来,看一下,刚才我们已经做到把这个模型设置给自定义的cell了吧, 那么,在这个自定义Cell里面呢,我们是不是要开始设置数据了, 设置数据,我们,设置数据,其实很简单,就是把我们这里边的每一个控件,对应的值,从模型里面取出来,给了它,…

【独立版】智慧城市同城V4_2.2.7全开源全插件VUE版,修复房产信息组件商户发布二手房房源信息未和商户关联的问题

源码介绍 【独立版】智慧城市同城V4 查看更多关于 智慧城市同城V4 的文章 _2.2.7全开源全插件VUE版&#xff0c;修复房产信息组件商户发布二手房房源信息未和商户关联的问题&#xff01; 智慧城市同城是一套专注于多城市生活服务同城技术解决方案,全面覆盖同堿信息、商家联盟、…

【Linux】搭建SFTP文件服务器

一、协议介绍1.1 FTP 协议1.11 特点1.12 基本工作原理 1.2 SFTP协议1.21 特点1.22 基本工作原理 1.3 ssh协议1.31 特点1.32 基本工作原理 1.4 其他常见文件传输协议 二、搭建Linux的SFTP文件服务器三、连接测试3.1 电脑连接3.2 手机连接 一、协议介绍 1.1 FTP 协议 1.11 特点…

AI落地:高效学习指南

高效学习中有一个共识&#xff1a;学习最小可用知识&#xff0c;然后立马开始实践&#xff0c;做中学&#xff0c;不断获得反馈&#xff0c;不断在实践中改进。 现实生活中&#xff0c;如果我们想实现这种高效学习&#xff0c;基本上只能找一个老师1对1指导&#xff0c;费用贵…

【开发者指南】如何在MyEclipse中使用 XML编辑器

XML编辑器包括高级XML编辑功能。通过本文&#xff0c;你将了解其编辑功能和网页XML编辑&#xff0c;一起来看看吧~ 1. Web XML编辑器 MyEclipse Web XML编辑器包括高级XML编辑功能&#xff0c;如: 语法高亮显示标签和属性内容辅助实时验证(在您输入时)文档内容的源视图、设计…

160743-62-4,DMG PEG2000,1,2-二肉豆蔻酰-rac-甘油-3-甲氧基聚乙二醇2000

DMG PEG2000&#xff0c;DMG-mPEG2000&#xff0c;1,2-二肉豆蔻酰-rac-甘油-3-甲氧基聚乙二醇2000 Product structure&#xff1a; Product specifications&#xff1a; 1.CAS No&#xff1a;160743-62-4 2.Molecular formula&#xff1a; C34H66O 3.Molecular weight&#xff…

Java内部类(成员内部类、静态嵌套类、方法内部类、匿名内部类)

文章目录 一、内部类的共性二、为什么需要内部类三、静态内部类&#xff08;静态嵌套类&#xff09;四、成员内部类五、局部内部类&#xff08;方法内部类&#xff09;六、匿名内部类 Java 类中不仅可以定义变量和方法&#xff0c;还可以定义类&#xff0c;这样定义在类内部的类…