前端三剑客(二):CSS

目录

1. CSS 基础

1.1 什么是 CSS

1.2 语法格式

1.3 引入方式

1.3.1 行内样式

1.3.2 内部样式

1.3.3 外部样式

1.4 CSS 编码规范

2. 选择器

2.1 标签选择器

2.2 id 选择器

2.3 class 选择器(类选择器)

2.4 复合选择器

2.5 通配符选择器

3. 常用 CSS 样式

3.1 color

3.2 font-size

3.5 height / width

3.4 border

3.5 边距

3.5.1 内边距 - padding

3.5.2 外边距 - margin


1. CSS 基础

1.1 什么是 CSS

CSS(Cascading Style Sheets), 层叠样式表, 是用来表示 HTML 的一种计算机语言.

CSS负责网页的视觉表现,它定义了网页元素的布局、颜色、字体、间距等样式属性。

通俗来说, CSS 就是对页面进行 "化妆".

简而言之,HTML定义了网页的结构,CSS负责网页的外观和布局,而JavaScript则负责让网页"动起来"(能够让网页动态变化)。三者共同工作,创造出功能丰富、用户友好的网页和网络应用。

1.2 语法格式

选择器 + {声明}

  1. 选择器决定修改谁
  2. 声明决定要修改的内容
  3. 声明的属性是键值对.(属性(键): 属性值(值))
  4. 多个键值对间使用 ; 进行分割

1.3 引入方式

1.3.1 行内样式

直接在标签中使用 style 属性, 引入 CSS 属性的键值对:

这种方式的缺点是代码冗余, 若想全部更改 div 标签中内容的颜色, 则需要一个一个的填写代码:

1.3.2 内部样式

定义 <style> 标签, 在标签中定义 CSS (指定选择器):

  • 选择器中所有的内容, 都会被修改为声明中的内容.
  • style 标签通常定义在 head 标签中

需要注意的是, 使用内部样式引入 css 的同时, 若存在 div 标签在内部引入 css 的情况下(行内样式), 则采取就近原则的方式进行格式的修改:

1.3.3 外部样式

定义 <link> 标签,通过 href 属性引入外部 css 文件:

这张方式的优点是, 实现了 HTML 代码和 CSS 代码分离, 实现解耦, 代码的可维护性高.

1.4 CSS 编码规范

CSS 不区分大小写, 但统一规范使用小写字母.

