【前端学习】D2-2:CSS基础

news2024/9/20 9:34:45

文章目录

  • 前言
  • 系列文章目录
  • 1 Emmet语法
    • 1.1 快速生成HTML语法结构
    • 1.2 快速生成CSS样式语法
    • 1.3 快速格式化代码
  • 2 CSS复合选择器
    • 2.1 什么是复合选择器
    • 2.2 后代选择器(*)
    • 2.3 子选择器
    • 2.4 并集选择器(*)
    • 2.5 伪类选择器
    • 2.6 链接伪类选择器
    • 2.7 :focus为类选择器
  • 3 CSS的元素显示模式
    • 3.1 什么是元素的显示模式
    • 3.2 块元素
    • 3.3 行内元素
    • 3.4 行内块元素
    • 3.5 元素的显示模式的转换(*)
    • 3.6 一个小工具Snipaste的使用
    • 3.7 单行文字垂直居中原理
    • 3.8 案例:简洁版小米侧边栏
  • 4 CSS背景
    • 4.1 背景颜色
    • 4.2 背景图片(*)
    • 4.3 背景平铺
    • 4.4 背景位置
    • 4.5 背景图像固定(背景附着)
    • 4.6 背景属性复合写法
    • 4.7 背景色半透明
  • 5 总结


前言

这篇文章为我跟随pink老师重新系统学习前端时做的一些笔记。

系列文章目录

【前端学习】D1:HTML简介与HTML标签
【前端学习】D2-1:CSS入门
【前端学习】D2-2:CSS基础


1 Emmet语法

Emmet语法的前身是Zen Coding,它使用缩写来提高HTML/CSS的编写速度,VS Code内部已集成该语法。

1.1 快速生成HTML语法结构

  1. 生成标签,直接输入标签名按tab键即可。
  2. 如果想要生成多个相同标签,加上*,如div*3。
  3. 如果有父子级关系的标签,可以用>,如ul>li。
  4. 如果有兄弟关系的标签,用+,如div+p。
  5. 如果生成带有类名或者id名字的,直接写.demo或者#two,再使用tab键。默认生成div,也可生成其他标签,如ul>li#two。
  6. 如果生成的div类名是有顺序的,使用自增符号$。如.demo$*5。
  7. 如果想要在生成的标签内部写内容可以用{}表示,如div{text}。

1.2 快速生成CSS样式语法

CSS基本采取简写形式。

  • 比如 w200 按tab可以生成 width: 200px;
  • 比如 lh26 按tab可以生成 line-height: 26px;

1.3 快速格式化代码

VS Code快速格式化代码:右键 --> 格式化代码 或 shift + alt + f
也可以设置页面保存时自动格式化代码:

  1. 文件 --> 首选项 --> 设置
  2. 搜索emmet.include
  3. 在settings.json下的用户中添加以下语句
    “editor.formatOnType”:true,
    “editor.formatOnSave”:true

编译器设置

2 CSS复合选择器

2.1 什么是复合选择器

在CSS中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合而形成的。

  • 复合选择器可以更准确、更高效地选择目标元素(标签)
  • 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
  • 常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等

2.2 后代选择器(*)

后代选择器又称为包含选择器,可以选择父元素里面的子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就称为外层标签的后代。

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

上述语法表示选择元素1里面的所有元素2(后代元素)。

  • 元素1和元素2中间用空格隔开
  • 元素1是父级,元素2是子级,最终选择的时元素2
  • 元素2可以是儿子,也可以是孙子等,只要是元素1的后代元素
  • 元素1与元素2可以是任何基础选择器
ol li a {
	color: red;
}
.nav li a {
	color: red;
}

2.3 子选择器

子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素。

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

上述语法表示选择元素1里面的所有直接后代(子元素)元素2。

  • 元素1和元素2中间用大于号隔开。
  • 元素1是父级,元素2是子级,最终选择的是元素2。
  • 元素2必须是亲儿子(直接后代)。

2.4 并集选择器(*)

并集选择器可以选择多组标签,同时为它们定义相同的样式,通常用于集体生命。
并集选择器是个选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。

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

上述语法表示选择元素1和元素2。

2.5 伪类选择器

伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第n个元素。
伪类选择器书写最大的特点是用冒号(:)表示,比如:hover,:first-child。

