10 个最新 CSS 功能已在所有主流浏览器中得到支持

news2025/4/17 16:37:01

前言

CSS 不断发展,新功能使我们的工作更快、更简洁、更强大。得益于最新的浏览器改进(Baseline 2024),许多新功能现在可在所有主要引擎上使用。以下是您可以立即开始使用的10 CSS新功能。

1. Scrollbar-Gutter 和 Scrollbar-Color

当浏览器显示滚动条时,布局会随着空间的占用而移动。使用 scrollbar-gutter,您甚至可以在滚动开始之前保留滚动条空间:

.scrollable {  scrollbar-gutter: stable both-edges;}

您还可以使用滚动条颜色来设置滚动条的样式:

.scrollable {  scrollbar-color: #444 #ccc;}

这可确保外观一致并防止布局跳动。

它的好处:

  • scrollbar-gutter 通过为滚动条保留空间来保持布局稳定,防止滚动条出现时出现烦人的偏移。

  • scrollbar-color 可让您设置滚动条轨道和缩略图的样式,从而增强设计一致性,尤其是对于深色或主题 UI。

2. ::target-text

::target-text 突出显示通过内部链接到达的文本(例如,单击同一页面上的锚点时):

::target-text {  background: yellow;  color: black;}

浏览用户可以立即看到他们导航到的文本的确切部分。

它有什么用处?

突出显示链接锚点所针对的确切文本,让用户立即清楚了解他们在长文档或文章中的位置。

3. Ruby 布局(ruby-align 和 ruby-position)

对于某些语言和注释,ruby-align 和 ruby-position 是必不可少的。它们让您可以控制短注释(ruby 文本)相对于主文本的放置方式:

ruby {  ruby-align: center;  ruby-position: over;}

它有什么用处?

对于东亚排版至关重要,可以精确控制主文本上方或旁边的小注释(注音文本)。

对于教育或参考资料中的内联注释也很有用。

4. 相对颜色语法和 light-dark()

CSS 中的现代颜色处理包括相对颜色语法,它允许您调整现有颜色的亮度或饱和度等属性。此外,light-dark() 允许您轻松地在明暗颜色值之间切换:

.element {  background: light-dark(#ffffff, #000000);}

您还可以使用 <color-interpolation-method> 在不同颜色空间中创建更平滑的渐变。

它有什么好处 ?

相对颜色语法支持基于参考颜色进行饱和度或亮度等动态调整。

light-dark() 简化了在明暗颜色值之间切换,这是主题或暗色模式的常见需求。

5. 独占手风琴

手风琴通常需要 JavaScript 来确保一次只打开一个面板,但 HTML 的 <details> 有助于简化这一点。以下是保持面板互斥的简短代码片段(https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement/name):

<details name="exclusive">  <summary>Details</summary>  Something small enough to escape casual notice.</details>
    details {  border: 1px solid #aaa;  border-radius: 4px;  padding: 0.5em 0.5em 0;}summary {  font-weight: bold;  margin: -0.5em -0.5em 0;  padding: 0.5em;}details[open] {  padding: 0.5em;}details[open] summary {  border-bottom: 1px solid #aaa;  margin-bottom: 0.5em;}

    它的优点:

    • 允许您一次显示一个面板,而无需复杂的 JavaScript 逻辑。

    • 非常适合常见问题解答、菜单或任何只需打开一个详细信息的场景。

    6. content-visibility

    content-visibility 跳过屏幕外元素的渲染,直到它们滚动到视图中:

    .lazy-load-section {  content-visibility: auto;}

    这减少了初始渲染成本,提高了长页面的性能。

    它有什么好处?

    推迟屏幕外元素的渲染,提高长页面或复杂布局的性能。

    提高速度并减少内存使用量,尤其是在移动设备上。

    7. font-size-adjust

    当自定义字体不可用时,浏览器会回退到另一种字体,这通常会破坏布局。 font-size-adjust 有助于保持文本大小和可读性一致:

    .text {  font-family: "CustomFont", Arial, sans-serif;  font-size-adjust: 0.5;}

    这可以在字体回退时保持相似的 x 高度和易读性。

    它有什么好处?

    当自定义字体不可用或加载缓慢时,保持一致的文本外观。

    通过匹配回退字体的 x 高度,帮助保持可读性和设计。

    8. transition-behavior

    虽然 transition-timing-function 为我们提供了良好的服务,但 transition-behavior 引入了对动画的额外控制,例如,无需复杂的 JavaScript 即可反转或暂停过渡。这为更流畅的 UI 交互和高级动画场景铺平了道路。

    .card {  transition-property: opacity, display;  transition-duration: 0.25s;  transition-behavior: allow-discrete;}.card.fade-out {  opacity: 0;  display: none;}

    它有什么用处?

    扩展基本过渡,提供可逆或更复杂的过渡,无需大量脚本。

    适用于精致的 UI 效果、交互式组件和独特的动画场景。

    9. CSS @property 和阶梯值函数

    @property 可以使用预定义语法、继承规则和初始值声明自定义属性:

    @property --animation-progress {  syntax: "<number>";  inherits: false;  initial-value: 0;}

    您还可以获得新的阶梯值函数,如 round()、mod() 和 rem(),用于直接在 CSS 中进行计算,从而消除了许多 JavaScript 或预处理器黑客攻击。

    它有什么好处?

    • @property 将自定义属性转换为具有类型、默认值和继承规则的完全声明变量。

    • round()、mod() 和 rem() 等函数可在 CSS 中实现简单的数学运算,减少对预处理器或 JavaScript 的依赖。

    10. offset-position 和 offset-path

    对于更复杂的运动设计,offset-position 和 offset-path 可让您沿自定义路径为元素设置动画,而无需繁重的 JavaScript 框架:

    .move {  offset-path: path("M10,80 Q95,10 180,80");  offset-position: 0%;  transition: offset-position 2s ease;}

    使用这些属性,您可以创建由 SVG 路径或简单曲线引导的精美动画。

    它的优点:

    • 允许纯粹在 CSS 中实现基于路径的运动和动画。

    • 非常适合交互式元素、动态图形或引导用户注意力沿着曲线轨迹移动。

    结论

    这些功能中的每一个都已在所有主流浏览器中得到支持。 它们消除了许多 JavaScript 解决方法的需要,让您可以构建更简单、更快速、更易于维护的布局和交互。 尝试一下,看看它们如何将您的项目提升到新的效率和优雅水平。 祝您实验愉快!

    关于优联前端

            武汉优联前端科技有限公司由一批从事前端10余年的专业人才创办,是一家致力于H5前端技术研究的科技创新型公司,为合作伙伴提供专业高效的前端解决方案,合作伙伴遍布中国及东南亚地区,行业涵盖广告,教育, 医疗,餐饮等。有效的解决了合作伙伴的前端技术难题,节约了成本,实现合作共赢。承接开发Web前端,微信小程序、小游戏,2D/3D游戏,动画交互与UI广告设计等各种技术研发。

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

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

    相关文章

    思科模拟器的单臂路由,交换机,路由器,路由器只要两个端口的话,连接三台电脑该怎么办,划分VLAN,dotlq协议

    单臂路由 1. 需求&#xff1a;让三台电脑互通 2. 在二层交换机划分vlan&#xff0c;并加入&#xff1b; 3. 将连接二层交换机和路由器的端口f0/4改为trunk模式 4. 路由器&#xff1a;进入连接路由器的f0/0端口将端口开启 5. 进入每个vlan设dotlq协议并设网络IP&#xff08…

    14 nginx 的 dns 缓存的流程

    前言 这个是 2020年11月 记录的这个关于 nginx 的 dns 缓存的问题 docker 环境下面 前端A连到后端B 前端B连到后端A 最近从草稿箱发布这个问题的时候, 重新看了一下 发现该问题的记录中仅仅是 定位到了 nginx 这边的 dns 缓存的问题, 但是 并没有到细节, 没有到 具体的 n种…

    实战教程:使用JetBrians Rider快速部署与调试PS5和Xbox上的UE项目

    面向主机游戏开发者的重大新闻&#xff01;在2024.3版本中&#xff0c;JetBrains Rider 增加了对 PlayStation5 和 Xbox 游戏主机的支持&#xff0c;您可以直接在您喜欢的游戏主机上构建、部署和调试 Unreal Engine 和自定义游戏引擎。 JetBrains Rider现在支持主机游戏开发&am…

    专题十五:动态路由——BGP

    一、BGP的基本概念 BGP&#xff08;Border Gateway Protocol&#xff0c;边界网关协议&#xff09;是一种用于在不同自治系统&#xff08;AS&#xff09;之间交换路由信息的外部网关协议&#xff08;EGP&#xff09;。通过TCP179端口建立连接。目前采用BGP4版本&#xff0c;IP…

    hive数仓要点总结

    1.OLTP和OLAP区别 OLTP&#xff08;On-Line Transaction Processing&#xff09;即联机事务处理&#xff0c;也称为面向交易的处理过程&#xff0c;其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理&#xff0c;并在很短的时间内给出处理结果&#xff0c;是对用…

    git安装(windows)

    通过网盘分享的文件&#xff1a;资料(1) 链接: https://pan.baidu.com/s/1MAenYzcQ436MlKbIYQidoQ 提取码: evu6 点击next 可修改安装路径 默认就行 一般从命令行调用&#xff0c;所以不用创建。 用vscode&#xff0c;所以这么选择。

    微信小程序实战案例 - 餐馆点餐系统 阶段1 - 菜单浏览

    阶段 1 – 菜单浏览&#xff08;超详细版&#xff09; 目标&#xff1a;完成「首页&#xff1d;菜品卡片列表」 打好 UI 地基会从 云数据库 拉取 categories / dishes 并渲染打 Git Tag v1.0‑menu 1. 技术/知识点速览 知识点关键词说明云数据库db.collection().where().…

    Dashboard的安装和基本使用

    1.Dashboard简介&#xff1a; Dashboard是Kubernetes的Web图形用户界面&#xff08;GUI&#xff09;&#xff0c;它为用户提供了一个直观的方式来管理和监控Kubernetes集群。 2.实验基础和前置条件&#xff1a; 本实验以Kubernetes集群环境搭建与初始化-CSDN博客为基础和前置…

    英语单词 list 11

    前言 这一个 list 是一些简单的单词。感觉这个浏览单词的方法比较低效&#xff0c;所以准备每天最多看一个 list &#xff0c;真要提升英语水平&#xff0c;感觉还是得直接做阅读理解题。就像我们接触中文阅读材料一样&#xff0c;当然光知道这个表面意思还不够&#xff0c;还…

    通义灵码助力Neo4J开发:快速上手与智能编码技巧

    在 Web 应用开发中&#xff0c;Neo4J 作为一种图数据库&#xff0c;用于存储节点及节点间的关系。当图结构复杂化时&#xff0c;关系型数据库的查找效率会显著降低&#xff0c;甚至无法有效查找&#xff0c;这时 Neo4J 的优势便凸显出来。然而&#xff0c;由于其独特的应用场景…

    高性能文件上传服务

    高性能文件上传服务 —— 您业务升级的不二选择 在当今互联网数据量激增、文件体积日益庞大的背景下&#xff0c;高效、稳定的文件上传方案显得尤为重要。我们的文件分块上传服务端采用业界领先的 Rust HTTP 框架 Hyperlane 开发&#xff0c;凭借其轻量级、低延时和高并发的特…

    Java Lambda 表达式详解:发展史、语法、使用场景及代码示例

    Java Lambda 表达式详解&#xff1a;发展史、语法、使用场景及代码示例 1. Lambda 表达式的发展史 背景与动机 JDK 7 前&#xff1a;Java的匿名内部类虽强大&#xff0c;但代码冗余&#xff08;如事件监听器、集合遍历&#xff09;。JDK 8&#xff08;2014&#xff09;&#…

    【从0到1学Elasticsearch】Elasticsearch从入门到精通(下)

    我们在【从0到1学Elasticsearch】Elasticsearch从入门到精通&#xff08;上&#xff09;这边文章详细讲解了如何创建索引库和文档及javaAPI操作&#xff0c;但是在实战当中&#xff0c;我们还需要根据一些特殊字段对文档进行查找搜索&#xff0c;仅仅靠id查找文档是显然不够的。…

    Python实现贪吃蛇二

    上篇文章Python实现贪吃蛇一&#xff0c;实现了一个贪吃蛇的基础版本&#xff0c;但存在一些不足&#xff0c;也缺乏一些乐趣。本篇文章将对其进行一些改进&#xff0c;主要修改/实现以下几点&#xff1a; 1、解决食物随机生成的位置与蛇身重合问题 2、蛇身移动加速/减速功能 3…

    基于51单片机的正负5V数字电压表( proteus仿真+程序+设计报告+讲解视频)

    基于51单片机的正负5V数字电压表( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0101 1. 主要功能&#xff1a; 设计一个基于51单片机数字电压表 1、能够…

    Java雪花算法

    以下是用Java实现的雪花算法代码示例&#xff0c;包含详细注释和异常处理&#xff1a; 代码下面有解析 public class SnowflakeIdGenerator {// 起始时间戳&#xff08;2020-01-01 00:00:00&#xff09;private static final long START_TIMESTAMP 1577836800000L;// 各部分…

    前端大屏可视化项目 局部全屏(指定盒子全屏)

    需求是这样的&#xff0c;我用的项目是vue admin 项目 现在需要在做大屏项目 不希望显示除了大屏的其他东西 于是想了这个办法 至于大屏适配问题 请看我文章 底部的代码直接复制就可以运行 vue2 px转rem 大屏适配方案 postcss-pxtorem-CSDN博客 <template><div …

    01_JDBC

    文章目录 一、概述1.1、什么是JDBC1.2、JDBC原理 二、JDBC入门2.1、准备工作2.1.1、建库建表2.1.2、新建项目 2.2、建立连接2.2.1、准备四大参数2.2.2、加载驱动2.2.3、准备SQL语句2.2.4、建立连接2.2.5、常见问题 2.3、获取发送SQL的对象2.4、执行SQL语句2.5、处理结果2.6、释…

    Spring Boot 热部署详解,包含详细的配置项说明

    Spring Boot 热部署详解 1. 热部署简介 热部署&#xff08;Hot Deployment&#xff09;允许在应用运行时修改代码或配置文件&#xff0c;无需重启应用即可使更改生效。Spring Boot 通过 spring-boot-devtools 模块实现这一功能&#xff0c;其核心依赖于 LiveReload 技术和自动…

    剑指Offer(数据结构与算法面试题精讲)C++版——day12

    剑指Offer&#xff08;数据结构与算法面试题精讲&#xff09;C版——day12 题目一&#xff1a;小行星碰撞题目二&#xff1a;每日温度题目三&#xff1a;直方图最大矩形面积附录&#xff1a;源码gitee仓库 题目一&#xff1a;小行星碰撞 题目&#xff1a;输入一个表示小行星的数…