空格规范:

  1. 冒号后面跟一个空格
  2. 选择器和 { 之间留一个空格

2. 选择器

CSS 中的选择器, 可以指定选中的页面中的元素, 并对这个元素中内容进行统一的修改(颜色, 字体, 边框....).

选择器主要有以下几种:

  1. 标签选择器
  2. id 选择器
  3. class 选择器(类选择器)
  4. 复合选择器
  5. 通配符选择器

2.1 标签选择器

所有被标签选择器选中的元素, 标签中内容的属性都会被统一修改为选择器中设置的属性.

但是, 若选择器选中的标签中, 嵌套了一个 a 标签, 那么设置的属性值将不会生效, 因为 a 标签中也对内容进行了默认的属性设置, 标签中的内容将采取就近原则的方式跟随 a 标签默认设置的属性(内容离 a 标签最近).

如果要修改, 需要额外使用选择器选择 a 标签来进行修改:

也就是说, 选择器需要选中离内容最近的标签, 才会对内容的样式修改成功.

   /* 标签选择器 */div {color: red;}span {color: blue;}a {color: red;} 

2.2 id 选择器

id, 和我们之前所学的数据库中的 id 是相同的概念. 

页面中, 每个元素的 id 都是唯一的, 我们可以通过 id 选择器, 选中页面中某一元素的 id , 对该元素的样式进行细致的设置.

在使用 id 选择器时, 使用 # 对 id 进行选择:

 /* id 选择器 */#div1 {color: red;} 

2.3 class 选择器(类选择器)

每个元素可以设置唯一的 id 外, 还可以设置 class 值, 但是多个元素的 class 值可以是相同的.

具有相同 class 值的元素, 可以认为是同一组的, 使用 class 选择器则可以对这一组中所有的元素进行样式的设置.

使用 class 选择器时, 使用 . 对 class 进行选择:

        /* class 选择器 */.class1 {color: red;} 

2.4 复合选择器

复合选择器由多个单选择器构成, 单选择器可以是任意选择器, 可以是标签选择器, id 选择器, class 选择器 .... (但是不能是通配符选择器)

  • 复合选择器可以由具有嵌套关系的选择器构成(选择器间使用空格分割):
  • 复合选择器也可以由不同种类的选择器构成, 但是不同的标签间要使用 , (逗号)分割, 如:

其中,

  1. ol 标签(order list)为有序的列表标签
  2. ul 标签(unordered list)为无序的列表标签
  3. list 为列表标签
/* 复合选择器 */#div1, #div2 {color: purple;} ol li a{color: red;font-size: 20px;} 

2.5 通配符选择器

* 代表通配符, 通配符选择器选中的是页面中所有的元素(所有元素, 包含所有的嵌套标签).

使用通配符选择器可以对页面中所有的元素进行统一的修改.

/* 通配符选择器 */* {color: yellow;}

3. 常用 CSS 样式

3.1 color

color, 就是设置字体的颜色. 我们可以在选择器中指定 color 的属性值, 来指定字体的颜色.

color 属性值的设置有以下几种方式:

  1. 英文单词
  2. 手动设置三原色(红绿蓝)的比例, 如: rgb(xxx, xxx, xxx) (取值0~255)
  3. 使用16进制设置三原色的比例:

3.2 font-size

font-size: 设置字体的大小 

        /* 字体 */#div1 {font-size: 20px;}

3.5 height / width

我们知道, 像 div 这样的标签, 其实可以视为一个 "盒子". 而我们就可以对 "盒子" 来设置宽高.

需要注意的是: 只有块级标签才可以设置宽和高

height: 设置高

width: 设置宽

  1. 常见块级元素/块级标签: div , h1-h6 (带换行的)
  2. 常见行内元素/行内标签: span, a, img (不带换行的)

若对 span 这样的行内标签设置宽高是不起作用的:

但是, 我们也可以修改 display 的属性值将行内标签设置为块级标签:

  • 行内标签 => 块级标签: display: block;

也可以修改 display 将块级标签设置为行内标签:

  • 块级标签 => 行内标签: display: inline;

3.4 border

当我们设置好高和宽后, 我们可以对边框(border)进行设置(边框是一个复合属性):

  1. 设置边框类型(实线, 虚线, ...)
  2. 设置边框粗细
  3. 设置边框颜色(默认是透明的)

  • 我们可以对边框四个方向上的属性分别进行设置(以颜色为例, 粗细和宽度都是可以的):

对方框四个方向的样式分别进行设置时, 还可以将四个方向上的值一次性写到一个 border 中:

(从 top(上) 开始, 顺时针方向填写属性值)

         /* 以下两种写法是相同的 */#div1 {height: 50px;width: 200px;border: solid;border-top-color: yellow;border-right-color: black;border-bottom-color: red;border-left-color: blue;}#div1 {height: 50px;width: 200px;border: solid;border-color: yellow black red blue;}

  • 也可以对边框四个方向上的颜色, 粗细, 样式统一进行设置(四个方向上的边框都是相同的):

         /* 边框的四个方向都设置为: 粗细为: 1px, 颜色为: 红色, 样式为: 实线 *//* 以下两种写法是相同的 */#div1 {height: 50px;width: 200px;border-width: 1px;border-color: red;border-style: solid;}#div1 {height: 50px;width: 200px;border: 1px red solid;}

3.5 边距

边距分为以下两种:

  1. padding: 内边距
  2. margin: 外边距

内边距和外边距是两个相对的概念, 需要根据参照物来决定.

我们可以在选择器的声明中, 修改 padding / margin 的值来修改内外边距的距离.

如果以每个 div"盒子" 为参照物:

  • 那么每个 div"盒子" 的边框(border)和内容之间的距离就是内边距.(内容和边框之间的距离)
  • 每个 div"盒子" 和每个 div"盒子" 之间的距离就是外边距.(页面中, 元素和元素之间的距离)

3.5.1 内边距 - padding

padding: 内边距.

通过修改 padding 的值, 设置内容和边框之间的距离. (内容默认是顶着边框的)

padding 也是一个复合样式, 我们可以分别设置四个方向上的内边距:

  1. padding-top (上)
  2. padding-bottom (下)
  3. padding-left (左)
  4. padding-right (右)

当把四个方向的值一次性写到一个 padding 上时, 依旧是顺时针方向依次表示: 上 右 下 左.

3.5.2 外边距 - margin

margin: 外边距

通过修改 margin 的值, 设置盒子和盒子(元素和元素)之间的距离. (内容默认是顶着边框的)

        #div1 {padding: 10px;margin: 30px;}


END

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

udp_socket

文章目录 UDP服务器封装系统调用socketbind系统调用bzero结构体清0sin_family端口号ip地址inet_addrrecvfromsendto 新指令 netstat -naup (-nlup)包装器 的两种类型重命名方式包装器使用统一可调用类型 关键字 typedef 类型重命名系统调用popen关于inet_ntoa UDP服务器封装 系…

【LLM训练系列02】如何找到一个大模型Lora的target_modules

方法1&#xff1a;观察attention中的线性层 import numpy as np import pandas as pd from peft import PeftModel import torch import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel, BitsAndBytesConfig from typ…

解!决!vscode!Path Intellisense 失效!不起作用问题!!

第一步&#xff1a;找到path Intellisense插件 点击设置 第二步&#xff1a;打开settings.json文件&#xff1a; 第三步&#xff1a;配置settings.json文件内容&#xff1a; "path-intellisense.mappings": {"": "${workspaceRoot}/src",&qu…

力扣 LeetCode 110. 平衡二叉树(Day8:二叉树)

解题思路&#xff1a; 等于 -1 时&#xff0c;直接 return -1 class Solution {public boolean isBalanced(TreeNode root) {return getHeight(root) ! -1;}public int getHeight(TreeNode root) {if (root null) return 0;int leftDepth getHeight(root.left);if (leftDep…

ros2学习日记_241124_ros相关链接

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…

【TEST】Apache JMeter + Influxdb + Grafana

介绍 使用Jmeter发起测试&#xff0c;测试结果存入Influxdb&#xff0c;Grafana展示你的测试结果。 环境 windows 10docker desktopJDK17 安装 Apache JMeter 访问官网&#xff08;Apache JMeter - Apache JMeter™&#xff09;下载JMeter&#xff08;目前最新版本5.6.3&a…

【隐私计算大模型】联邦深度学习之拆分学习Split learning原理及安全风险、应对措施以及在大模型联合训练中的应用案例

Tips&#xff1a;在两方场景下&#xff0c;设计的安全算法&#xff0c;如果存在信息不对等性&#xff0c;那么信息获得更多的一方可以有概率对另一方实施安全性攻击。 1. 拆分学习原理 本文介绍了一种适用于隐私计算场景的深度学习实现方案——拆分学习&#xff0c;又称分割…

汽车HiL测试:利用TS-GNSS模拟器掌握硬件性能的仿真艺术

一、汽车HiL测试的概念 硬件在环&#xff08;Hardware-in-the-Loop&#xff0c;简称HiL&#xff09;仿真测试&#xff0c;是模型基于设计&#xff08;Model-Based Design&#xff0c;简称MBD&#xff09;验证流程中的一个关键环节。该步骤至关重要&#xff0c;因为它整合了实际…

Vue——响应式数据,v-on,v-bind,v-if,v-for(内含项目实战)

目录 响应式数据 ref reactive 事件绑定指令 v-on v-on 鼠标监听事件 v-on 键盘监听事件 v-on 简写形式 属性动态化指令 v-bind iuput标签动态属性绑定 img标签动态属性绑定 b标签动态属性绑定 v-bind 简写形式 条件渲染指令 v-if 遍历指令 v-for 遍历对象的值 遍历…

Redis 常用数据类型插入性能对比:循环插入 vs. 批量插入

Redis 是一款高性能的键值数据库&#xff0c;其支持多种数据类型&#xff08;String、Hash、List、Set、ZSet、Geo&#xff09;。在开发中&#xff0c;经常会遇到需要插入大量数据的场景。如果逐条插入&#xff0c;性能会显得较低&#xff0c;而采用 Pipeline 批量插入 能大幅提…

开源动态表单form-create-designer 扩展个性化配置的最佳实践教程

在开源低代码表单设计器 form-create-designer 的右侧配置面板里&#xff0c;field 映射规则为开发者提供了强大的工具去自定义和增强组件及表单配置的显示方式。通过这些规则&#xff0c;你可以简单而高效地调整配置项的展示&#xff0c;提升用户体验。 源码地址: Github | G…

Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化

一、背景 线上程序连接mongos超时&#xff0c;mongo监控显示连接数已使用100%。 java程序报错信息&#xff1a; org.mongodb.driver.connection: Closed connection [connectionId{localValue:1480}] to 192.168.10.16:3717 because there was a socket exception raised by…

深入浅出分布式缓存:原理与应用

文章目录 概述缓存分片算法1. Hash算法2. 一致性Hash算法3. 应用场景Redis集群方案1. Redis 集群方案原理2. Redis 集群方案的优势3. Java 代码示例:Redis 集群数据定位Redis 集群中的节点通信机制:Gossip 协议Redis 集群的节点通信:Gossip 协议Redis 集群的节点通信流程Red…

Loom篇之java虚拟线程那些事儿

我们在之前的文章中提到了java推出纤程的背景和原因。在近三十年来&#xff0c;Java 开发人员一直依赖线程作为并发服务器应用程序的构建块。每个方法中的每个语句都在线程内执行&#xff0c;并且由于 Java 是多线程的&#xff0c;因此多个执行线程会同时发生。线程是 Java 的并…

自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor git地址&#xff1a;https://github.com/opendatalab/MinerU 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易&#xff0c;希望走过路…

如何选择服务器

如何选择服务器 选择服务器时应考虑以下几个关键因素&#xff1a; 性能需求。根据网站的预期流量和负载情况&#xff0c;选择合适的处理器、内存和存储容量。考虑网站是否需要处理大量动态内容或高分辨率媒体文件。 可扩展性。选择一个可以轻松扩展的服务器架构&#xff0c;以便…

Spring 框架七大模块(Java EE 学习笔记03)

​ ​核心容器模块&#xff08;Core Container&#xff09; 核心容器模块在Spring的功能体系中起着支撑性作用&#xff0c;是其他模块的基石。核心容器层主要由Beans模块、Core模块、Contex模块和SpEL模块组成。 &#xff08;1&#xff09;Beans模块。它提供了BeanFactory类&…

2025-2026财年美国CISA国际战略规划(下)

文章目录 前言四、加强综合网络防御&#xff08;一&#xff09;与合作伙伴共同实施网络防御&#xff0c;降低集体风险推动措施有效性衡量 &#xff08;二&#xff09;大规模推动标准和安全&#xff0c;以提高网络安全推动措施有效性衡量 &#xff08;三&#xff09;提高主要合作…

【大数据技术与开发实训】携程景点在线评论分析

景点在线评论分析 题目要求实验目标技术实现数据采集获取所有相关景点页面的 URL获取所有相关景点对应的 poiId 及其他有用信息通过 poiId 获取所有景点的全部评论数据采集结果 数据预处理景点信息的数据预处理查看数据基本信息缺失值处理 用户评论的数据处理缺失值处理分词、去…

《第十部分》1.STM32之通信接口《精讲》之IIC通信---介绍

经过近一周的USART学习&#xff0c;我深刻体会到通信对单片机的重要性。它就像人类的手脚和大脑&#xff0c;只有掌握了通信技术&#xff0c;单片机才能与外界交互&#xff0c;展现出丰富多彩的功能&#xff0c;变得更加强大和实用。 单片机最基础的“语言”是二进制。可惜&am…