2.6 链接伪类选择器

  • a:link /* 选择所有未被访问的链接 */
  • a:visited /* 选择所有已被访问的链接 */
  • a:hover /* 选择鼠标指针位于其上方的链接 */
  • a:active /* 选择活动链接(鼠标按下未弹起的链接) */
  1. 为了确保生效,按照LVHA的顺序声明,即:link,:visited,:hover,:active
  2. 因为a链接在浏览器中具有默认样式,所以实际开发中都需要给链接单独指定样式

2.7 :focus为类选择器

:focus伪类选择器用于获取获得焦点的表单元素。
焦点就是光标,一般情况<input>类表单元素才能获取,因此这个选择器也主要针对表单元素。

input:focus {
	background-color: yellow;
}

3 CSS的元素显示模式

3.1 什么是元素的显示模式

元素显示模式就是元素(标签)以什么方式进行显示。
HTML元素一般分为块元素和行内元素两种类型。

3.2 块元素

常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最经典的块元素。
块元素的特点:

  1. 独占一行。
  2. 高度,宽度,外边距以及内边距都可以控制。
  3. 宽度默认是容器(父级宽度)的100%。
  4. 是一个容器及盒子,里面可以放行内或者块级元素。
  • 文字类的元素内不能使用块级元素。
  • <p>标签主要用于存放文字,因此<p>里面不能放块级元素。
  • <h1>~<h6>等都是文字类块元素,同<p>。

3.3 行内元素

常见的行内元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>是最典型的行内元素。有时也将行内元素称为内联元素。
行内元素的特点:

  1. 相邻行内元素在一行上,一行可以显示多个。
  2. 高、宽直接设置是无效的。
  3. 默认宽度就是它本身内容的宽度。
  4. 行内元素只能容纳文本或其他行内元素。
  • 链接里面不能再放链接。
  • 特殊情况链接<a>里面可以放块级元素,但<a>需转换为块级模式。

3.4 行内块元素

行内元素中有几个特殊的标签<img />、<input />、<td>,它们同时具有块元素和行内元素的特点,称之为行内块元素。
行内块元素的特点:

  1. 和相邻行内元素(行内块)在一行上,但是它们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
  2. 默认宽度就是它本身内容的宽度(行内元素特点)。
  3. 高度、行高、外边距以及内边距都可以控制(块内元素特点)。

3.5 元素的显示模式的转换(*)

特殊情况下,需要元素模式的转换。简单理解,一个模式的元素需要另一种模式的特性,比如想要增加链接<a>的触发范围。

  • 转换为块元素:display: block;
    a {
    	width: 150px;
    	height: 50px;
    	background-color: red;
    	display: block;
    }
    
  • 转换为行内元素:display: inline;
    div {
    	width: 150px;
    	height: 50px;
    	background-color: red;
    	display: inline;
    }
    
  • 转换为行内块元素:display: inline-block;
    span {
    	width: 100px;
    	height: 300px;
    	background-color: red;
    	display: inline-block;
    }
    

3.6 一个小工具Snipaste的使用

Snipaste是一个简单但抢答的截图工具,可以将截图贴回屏幕上。
常用快捷方式:

  1. F1可以截图,同时测量大小、设置箭头、书写文字等
  2. F3在桌面置顶显示
  3. 点击图片,alt可以取色(按下shift切换取色模式)
  4. 按下esc取消图片显示

3.7 单行文字垂直居中原理

CSS没有提供文字垂直居中的代码。
解决方案:让文字的行高等于盒子的高度。
原理:

  • 行高=上空隙+文字本身高度+下空隙。
  • 行高<盒子高度,文字偏上。
  • 行高>盒子高度,文字偏下。

3.8 案例:简洁版小米侧边栏

思路:

  1. 把链接a转换为块级元素,这样链接就可以单独占一行,并且有宽度和高度。
  2. 鼠标经过a给链接设置背景颜色。
/* 1. 把a转换为块级元素 */
a {
	display: block;
    width: 230px;
    height: 40px;
    background-color: #55585a;
    font-size: 14px;
    color: #fff;
    text-decoration: none;
    text-indent: 2em;
    line-height: 40px;
}
/* 2 鼠标经过链接变换背景颜色 */
a:hover {
	background-color: #ff6700;
}

4 CSS背景

通过CSS背景属性,可以给页面元素添加背景样式。
背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。

