30分钟学会css
CSS 基本语法
CSS(Cascading Style Sheets)是一种样式表语言,用于描述 HTML(或 XML)文档的呈现。它可以控制网页元素的颜色、字体、布局等外观样式,实现内容与表现的分离,让网页设计更加灵活和高效。
在线体验一下 CSS 在线编辑器。
千万不要被「样式表」、「语言」吓到,CSS 的语法也很直观,常用的规则结构并不复杂,用于日常网页美化绰绰有余,花一点时间就能建立基本概念。
就是这些基本的规则结构,却能让人优雅地控制网页的呈现,专注于样式设计而不是混淆内容结构,达到“心中有版,落笔生花”的境界。
CSS 选择器语法
要为 HTML 元素添加样式,首先需要选中这些元素。CSS 使用选择器来定位要应用样式的 HTML 元素。
| CSS 语法 | 作用 | 示例 |
|---|---|---|
element | 选择所有指定的 HTML 元素 | p { color: blue; } |
.class | 选择带有指定 class 属性的所有 HTML 元素 | .highlight { font-weight: bold; } |
#id | 选择带有指定 id 属性的 HTML 元素 | #header { background-color: #eee; } |
* | 选择文档中的所有 HTML 元素 | * { margin: 0; padding: 0; } |
element, element | 选择所有指定的 HTML 元素 (分组选择) | h1, h2 { color: green; } |
element element | 选择指定元素内的所有指定后代元素 | div p { font-size: 16px; } |
element > element | 选择指定父元素下的直接子元素 | ul > li { list-style-type: none; } |
element + element | 选择紧接在指定元素后的同级元素 | h2 + p { text-indent: 2em; } |
element ~ element | 选择指定元素后的所有同级元素 | h2 ~ p { color: gray; } |
[attribute] | 选择带有指定属性的 HTML 元素 | a[target] { text-decoration: none; } |
[attribute=value] | 选择带有指定属性和值的 HTML 元素 | input[type="text"] { border: 1px solid black; } |
[attribute~=value] | 选择属性值包含指定词的元素 | a[class~="button"] { padding: 5px; } |
| `[attribute | =value]` | 选择属性值以指定值开头的元素 |
element:pseudo-class | 选择指定元素的特殊状态 | a:hover { color: red; } |
element::pseudo-element | 选择指定元素的某个部分 | p::first-line { font-weight: bold; } |
可选语法 (无直接对应,此处强调选择器多样性)
CSS 的选择器机制非常强大,除了上述基本类型,还有更复杂的选择器组合和伪类/伪元素可以使用,以更精确地定位元素。
最佳实践
为了代码的可读性和维护性,建议使用语义化的 class 名称,避免过度使用 ID 选择器,并合理利用选择器的优先级规则。
| ✅ Do this | ❌ Don’t do this |
|---|---|
.product-title { ... } | #productTitle { ... } (除非必要) |
.btn-primary { ... } | .button1 { ... } (语义不明确) |
CSS 属性与值
选中元素后,就可以使用 CSS 属性来设置元素的样式。每个属性都有一个或多个值,用于指定属性的具体表现。
| CSS 语法 | HTML (无直接对应,描述作用) | 预览效果 (描述性) |
|---|---|---|
color: blue; | 设置文本颜色为蓝色 | 文本显示为蓝色 |
font-size: 16px; | 设置字体大小为 16 像素 | 文本显示为 16 像素大小 |
background-color: #f0f0f0; | 设置背景颜色为浅灰色 | 元素背景显示为浅灰色 |
width: 100px; | 设置元素宽度为 100 像素 | 元素宽度为 100 像素 |
height: auto; | 设置元素高度为自动 | 元素高度根据内容自动调整 |
margin: 10px; | 设置元素外边距为 10 像素 | 元素周围有 10 像素的空白 |
padding: 5px; | 设置元素内边距为 5 像素 | 元素内容与边框之间有 5 像素的空白 |
border: 1px solid black; | 设置边框为 1 像素实线黑色 | 元素有 1 像素的黑色实线边框 |
text-align: center; | 设置文本居中对齐 | 元素内的文本居中显示 |
display: block; | 设置元素为块级元素 | 元素独占一行,可以设置宽高 |
display: inline; | 设置元素为行内元素 | 元素与其他行内元素共享一行,无法设置宽高 |
display: inline-block; | 设置元素为行内块级元素 | 元素像行内元素一样排列,但可以设置宽高 |
属性(Property)用法的最佳实践
合理使用 CSS 属性,遵循语义化原则,避免过度使用行内样式,并使用简写属性来提高效率。
| ✅ Do this | ❌ Don’t do this |
|---|---|
margin: 10px 20px; (上下 10px,左右 20px) | margin-top: 10px; margin-bottom: 10px; margin-left: 20px; margin-right: 20px; |
| 使用外部 CSS 文件 | 大量使用行内样式 (<p style="...">) |
CSS 常用单位
在 CSS 中,许多属性值需要指定单位。常见的单位包括像素 (px)、百分比 (%)、em、rem 等。
| CSS 单位 | 说明 | 示例 |
|---|---|---|
px | 像素,绝对单位,在不同设备上大小固定 | font-size: 16px; |
% | 百分比,相对于父元素的尺寸 | width: 50%; |
em | 相对单位,相对于当前元素的字体大小 | padding: 2em; |
rem | 相对单位,相对于根元素 (html) 的字体大小 | font-size: 1.2rem; |
vw | 视口宽度 (viewport width) 的百分比 | width: 50vw; |
vh | 视口高度 (viewport height) 的百分比 | height: 100vh; |
vmin | 视口宽度和高度中较小者的百分比 | max-width: 80vmin; |
vmax | 视口宽度和高度中较大者的百分比 | max-height: 90vmax; |
pt | 磅,绝对单位,主要用于打印 | font-size: 12pt; |
pc | 派卡,绝对单位,1pc = 12pt | font-size: 1pc; |
in | 英寸,绝对单位 | width: 1in; |
cm | 厘米,绝对单位 | width: 2.54cm; |
mm | 毫米,绝对单位 | width: 10mm; |
单位(Unit)用法的最佳实践
在网页设计中,推荐使用相对单位(如 em、rem、%)来实现页面的响应式布局和更好的用户体验。rem 通常用于设置字体大小,而 % 则常用于设置宽度和高度。
| ✅ Do this | ❌ Don’t do this |
|---|---|
font-size: 1rem; | font-size: 16px; (不利于用户调整字体) |
width: 100%; | width: 960px; (可能在小屏幕上溢出) |
CSS 颜色表示
CSS 提供了多种表示颜色的方式。
| CSS 语法 | HTML (无直接对应) | 预览效果 (描述性) |
|---|---|---|
color: blue; | 使用预定义的颜色名称 | 文本显示为蓝色 |
color: #0000FF; | 使用十六进制颜色值 | 文本显示为蓝色 |
color: #00F; | 使用三位十六进制简写 | 文本显示为蓝色 |
color: rgb(0, 0, 255); | 使用 RGB 函数 | 文本显示为蓝色 |
color: rgba(0, 0, 255, 0.5); | 使用 RGBA 函数 (带透明度) | 文本显示为半透明的蓝色 |
color: hsl(240, 100%, 50%); | 使用 HSL 函数 | 文本显示为蓝色 |
color: hsla(240, 100%, 50%, 0.5); | 使用 HSLA 函数 (带透明度) | 文本显示为半透明的蓝色 |
颜色(Color)用法的最佳实践
根据具体需求选择合适的颜色表示方法。十六进制颜色值常用于精确的颜色定义,而 RGBA 和 HSLA 则适用于需要透明度的场景。
| ✅ Do this | ❌ Don’t do this |
|---|---|
background-color: rgba(0, 0, 0, 0.8); | background-color: black; opacity: 0.8; (可能影响子元素) |
| 使用有意义的颜色变量 | 在代码中硬编码大量的颜色值 |
CSS 注释
CSS 注释用于在样式表中添加说明,不会被浏览器解析。
/* 这是一行 CSS 注释 *//** 这是一个* 多行 CSS 注释*/
注释(Comment)用法的最佳实践
编写清晰的 CSS 注释,解释代码的作用和意图,提高代码的可读性和可维护性。
| ✅ Do this | ❌ Don’t do this |
|---|---|
/* 设置导航栏的样式 */ | /* 样式 */ (过于简单,没有提供足够的信息) |
/* 修复了在 IE 浏览器下的显示问题 */ | 避免在注释中包含不友好的或攻击性的言论 |
CSS 盒模型
CSS 盒模型描述了 HTML 元素周围生成的矩形盒子。它由内容 (content)、内边距 (padding)、边框 (border) 和外边距 (margin) 组成。
+-----------------+
| Margin | 外边距
+-----------------+
| Border | 边框
+-----------------+
| Padding | 内边距
+-----------------+
| Content | 内容
+-----------------+
盒模型(Box Model)用法的最佳实践
理解盒模型对于进行网页布局至关重要。可以通过调整 box-sizing 属性来改变盒模型的计算方式,更方便地控制元素的尺寸。
| ✅ Do this | ❌ Don’t do this |
|---|---|
使用 box-sizing: border-box; | 混淆 content-box 和 border-box 的计算方式 |
| 合理设置 margin 和 padding 来控制间距 | 过度依赖 margin 或 padding 来实现布局 |
CSS 优先级与继承
当多个 CSS 规则应用于同一个 HTML 元素时,浏览器会根据优先级规则来确定最终应用的样式。继承是指某些 CSS 属性会从父元素传递到子元素。
优先级由高到低:
- 内联样式 (HTML 元素中的
style属性) - ID 选择器 (
#id) - 类选择器 (
.class)、属性选择器 ([attribute])、伪类选择器 (:hover) - 元素选择器 (
element)、伪元素选择器 (::before) - 通配符选择器 (
*) - 浏览器默认样式
优先级与继承用法的最佳实践
理解 CSS 的优先级和继承机制,可以避免样式冲突,并编写更简洁、可维护的 CSS 代码。
| ✅ Do this | ❌ Don’t do this |
|---|---|
| 合理利用选择器的优先级来覆盖样式 | 过度使用 !important 来提升优先级 (除非必要) |
| 充分利用 CSS 的继承特性,减少重复代码 | 在每个元素上重复设置相同的样式 |
CSS 引入方式
CSS 可以通过三种方式引入到 HTML 文档中:
- 内联样式: 直接在 HTML 元素的
style属性中定义样式。<p style="color: red;">这段文字是红色的。</p> - 内部样式表: 在 HTML 文档的
<head>标签中使用<style>标签定义样式。<head><style>p { color: blue; }</style> </head> - 外部样式表: 将 CSS 样式定义在一个单独的
.css文件中,然后在 HTML 文档的<head>标签中使用<link>标签引入。<head><link rel="stylesheet" href="style.css"> </head>
引入方式(Include)用法的最佳实践
推荐使用外部样式表来组织 CSS 代码,实现内容与样式的完全分离,提高代码的可维护性和可复用性。
| ✅ Do this | ❌ Don’t do this |
|---|---|
| 使用外部 CSS 文件 | 在多个 HTML 文件中重复编写相同的内部样式表 |
| 少量、局部的样式可以使用内联样式 | 大量使用内联样式,导致 HTML 代码臃肿且难以维护 |
掌握这些简单的规则结构,你就能优雅地控制网页的呈现,专注于样式设计而不是混淆内容结构,达到“心中有版,落笔生花”的境界。
相关文章:
30分钟学会css
CSS 基本语法 CSS(Cascading Style Sheets)是一种样式表语言,用于描述 HTML(或 XML)文档的呈现。它可以控制网页元素的颜色、字体、布局等外观样式,实现内容与表现的分离,让网页设计更加灵活和…...
vue路由模式面试题
vue路由模式 1.路由的模式有哪些?有什么区别? history和hash模式 区别: 1.表现的形态不同: 在地址栏url中:hash模式中带有**#**号,history没有 2.请求错误时表现不同: 在hash模式中,对于404地址请求时,不会进行请求 但是在history模式中,对于404请求时,仍然会进行请求…...
Python 开发框架搭建简单博客系统:代码实践与应用
在当今数字化时代,博客作为一种流行的信息分享和交流平台,拥有广泛的受众。Python 以其强大的功能和丰富的库,为构建博客系统提供了理想的技术支持。本文将详细介绍如何利用 Python 开发框架搭建一个简单博客系统,包括功能实现、代…...
如何在 VSCode 中配置 C++ 开发环境:详细教程
如何在 VSCode 中配置 C 开发环境:详细教程 在软件开发的过程中,选择一个合适的开发环境是非常重要的。Visual Studio Code(VSCode)作为一款轻量级的代码编辑器,凭借其强大的扩展性和灵活性,受到许多开发者…...
三甲医院等级评审八维数据分析应用(一)--组织、制度、管理可视化篇
一、引言 1.1 研究背景与意义 在当今医疗领域,三甲医院作为医疗服务的核心载体,肩负着保障民众健康、推动医学进步的重任。随着信息技术的飞速发展,数据已成为医院运营管理、医疗质量提升以及科学决策的关键要素。三甲医院等级评审作为衡量医院综合实力与服务水平的重要标…...
2024 年度总结|勇敢去探索~
写作这件事,果然是一旦中断,就很难再拾起来。但年度总结这么有意义的话题,思来想去,万万不能落下。 工作 得益于同事们的帮衬和认可,年初的时候,我的角色发生了变化:需要开始承担部门内的一些…...
2024年, Milvus 社区的那些事
随着跨年钟声响起,2024 年告一段落。这一年,Milvus GitHub Stars 正式突破 3 万大关,Docker 下载量突破6700w 次,达到一个新的里程碑,在开源向量数据库领域继续引领前行。在这遥遥领先的数据背后,不妨让我们…...
vue代理问题
vue代理问题 场景:前后端分离项目问题,在前端中请求接口,返回数据这个过程,但是在这个过程中,前端会有两个环境,一个是开发环境,一个是生产环境. 在开发环境中请求接口可能会遇到跨域问题,比如请求的端口是3000,当前端口是8080,这时候就会遇到跨域问题,或者ip不同,也会存在跨…...
Git快速入门(三)·远程仓库GitHub以及Gitee的使用
目录 1. 远程仓库GitHub 1.1 登录 1.2 创建库 1.3 创建文件 1.4 修改文件 1.5 创建分支 1.6 删除库 1.7 将远程仓库下载到本地 1.7.1 关联登录 1.7.2 克隆 1.7.3 通过GitHub Desktop更改远程库 2. 远程仓库Gitee 2.1 登录 2.2 创建文件 2.3 关联…...
[开源]C++代码分享
一,声明 被人水平有限,开源只是为了分享。勿喷!!!还请大佬指点。 二,代码 // --------------------------------------------------------- 头文件 ----------------------------------------------- #in…...
CSS3——3. 书写格式二
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写:--><!--1. 属性名:属性值--><!--2.属性值是对属性的相关描述--><!--3.属性名必须是…...
PHP语言的计算机基础
计算机基础与PHP语言入门 在当今信息技术高速发展的时代,计算机已经成为我们日常生活中不可或缺的重要工具。学习计算机基础知识,不仅能增强我们对信息技术的理解,还会为我们后续学习编程语言打下良好的基础。本文将以PHP语言为切入点&#…...
第 23 章 JSON
第 23 章 JSON 23.1 语法 JSON 语法支持表示 3 种类型的值。 ❑ 简单值:字符串、数值、布尔值和 null 可以在 JSON 中出现,就像在 JavaScript 中一样。特殊值 undefined 不可以。 ❑ 对象:第一种复杂数据类型,对象表示有序键/值…...
Java 正则表达式入门与应用(详细版)
正则表达式(Regular Expression,简称Regex)是一种文本模式匹配工具,在许多编程语言中都得到了广泛应用。Java 作为一种强大的编程语言,提供了对正则表达式的内建支持,使得在字符串处理、数据验证和文本解析…...
洛谷:P1540 [NOIP2010 提高组] 机器翻译
[NOIP2010 提高组] 机器翻译 题目背景 NOIP2010 提高组 T1 题目描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于…...
基于AT89C51单片机的可暂停八路抢答器设计
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90196607?spm1001.2014.3001.5503 C15 部分参考设计如下: 摘要 随着社会进步和科技发展,电子设备在各类活动中的应用日益普遍,…...
面试题解,Java中的“对象”剖析
一、说一说JVM中对象的内存布局?new一个对象到底占多大内存? 话不多说,看下图,对象的内存布局图 一个对象的内存布局主要由三部分组成:对象头(Object Header)、实例数据(Instance D…...
行为模式3.迭代器模式
行为型模式 模板方法模式(Template Method Pattern)命令模式(Command Pattern)迭代器模式(Iterator Pattern)观察者模式(Observer Pattern)中介者模式(Mediator Pattern…...
第8章 DMA控制器
DMA的基本概念 DMA是用硬件实现不再通过CPU的,计算机内存储器与I/O设备之间的直接数据传送技术。该硬件称为DMA控制器(简称DMAC),用来控制数据的输入和输出,复杂性堪比CPU。 DMA方式可实现: 数据存储器RAM→I/O端口的DMA读传送I/O…...
后端java开发路由接口并部署服务器(四)
一、安装IntelliJ IDEA,安装包下载 1、官网下载 2、网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 打开IntelliJ IDEA,输入网盘资源文件内容 三、汉化处理 插件搜索chinese,就会找到相应的插件安装重启软件即可 四、新建后端j…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
【技巧】dify前端源代码修改第一弹-增加tab页
回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码,在知识库增加一个tab页"HELLO WORLD",完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...
