深入解析 CSS 中不常用属性及其相互作用
深入解析 CSS 中不常用属性及其相互作用
- **1. CSS 自定义属性(CSS Variables)**
- **属性示例**
- **作用**
- **布局相关的作用**
- **2. `box-sizing: border-box;`**
- **属性示例**
- **作用**
- **布局相关的作用**
- **3. Flexbox 布局**
- **属性示例**
- **作用**
- **布局相关的作用**
- **相互作用**
- **4. `position` 和 `z-index`**
- **属性示例**
- **作用**
- **布局相关的作用**
- **5. `transform` 和 `translateY`**
- **属性示例**
- **作用**
- **布局相关的作用**
- **6. `white-space: pre-wrap;`**
- **属性示例**
- **作用**
- **布局相关的作用**
- **7. 媒体查询(Media Query)**
- **属性示例**
- **作用**
- **布局相关的作用**
- **8. `transition` 的使用与原理**
- **属性示例**
- **作用**
- **视觉效果**
- **用户体验**
- **`transition` 的工作原理**
- **语法**
- **支持的属性**
- **`transition` 与其他属性的相互作用**
- **与 `:hover` 的结合**
- **与 `opacity` 的结合**
- **与 `transform` 的结合**
- **布局相关的作用**
- **总结**
在现代前端开发中,CSS 不仅仅是页面布局和样式的工具,更是实现复杂交互和响应式设计的核心。然而,许多开发者可能对一些不常用的 CSS 属性或特性了解有限。本文将通过分析一段完整的 CSS 代码,深入探讨这些不常用属性的作用,并解释它们之间的相互关系。我们将从以下几个方面展开讨论:
- CSS 自定义属性(CSS Variables)
box-sizing: border-box;- Flexbox 布局
position和z-indextransform和translateYwhite-space: pre-wrap;- 媒体查询(Media Query)
transition的使用与原理
1. CSS 自定义属性(CSS Variables)
属性示例
--claude-bg: #FAF9F7;
--padding-sm: 16px;
作用
- CSS 自定义属性允许开发者在
:root或局部范围内定义可复用的值。 - 它们可以动态更新,适用于主题切换、响应式设计等场景。
布局相关的作用
- 在布局中,自定义属性常用于定义全局间距(如
--padding-sm)、容器宽度(如--max-width)等,确保整个页面的布局一致性。 - 示例:
这些变量使得布局更加灵活且易于调整。.chat-container {max-width: var(--max-width);padding: 0 var(--padding-md) 80px; }
2. box-sizing: border-box;
属性示例
*,
*::before,
*::after {box-sizing: border-box;
}
作用
- 默认情况下,CSS 的
width和height只包含内容区域,而不包括内边距和边框。设置为border-box后,元素的宽高会包含内容、内边距和边框。 - 这种设置可以避免布局计算中的意外溢出问题。
布局相关的作用
- 在复杂的布局中,
box-sizing: border-box确保所有元素的尺寸计算一致。例如:
如果没有.chat-input input {width: 100%;padding: 12px 16px;border: 1px solid var(--claude-border); }border-box,输入框的实际宽度会超出父容器的宽度,导致布局错乱。
3. Flexbox 布局
属性示例
.chat-container {display: flex;flex-direction: column;min-height: 100vh;
}
作用
display: flex将容器设置为弹性布局。flex-direction: column让子元素垂直排列。min-height: 100vh确保容器至少占据整个视口高度。
布局相关的作用
- Flexbox 是现代布局的核心工具,能够轻松实现复杂的排列方式。例如:
.chat-container使用flex-direction: column实现从上到下的垂直布局。.message使用display: flex和gap实现消息内容与头像的水平排列。
相互作用
- 结合
gap和flex-shrink使用时,Flexbox 能够精确控制子元素的间距和缩放行为。例如:.message {display: flex;gap: 12px; }
4. position 和 z-index
属性示例
.chat-header {position: fixed;top: 0;left: 0;right: 0;z-index: 1000;
}
作用
position: fixed将元素固定在视口的某个位置,即使页面滚动也不会移动。z-index控制堆叠顺序,确保固定元素始终位于其他内容之上。
布局相关的作用
- 固定头部(
.chat-header)与滚动内容(.chat-window)配合使用,形成经典的聊天界面布局。 - 通过
z-index确保固定头部不会被其他内容覆盖。
5. transform 和 translateY
属性示例
.chat-input button {position: absolute;right: 0;top: 50%;transform: translateY(-50%);
}
作用
transform: translateY(-50%)将元素沿垂直方向向上移动自身高度的一半,从而实现垂直居中。
布局相关的作用
- 与
position: absolute和top: 50%配合使用,确保按钮在输入框右侧垂直居中。 - 这种方法比传统的
margin更加精确,尤其适用于动态高度的元素。
6. white-space: pre-wrap;
属性示例
.message-content {white-space: pre-wrap;
}
作用
pre-wrap保留文本中的空格和换行符,同时允许自动换行。- 适合显示用户输入的内容,如聊天消息。
布局相关的作用
- 与
padding和line-height配合使用时,white-space: pre-wrap能够确保文本内容既保留格式又适应容器宽度:.message-content {padding: 2px 0;line-height: var(--line-height-base); }
7. 媒体查询(Media Query)
属性示例
@media (max-width: 768px) {.chat-container {padding: 0 var(--padding-sm);}
}
作用
- 媒体查询根据设备屏幕宽度应用不同的样式规则。
- 在小屏幕上,减少左右内边距以充分利用空间。
布局相关的作用
- 媒体查询与自定义属性(如
--padding-sm)结合使用,使布局调整更加灵活且一致。 - 例如,在小屏幕上减少
.chat-container的左右内边距,避免内容过于拥挤。
8. transition 的使用与原理
属性示例
.chat-input button {transition: background-color 0.2s ease;
}
.chat-input button:hover:not(:disabled) {background-color: var(--claude-hover);
}
作用
transition是一个用于定义元素状态变化时的过渡效果的属性。- 在这里,
transition: background-color 0.2s ease;表示当按钮的background-color发生变化时,会以 0.2 秒 的时间平滑过渡,并采用 ease 缓动函数(即开始和结束较慢,中间较快)。
视觉效果
- 当用户将鼠标悬停在按钮上时,按钮的背景颜色会从默认值(
--claude-primary)平滑地过渡到悬停状态的颜色(--claude-hover)。 - 这种过渡效果使交互更加自然,避免了颜色的突兀变化。
用户体验
- 平滑的过渡效果可以显著提升用户的感知体验,尤其是在按钮、链接等交互元素上。
- 示例:
用户在悬停时能够直观感受到按钮的状态变化,而不会感到突兀。.chat-input button:hover:not(:disabled) {background-color: var(--claude-hover); }
transition 的工作原理
语法
transition: <property> <duration> <timing-function> <delay>;
<property>:指定需要应用过渡效果的 CSS 属性(如background-color、opacity等)。<duration>:过渡效果的持续时间(如0.2s)。<timing-function>:控制过渡的速度曲线(如ease、linear、ease-in-out等)。<delay>:可选,表示过渡效果的延迟时间。
支持的属性
transition可以应用于多种 CSS 属性,包括但不限于:- 颜色(
color、background-color) - 尺寸(
width、height) - 透明度(
opacity) - 变换(
transform)
- 颜色(
transition 与其他属性的相互作用
与 :hover 的结合
transition常与伪类(如:hover、:focus)结合使用,创建动态的交互效果。- 示例:
当用户悬停时,按钮背景颜色的变化会触发.chat-input button:hover:not(:disabled) {background-color: var(--claude-hover); }transition效果。
与 opacity 的结合
- 如果需要为禁用状态的按钮添加渐隐效果,可以结合
opacity使用:.chat-input button:disabled {opacity: 0.5;transition: opacity 0.2s ease; }
与 transform 的结合
transition也可以与transform结合,实现更复杂的动画效果。例如:
这会让按钮在悬停时稍微放大,增加视觉吸引力。.chat-input button:hover:not(:disabled) {transform: scale(1.1);transition: transform 0.2s ease; }
布局相关的作用
虽然 transition 主要用于交互效果,但它也可以间接影响布局。例如:
- 如果某个元素的尺寸(
width或height)发生变化,可以通过transition实现平滑的尺寸调整。 - 示例:
当.chat-window {max-height: 500px;overflow-y: auto;transition: max-height 0.3s ease; } .chat-window.expanded {max-height: 1000px; }.chat-window的高度发生变化时,过渡效果会让内容展开或收缩更加流畅。
总结
通过分析这段代码,我们可以看到以下几点:
- CSS 自定义属性 提供了强大的灵活性,简化了布局和样式的维护。
- Flexbox 和 Layout 的核心作用:Flexbox 是现代布局的核心工具,能够轻松实现复杂的排列方式。
- 响应式设计与媒体查询:媒体查询与自定义属性结合使用,使布局调整更加灵活且一致。
transition提升交互体验:它通过平滑的过渡效果增强了按钮、链接等交互元素的动态表现。
相关文章:
深入解析 CSS 中不常用属性及其相互作用
深入解析 CSS 中不常用属性及其相互作用 **1. CSS 自定义属性(CSS Variables)****属性示例****作用****布局相关的作用** **2. box-sizing: border-box;****属性示例****作用****布局相关的作用** **3. Flexbox 布局****属性示例****作用****布局相关的作…...
JPA中基本类型集合的映射与操作实例
在Java Persistence API(JPA)中,我们经常会遇到需要将基本类型集合(如List或Set)持久化到数据库中的场景。JPA通过ElementCollection注解为我们提供了一种简单而强大的方式来实现这一功能。本文将详细介绍如何使用Elem…...
[MySQL]事务的理论、属性与常见操作
目录 一、事物的理论 1.什么是事务 2.事务的属性(ACID) 3.再谈事务的本质 4.为什么要有事务 二、事务的操作 1.事务的支持版本 2.事务的提交模式 介绍 自动提交模式 手动提交模式 3.事务的操作 4.事务的操作演示 验证事务的回滚 事务异常…...
沙皮狗为什么禁养?
各位铲屎官们,今天咱们来聊聊一个比较敏感的话题:沙皮狗为什么会被禁养?很多人对沙皮狗情有独钟,但有些地方却明确禁止饲养这种犬种,这背后到底是什么原因呢?别急,今天就来给大家好好揭秘&#…...
Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)
大家好,今天是Dest1ny漏洞库的专题!! 会时不时发送新的漏洞资讯!! 大家多多关注,多多点赞!!! 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚…...
PHP Error处理与优化指南
PHP Error处理与优化指南 引言 在PHP编程中,错误处理是保证程序稳定性和用户体验的关键环节。良好的错误处理机制不仅能帮助开发者快速定位问题,还能提升应用程序的健壮性。本文将详细介绍PHP错误处理的方法、技巧以及优化策略。 一、PHP错误处理概述 1.1 错误类型 PHP中…...
MySQL知识点总结(十八)
说明你对InnoDB集群的整体认知。 MySQL组复制技术是InnoDB集群实现的基础,组复制安装在集群中的每个服务器实例上。组复制能够创建弹性复制拓扑,在集群中的服务器脱机时可以自动重新配置自己。必须至少有三台服务器才能组成一个可以提供高可用性的组。组…...
DeepSeek-R1模型1.5b、7b、8b、14b、32b、70b和671b有啥区别?
deepseek-r1的1.5b、7b、8b、14b、32b、70b和671b有啥区别?码笔记mabiji.com分享:1.5B、7B、8B、14B、32B、70B是蒸馏后的小模型,671B是基础大模型,它们的区别主要体现在参数规模、模型容量、性能表现、准确性、训练成本、推理成本…...
#define,源文件与头文件,赋值表达式
1.#define 1.1定义 #define 是一个预处理指令,用于定义宏 宏,是预处理阶段(在编译之前)由预处理器处理的代码片段 1.2使用 1.2.1 #define 可以定义常量 #define PI 3.14159 1.2.2 #define 可以定义宏函数 #define SQUARE(x) ((…...
踏入编程世界的第一个博客
我,一个双非一本大一新生,普通的不能再普通了,面对宏伟庞大的计算机世界仍显得举手无措,我自以为自身仍有些许骨气,不想普普通通,甚是浑浑噩噩的度过四年大学,经历了高考的打击,双非…...
5分钟在本地PC上使用VLLM快速启动DeepSeek-R1-Distill-Qwen-32B
5分钟在本地PC上使用VLLM快速启动DeepSeek-R1-Distill-Qwen-32B 前言环境准备所需工具创建虚拟环境安装VLLM及依赖库 模型下载安装Hugging Face CLI下载DeepSeek-R1-Distill-Qwen-32B 模型启动启动命令启动确认 模型验证发送API请求示例输出 注意事项参考链接 前言 VLLM 是一个…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.13 降维打击:扁平化操作的六种武器
1.13 降维打击:扁平化操作的六种武器 目录 #mermaid-svg-bbLxDryjxBbXe3tu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bbLxDryjxBbXe3tu .error-icon{fill:#552222;}#mermaid-svg-bbLxDryjxBbXe3tu…...
Oracle Primavera P6 最新版 v24.12 更新 2/2
目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…...
DeepSeek相关技术整理
相关介绍 2024年12月26日,DeepSeek V3模型发布(用更低的训练成本,训练出更好的效果)671B参数,激活37B。2025年1月20日,DeepSeek-R1模型发布(仅需少量标注数据(高质量长cotÿ…...
AI-on-the-edge-device - 将“旧”设备接入智能世界
人工智能无处不在,从语音到图像识别。虽然大多数 AI 系统都依赖于强大的处理器或云计算,但**边缘计算**通过利用现代处理器的功能,使 AI 更接近最终用户。 本项目演示了使用 **ESP32**(一种低成本、支持 AI 的设备)进行…...
Openfga 授权模型搭建
1.根据项目去启动 配置一个 openfga 服务器 先创建一个 config.yaml文件 cd /opt/openFGA/conf touch ./config.yaml 怎么配置? 根据官网来看 openfga/.config-schema.json at main openfga/openfga GitHub 这里讲述详细的每一个配置每一个类型 这些配置有…...
C++模板编程——可变参函数模板之折叠表达式
目录 1. 什么是折叠表达式 2. 一元左折 3. 一元右折 4. 二元左折 5. 二元右折 6. 后记 上一节主要讲解了可变参函数模板和参数包展开,这一节主要讲一下折叠表达式。 1. 什么是折叠表达式 折叠表达式是C17中引入的概念,引入折叠表达式的目的是为了…...
ArkTS渲染控制
文章目录 if/else:条件渲染ArkUI通过自定义组件的build()函数和@Builder装饰器中的声明式UI描述语句构建相应的UI。在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些渲染控制语句包括控制组件是否显示的条件渲染语句,基于数组数据快…...
在Scene里面绘制编辑工具
功能要求 策划要在scene模式下编辑棋子摆放。用handle.GUI绘制来解决了。 问题 在scene模式下编辑产生的数据,进入游戏模式后就全不见了。改为executeAlways也没用。我的解决办法是把编辑数据序列化保存到本地。在OnEnable的时候再读取。但是我忽然想到ÿ…...
UbuntuWindows双系统安装
做系统盘: Ubuntu20.04双系统安装详解(内容详细,一文通关!)_ubuntu 20.04-CSDN博客 ubuntu系统调整大小: 调整指南: 虚拟机中的Ubuntu扩容及重新分区方法_ubuntu重新分配磁盘空间-CSDN博客 …...
[Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?
[InfluxDB]Monitor Tem. and Volt of RaspberryPi and Send Message by Line Notify 在Linux中,shell腳本(shell script)常用於運行各種自動化的流程,包含API串接,設置和啟動應用服務等等,腳本語法也相對易學易讀,因此…...
【leetcode详解】T598 区间加法
598. 区间加法 II - 力扣(LeetCode) 思路分析 核心在于将问题转化, 题目不是要求最大整数本身,而是要求解最大整数的个数 结合矩阵元素的增加原理,我们将抽象问题转为可操作的方法,其实就是再找每组ops中…...
分层多维度应急管理系统的设计
一、系统总体架构设计 1. 六层体系架构 #mermaid-svg-QOXtM1MnbrwUopPb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QOXtM1MnbrwUopPb .error-icon{fill:#552222;}#mermaid-svg-QOXtM1MnbrwUopPb .error-text{f…...
稀疏进化训练:机器学习优化算法中的高效解决方案
稀疏进化训练:机器学习优化算法中的高效解决方案 稀疏进化训练:机器学习优化算法中的高效解决方案引言第一部分:背景与动机1.1 传统优化算法的局限性1.2 进化策略的优势1.3 稀疏性的重要性 第二部分:稀疏进化训练的核心思想2.1 稀…...
实战:如何利用网站日志诊断并解决收录问题?
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/50.html 利用网站日志诊断并解决收录问题是一种非常有效的方法。以下是一个实战指南,帮助你如何利用网站日志来诊断并解决网站的收录问题: 一、获取并分析网站日志 …...
群晖搭建Gitea教程(使用系统自带的postgresql)
基于群晖7.2.2,使用套件中心的gitea,和系统自带的postgresql postgresql: 切换到postgres用户 sudo -I -u postgres 在想要保存数据库的磁盘路径下创建PostgreSql文件夹 初始化数据库文件夹配置 initdb -D ./PostgreSql 备份./PostgreSql路径下的post…...
备考蓝桥杯嵌入式2:使用LCD完成显示
LCD LCD(液晶显示器,Liquid Crystal Display)是一种常见的平面显示技术,广泛应用于电视、电脑显示器、手机屏幕等设备。蓝桥杯中,也有涉及到使用LCD来完成字符串显示的要求和操作。 考场上会给予LCD的驱动包…...
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
一、前言 我从24年11月份开始学习网络爬虫应用开发,经过2个来月的努力,于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志(网络爬虫学习:应用selenium从搜…...
Elasticsearch的索引生命周期管理
目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的?如何监控和调整Elasticsearch ILM策略的性能? 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…...
Observability:实现 OpenTelemetry 原生可观察性的商业价值
作者:来自 Elastic David Hope 利用开放标准和简化的数据收集转变组织的可观察性策略。 现代组织面临着前所未有的可观察性挑战。随着系统变得越来越复杂和分散,传统的监控方法难以跟上步伐。由于数据量每两年翻一番,系统跨越多个云和技术&am…...