4.1 背景颜色

background-color属性定义了元素的背景颜色。

background-color: 颜色值;

一般情况下元素背景颜色默认值是transparent(透明)。

4.2 背景图片(*)

background-image属性描述了元素的背景图像。实际开发常见于Logo、一些装饰性的小图片或是超大的背景图,优点是非常便于控制位置

background-image: none | url(url);
参数值作用
none无背景图(默认的)
url使用绝对或相对地址指定背景图像

当图片尺寸小于盒子尺寸时,会有平铺效果。

4.3 背景平铺

如果需要在HTML页面上对背景图进行平铺,可以使用background-repeat属性。

background-repeat: repeat | no-repeat | repeat-x | repeat-y;
参数值作用
repeat背景图像在纵向和横向上平铺(默认的)
no-repeat背景图像不平铺
repeat-x背景图像在横向上平铺
repeat-y背景图像在纵向上平铺

4.4 背景位置

利用background-position属性可以改变图片在背景中的位置。

background-position: x y;

参数代表的意思是x坐标和y坐标。可以使用方位名词或精确单位。

参数值说明
length百分数 | 由浮点数字和单位标识符组成的长度值
positiontop | center | bottom | left | center | right 方位名词
  1. 参数是方位名词
    • 如果指定的两个值都是方位名词,则两个值前后顺序无关,比如left top和top left效果一致。

    • 如果只指定了一个方位名词,另一个值省略,则第二个值默认居中对齐。

    • 案例一:

    <!DOCTYPE html>
    <html lang="en">
    	<head>
       		<meta charset="UTF-8">
       		<meta name="viewport" content="width=device-width, initial-scale=1.0">
       		<meta http-equiv="X-UA-Compatible" content="ie=edge">
       		<title>背景位置方位名词应用一</title>
       		<style>
    			h3 {
    		    	width: 118px;
    		        height: 40px;
    		        /* background-color: pink; */
    	            font-size: 14px;
    	            font-weight: 400;
    		        line-height: 40px;
    	            background-image: url(images/icon.png);
    	            background-repeat: no-repeat;
    		        background-position: left center;
    		        text-indent: 1.5em;
    		    }
        	</style>
    	</head>
    
    	<body>
        	<h3>
            	成长守护平台
        	</h3>
    	</body>
    </html>
    
    • 案例二:
    <!DOCTYPE html>
    <html lang="en">
    	<head>
        	<meta charset="UTF-8">
        	<meta name="viewport" content="width=device-width, initial-scale=1.0">
        	<meta http-equiv="X-UA-Compatible" content="ie=edge">
        	<title>超大背景图片</title>
    	    <style>
    	        body {
    	            background-image: url(images/bg.jpg);
    	            background-repeat: no-repeat;
    	            /* background-position: center top; */
    	            background-position: center 40px;
    	
    	        }
    	    </style>
    	</head>
    	
    	<body>
    	</body>
    </html>
    
  2. 参数是精确单位
    • 如果参数值是精确坐标,那么第一个一定是x坐标,第二个一定是y坐标。
    • 如果只指定一个数值,那该数值一定是x坐标,另一个默认垂直居中。
  3. 如果参数是混合单位
    • 如果指定的两个值是精确单位和方位名词混合使用,则第一个值是x坐标,第二个值是y坐标。

4.5 背景图像固定(背景附着)

background-attachment属性设置背景图像是否固定或随着页面的剩余部分滚动。
background-attachment后期可以制作视差滚动的效果。

background-attachment: scroll |fixed;
参数作用
scroll背景图像是随对象内容滚动,默认值
fixed背景图像固定

4.6 背景属性复合写法

可以将所有属性合并简写在同一个属性background中,从而节约代码量,是实际开发中提倡的写法。
当使用简写属性时,没有特定的书写习惯,一般习惯约定顺序为:

background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置;

body {
	background-image: url(images/bg.jpg);
	background-repeat: no-repeat;
	background-position: center top;
	background-attachment: fixed;
	background-color: black;
	color: #fff;
	font-size: 20px;		
}

可简写为

body {
	background: black url(images/bg.jpg) no-repeat  fixed  center top;
	color: #fff;
	font-size: 20px;
}

4.7 背景色半透明

CSS3提供了背景颜色半透明的效果。

background: rgba(0, 0, 0, 0.3);
  • 最后一个参数是alpha透明度,取值范围在0~1之间。
  • 习惯把0.3的0省略掉,写为background: rgba(0, 0, 0, .3)
  • 背景半透明是指盒子背景半透明,盒子里面的内容不受影响。

5 总结

  • 复合选择器
    以前只使用过简单选择器和并集选择器,现在才认真了解复合选择器。
  • 元素模式转换
    以前做导航栏都是<div>里面嵌套<a>标签,代码很臃肿。现在把行内元素<a>标签转换为行内块元素,设置样式很方便,就是这几个模式刚开始学很容易分不清。
  • background-image
    以前我插入图片(特别是超大背景图)只会用<img>标签,调整位置和尺寸就很难受,现在学了background-image感觉方便多了。

要坚持不下去了,CSS的内容怎么这么多。还是那句话,希望有下一篇。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业文件数据泄露防护(DLP)

什么是数据丢失防护 数据丢失防护 &#xff08;DLP&#xff09; 是保护数据不落入坏人之手的做法。如今&#xff0c;数据传输的主要问题是使大量数据容易受到未经授权的传输。通过设置足够的安全边界&#xff0c;您可以控制数据在网络中的移动。由于您的数据非常有价值&#x…

Java方法的使用

目录 一、方法的概念及使用 1、什么是方法(method) 2、方法定义 3、方法调用的执行过程 4、实参和形参的关系 二、方法重载 1、为什么需要方法重载 2、方法重载概念 3、方法签名 三、递归 1、递归的概念 2、递归执行过程分析 一、方法的概念及使用 1、什么是方法(met…

MySQL 字符串函数

点击上方蓝字关注我平生文字为吾累&#xff0c;此去声名不厌低。 寒上纵归他日马&#xff0c;城中不斗少年鸡。MySQL提供了许多常用的字符串函数&#xff0c;以下是其中一些常用的字符串函数和用法&#xff1a;CONCATCONCAT函数用于连接两个或多个字符串。以下是一个示例&#…

MGAT: Multimodal Graph Attention Network for Recommendation

模型总览如下&#xff1a; 图1&#xff1a;多模态图注意力网络背景&#xff1a;本论文是对MMGCN&#xff08;Wei et al., 2019&#xff09;的改进。MMGCN简单地在并行交互图上使用GNN&#xff0c;平等地对待从所有邻居传播的信息&#xff0c;无法自适应地捕获用户偏好。 MMGCN…

Qt学习5-Qt Creator文件操作(哔站视频学习记录)

实现文件编辑器代码 目录 一、代码要点 二、重点函数 1、conncet 2、getOpenFileName 3、getSaveFileName 4、读取文件到textEdit 5、textEdit保存到文件 三、全部代码 mainwindow.h mainwindow.cpp 一、代码要点 MainWindow的菜单栏实现&#xff1b;connect函数连接…

【Linux】理解Linux环境变量

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 初识环境变量 什么是环境变量 我们平常所用的Linux指令其实也是可执行程序&#xff0c;和我们自己写的二进制程序没什么两样&#xff0c;那么为什么我们在执行自己的程序的时候需要加上 ./…

基于 OpenCV 与 Java 两个语言版本实现获取某一图片特定区域的颜色对比度

本文目录一、什么是对比度二、什么是颜色直方图三、如何通过RGB计算颜色对比度什么是HSV、Lab颜色空间四、OpenCV代码五、Java代码5.1 平滑处理5.2 完整代码一、什么是对比度 对比度是指图像中不同区域之间的明暗差异程度&#xff0c;它是图像质量中的重要指标之一。除了颜色对…

java的Map集合说明及方法demo示例

一、Map集合的特点&#xff1a;Map集合的特点&#xff1a;1.Map是一个双列集合&#xff0c;一个元素包含两个值&#xff08;一个key&#xff0c;一个value&#xff09;2.Map集合中的元素&#xff0c;key和value的数据类型可以相同&#xff0c;也可以不同3.Map中的元素&#xff…

概率论小课堂:泊松分布(完善你对随机性的认识,特别是对风险防范的认识)

文章目录 引言I 泊松分布1.1 概率计算公式1.2 应对随机性,需要的冗余比平均值要大1.3 池子越大,越能抵消随机性带来的误差引言 伯努利试验:解释了随机事件的发生概率在理论和现实中的差距泊松分布:进一步完善你对随机性的认识,特别是对风险防范的认识。另一类特殊的伯努利…

11.Maxwell 部署

Maxwell 部署 一、环境准备 1、确保服务器上已经安装好了zookeeper、kafka、MySQL软件&#xff1b; &#xff08;1&#xff09;启动zookeeper: /usr/app/zookeeper3.4/bin/zkServer.sh start&#xff08;2&#xff09;启动三台主题的kafka 启动&#xff1a;bin/kafka-serv…

js求解《初级算法》141. 环形链表

一、题目描述 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置…

Apollo控制部分2-- ControllerAgent 控制器管理

Apollo控制部分2-- ControllerAgent 控制器管理摘要一、预备知识1、控制模块预备知识2、多态二、控制器管理解析1、初始化函数&#xff08;配置文件参数决定控制器&#xff09;1&#xff09;配置文件&#xff1a;"/apollo/modules/control/conf/control_conf.pb.txt"…

借助Spire.PDF,这家企业低成本实现在线文档签名和量打印

“公司主要是做跨国运输业务的&#xff0c;我们的客户在邮寄过程中需要提交和下载的确认材料非常多&#xff0c;这些材料大多需要客户分别下载后再手写签字确认上传&#xff0c;这导致我们订单操作效率非常低&#xff0c;还容易导致系统卡顿&#xff0c;我们一直在寻找合性能稳…

【C++】BloomFilter——布隆过滤器

文章目录一、布隆过滤器概念二、布隆过滤器应用三、布隆过滤器实现1.插入2.查找3.删除四、布隆过滤器优缺五、结语一、布隆过滤器概念 布隆过滤器是由布隆&#xff08;Burton Howard Bloom&#xff09;在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构&#xff0c;特点是…

从互联网科技到手机厂商,谁能扮演好孩子们的“辅导老师”?

【潮汐商业评论/ 原创】“ 没想到现在小孩子的学习机花样这么多&#xff0c;从配置到内容&#xff0c;挑得我是眼花缭乱&#xff0c;跟咱们那会儿一台复读机就能搞定学习完全不一样&#xff01;”80后的Gavin最近苦于为自己要上小学的孩子选购一台合适的学习机。本想是一件很容…

Process Monitor工具使用实验(23)

实验目的 学习Process Monitor实用小工具的使用&#xff0c;学会利用Process Monitor工具观察程序进程/线程、文件系统、注册表、网络连接等的活动。预备知识 Process Monitor是一个Windows系统下先进的监视工具&#xff0c;它可以显示文件系统、注册表、网络连接、进程…

操作系统基础知识介绍之Mixed CriticalitySystems——混合关键系统

一、发展背景 在嵌入式场景中&#xff0c;虽然Linux已经得到了广泛应用&#xff0c;但并不能覆盖所有需求&#xff0c;例如高实时、高可靠、高安全的场合。这些场合往往是实时操作系统 的用武之地。有些应用场景既需要Linux的管理能力、丰富的生态又需要实时操作系统的高实时、…

spring加载bean流程解析

spring作为目前我们开发的基础框架,每天的开发工作基本和他形影不离,作为管理bean的最经典、优秀的框架&#xff0c;它的复杂程度往往令人望而却步。不过作为朝夕相处的框架&#xff0c;我们必须得明白一个问题就是spring是如何加载bean的&#xff0c;我们常在开发中使用的注解…

机器人工程专业师生的第二张名片

课堂上多次提及第二张名片。什么是CatGPT-使用效果如何-专业感性非理性总结如下&#xff1a;机器人工程的工作与考研之困惑→汇总篇←其中包括&#xff1a;☞ 机器人工程的工作与考研之困惑“卷”☞ 机器人工程的工作与考研之困惑“歧视”☞ 机器人工程的工作与考研之困惑“取舍…

62-63-64 - 进程互斥锁Mutex的初步实现

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 问题2. 系统调用重设计2.1 互斥锁系统调用功能设计2.2 整体调用流程2.3 编程实验&#xff1a;互斥锁模块的创建2.4 思考3. 在内核态实现互斥锁功能的考虑3.1 互斥锁内核数据结构及接口实现3.1.1 创建互斥锁3.1.2 销毁互斥锁3.1.3…