2023 css新特性简单总结

2023 css新特性简单总结

CSS 是一种用于设计网页和用户界面样式的强大语言。它在不断发展,不断添加新特性。2023 年,将有许多令人激动新的 CSS 新特性。

容器查询

最重要的新功能之一是容器查询。容器查询允许我们根据父容器的大小设置元素的样式。这使我们可以更好地控制布局,并更轻松地创建响应式设计。

例如,我们可以使用容器查询来根据按钮是在狭窄的侧边栏还是在宽的主要内容区域中来设置不同的样式。这将使我们能够在不同的设备和屏幕尺寸上创建更加一致和用户友好的体验。

:has() 选择器

另一个新功能是:has()选择器。此选择器允许我们根据特定子元素的存在来设置元素的样式。这可用于创建更复杂和动态的用户界面。

例如,如果标题下方有副标题,我们可以使用:has()选择器以不同的方式设置标题样式。这将使我们能够为用户创建更具视觉吸引力和信息丰富的标题。

嵌套

CSS 嵌套是一个非常令人兴奋的新功能,它有可能使 CSS 代码更具可读性和可维护性。

以下是 CSS 嵌套的一些主要优点:

  • 提高可读性和可维护性: CSS 嵌套使我们可以更轻松地阅读和理解 CSS 代码,因为它允许我们将相关的 CSS 规则分组在一起。这可以更轻松地查找和修复错误,也可以更轻松地与其他开发人员协作。
  • 减少代码重复: CSS 嵌套允许我们在整个代码库中重用 CSS 规则,从而帮助我们减少代码重复。这可以使我们的 CSS 代码更高效且更易于更新。
  • 更模块化的 CSSCSS 嵌套可以帮助我们编写更模块化的 CSS 代码。这意味着我们可以将 CSS 代码分解为更小、更易于管理的部分。这可以使我们的 CSS 代码更可重用且更易于共享。

其他新功能

还有许多其他新的 CSS 功能也值得注意:

  • 第 n 个微语法:这提供了一种更简洁、更易读的方式来选择列表中的特定元素。
  • text-wrap:balance:此属性允许我们平衡容器中的文本换行,以便行间距更加均匀。
  • 首字母:此属性允许我们以独特的方式设置文本块的第一个字母的样式。
    动态视口单位:这些单位允许我们定义相对于视口大小的字体大小和其他 CSS 值,但能够根据用户首选项覆盖这些值。
  • 广色域色彩空间:这些空间允许我们在 UI 中使用更广泛的颜色,从而产生更加生动、逼真的图像和图形。
  • color-mix():此函数允许我们通过混合两种或多种现有颜色来创建自定义颜色。
  • 级联层:这些层允许我们将 CSS 规则分组在一起并控制它们之间的交互方式。这对于创建更复杂和细致的 UI 非常有用。
  • 作用域样式:这些样式允许我们将 CSS 规则应用于特定元素或其后代,而不影响文档的其余部分。这有助于使我们的 CSS 代码更加模块化和可重用。
  • 三角函数:这些函数允许我们在 CSS 代码中执行三角计算。这对于创建复杂的动画和效果非常有用。
  • 单独的变换属性:这些属性允许我们将单独的变换属性应用于元素,例如scale()rotate()translate()。这使我们可以更好地控制元素的转换。

如何使用这些新功能

其中许多新的 CSS 功能仍在开发中,但它们已经受到 ChromeFirefoxEdge 等主要浏览器的支持。要使用这些功能,我们只需将它们添加到 CSS 代码中即可。

例如,要使用容器查询,我们需要向 CSS 代码添加一条@container规则。此规则将指定我们要查询的父容器,以及我们要设置样式的 CSS 属性

@container my-container ( min-width : 500px ) { /* 宽容器的 CSS 规则 */}
@container my-container ( max-width : 499px ) { /* 窄容器的 CSS 规则 */}

要使用:has()选择器,我们只需将其添加到 CSS 规则中即可。此选择器将指定我们要检查的子元素,以及我们要在子元素存在时设置样式的 CSS 属性。

.parent :has (.child) { /* 具有子元素的父元素的 CSS 规则 */}

要使用:has()选择器嵌套 CSS 规则,只需将其添加到父元素的 CSS 规则中即可。该选择器将指定我们要检查的子元素,并且仅当子元素存在时才会应用子元素的 CSS 规则。

.container {width: 100%;max-width: 960px;margin: 0 auto;
}.container h1 {font-size: 32px;margin-top: 0;
}.container p {font-size: 16px;margin-bottom: 0;
}/* With nesting */
.container {width: 100%;max-width: 960px;margin: 0 auto;h1 {font-size: 32px;margin-top: 0;}p {font-size: 16px;margin-bottom: 0;}
}

如何使用新的 CSS UI 功能的示例

以下是一些示例,说明如何使用新的 CSS UI 功能来创建响应更快且更易于访问的 UI

使用容器查询创建响应式网格布局。我们可以使用容器查询创建网格布局,该布局根据父容器的宽度调整其列和行。这将确保我们的布局在所有设备上看起来都不错并且功能良好。

使用:has()选择器创建一个下拉菜单,当用户将鼠标悬停在菜单项上时,该菜单会自动打开。为此,我们首先要为菜单项创建一个元素div,并为下拉列表创建一个元素ul。然后,我们可以将选择器添加:has()到该div元素,并将该ul元素指定为要检查的子元素。最后,我们将添加要应用于菜单项和下拉列表的 CSS 属性。

例如,以下 CSS 代码将创建一个下拉菜单,当用户将鼠标悬停在“菜单”项上时,该菜单将打开:

.dropdown-menu:has(.dropdown-list) {cursor: pointer;
}.dropdown-list {display: none;position: absolute;top: 100%;left: 0;width: 100%;background-color: white;z-index: 1;
}.dropdown-list li {padding: 10px;
}.dropdown-menu:hover .dropdown-list {display: block;
}

要使用此 CSS 代码,我们只需将dropdown-menu添加到菜单项的元素div的类名中,并将dropdown-list添加到下拉列表的元素ul的类名中。然后,我们可以将菜单项添加到该ul元素。

例如,以下 HTML 代码将创建一个包含两个菜单项的下拉菜单:

<div class="dropdown-menu">Menu<ul class="dropdown-list"><li>Home</li><li>About</li></ul>
</div>

当用户将鼠标悬停在“菜单”项上时,下拉列表将自动打开。然后,用户可以单击菜单项之一导航到该页面。

使用其他新的 CSS UI 功能

我们还可以使用其他新的 CSS UI 功能来创建响应更快且更易于访问的 UI。例如,我们可以使用动态视口单位来确保字体大小和其他 CSS 值始终根据用户的设备进行适当缩放。我们还可以使用广色域色彩空间来创建更加生动、逼真的图像和图形。

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

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

相关文章

Qt model/view 理解 2

这是我对 Qt 的 model/view 内容理解的第二篇 blog&#xff0c;在第一篇文章中&#xff0c;介绍 QTableView 和 QAbstractTableModel&#xff0c;实现显示了对数据源的显示&#xff0c;但是显示的格式和修改的模式都是按照 View 控件的自显示方式。在此&#xff0c;使用 Qt 自带…

重生奇迹MU刷装备注意事项

在打斗游戏里面装备的作用非常巨大&#xff0c;较好的武器装备可以为玩家带来不错的体验&#xff0c;很多玩家甚至不惜花重金打造属于好装备。那么游戏中刷装备需要注意什么。 一、对武器装备的认识 对于玩家来说需要对武器装备有一定的认识&#xff0c;连基本的武器装备分类都…

vue3项目中mitt的使用

Vue2.x使用EventBus进行组件通信&#xff0c;而Vue3.x推荐使用mitt.js。比起Vue实例上的EventBus&#xff0c;mitt.js好在哪里呢&#xff1f;首先它足够小&#xff0c;仅有200bytes&#xff0c;其次支持全部事件的监听和批量移除&#xff0c;它还不依赖Vue实例&#xff0c;所以…

【面试总结大纲】

面试 1. springSpring AOP的具体实现核心概念分别指的是什么?基于注解的切面实现主要包括以下几个步骤&#xff1a;两个切面&#xff0c;它们之间的顺序是怎么控制的 springmvc的工作流程设计模式原则Spring 框架中用到了哪些设计模式&#xff1f; 2. Java-锁2.1锁的分类可重入…

asp.net coremvc+efcore增删改查

下面是一个使用 EF Core 在 ASP.NET Core MVC 中完成增删改查的示例&#xff1a; 创建一个新的 ASP.NET Core MVC 项目。 安装 EF Core 相关的 NuGet 包。在项目文件 (.csproj) 中添加以下依赖项&#xff1a; <ItemGroup><PackageReference Include"Microsoft…

LCR 101.分割等和子集

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 101. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 将数组分为等和的两部分等价于数组是否中存在部分元素和为数组总和的一半。 首先&#xff0c;若数组长度为 1 或数组…

LVGL_基础控件Button

LVGL_基础控件Button 1、创建按键 /* 创建一个btn部件(对象) */lv_obj_t * btn lv_btn_create(lv_scr_act()); // 创建一个btn部件(对象),他的父对象是活动屏幕对象2、修改样式 // 修改按钮部件&#xff08;对象&#xff09;矩形背景部分的样式&#xff08;按下的时候背…

C/C++进程超详细详解【下部分】(系统性学习day8)

目录 前言 一&#xff0c;有名管道通信 1 .概念 2 .创建有名管道 实例代码如下&#xff1a; 二、信号通信 1 .概念 2 .用户进程对信号的响应方式 3. 用户进程对常用信号的缺省操作 4. 信号处理流程 5. 信号相关函数(系统调用) 5.1 kill - 给指定进程发送信号 实例代…

gdb的使用

目录 gdb工具的使用 代码调试相关指令 运行程序指令 r 显示代码的指令 l 给代码打断点 b 查看断点位置 info b 执行代码到断点处停止 关闭断点 d断点编号 关闭某个断点&#xff0c;但不删除 disable编号 打开某个断点 enable断点编号 逐过程调试代码 n 逐语句调试代码 s 查看…

复习Day09:哈希表part02:141.环形链表、142. 环形链表II、454.四数相加II、383赎金信

之前的blog&#xff1a;https://blog.csdn.net/weixin_43303286/article/details/131765317 我用的方法是在leetcode再过一遍例题&#xff0c;明显会的就复制粘贴&#xff0c;之前没写出来就重写&#xff0c;然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用…

go-fastdfs分布式文件存储集群搭建和测试

一、官方文件 https://sjqzhang.github.io/go-fastdfs/#character2、集群原理 小集群原理&#xff1a; 大集群原理 二、服务端集群部署 1、在集群每个节点机器上下载安装包 (建议使用最新稳定版本&#xff09; wget --no-check-certificate https://github.com/sjqzhang/go…

CSS 创建

当读到一个样式表时&#xff0c;浏览器会根据它来格式化 HTML 文档。 如何插入样式表 插入样式表的方法有三种: 外部样式表(External style sheet)内部样式表(Internal style sheet)内联样式(Inline style) 外部样式表 当样式需要应用于很多页面时&#xff0c;外部样式表将是…

专题一:递归【递归、搜索、回溯】

什么是递归 函数自己调用自己的情况。 为什么要用递归 主问题->子问题 子问题->子问题 宏观看待递归 不要在意细节展开图&#xff0c;把函数当成一个黑盒&#xff0c;相信这个黑盒一定能完成任务。 如何写好递归 一、汉诺塔 class Solution { public:void dfs(vec…

react项目从webpack迁移到vite的解决方案

虽然webpack是前端工程编译工具的王者&#xff0c;但是最近vite牛逼吹的震天响&#xff0c;说什么开发/生产打包速度甩webpack 100条街。不管是不是事实&#xff0c;总得尝试一下吧。 于是说干就干&#xff0c;在网上找了很多资料&#xff0c;终于搞定了&#xff0c;以下就是r…

QT4.8.7安装详细教程

QT4.8.7安装详细教程&#xff08;MinGW 4.8.2和QTCreator4.2.0&#xff09; 1.下载及安装2.配置环境 此文是在下方链接博文的基础上&#xff0c;按自己的理解整理的https://blog.csdn.net/xiaowanzi199009/article/details/104119265 1.下载及安装 这三个文件&#xff0c;顺序是…

更直观地学习 Git 命令

theme: condensed-night-purple 前言 本文参考于 Learn Git Branching 这个有趣的 Git 学习网站。 在该网站&#xff0c;可以使用 show command 命令展示所有可用命令。 你也可以直接访问网站的sandbox&#xff0c;自由发挥。 本地篇 基础篇 git commit git commit将暂…

MySQL学习笔记23

逻辑备份&#xff1a; 1、回顾什么是逻辑备份&#xff1f; 逻辑备份就是把数据库、数据表或者数据进行导出&#xff0c;导出到一个文本文件中。 2、逻辑备份工具&#xff1a; mysqldump&#xff1a;提供全库级、数据库级别以及表级别的数据备份。 mysqldumpbinlog&#xff…

苹果签名有多少种类之TF签名(TestFlight签名)是什么?优势是什么?什么场合需要应用到?

&#xff08;一&#xff09;TestFlight 能够让您&#xff1a;邀请内部和外部的测试人员为应用程序提供反馈。 跟踪应用程序在测试过程中发现的 bug 和用户体验问题。 收集 Crash 报告&#xff0c;了解应用程序在真实设备上的运行状况。 要使用 TestFlight&#xff0c;您可以按照…

[Spring] Spring5——AOP 简介

目录 一、AOP 简介 1、什么是 AOP 二、AOP 底层原理 1、动态代理原理 2、基于接口的 JDK 动态代理 3、基于继承的 CGLib 动态代理 三、底层原理实现—— JDK 动态代理 1、使用 Proxy 类的方法创建代理对象 2、JDK 动态代理示例 四、AOP 操作术语 1、连接点 2、切入…

docker安装apisix全教程包含windows和linux

docker安装apisix 一、Windows安装1、首先需要安装docker和docker compose&#xff0c;如果直接安装docker desktop&#xff0c;会自动安装docker compose。2、重新启动电脑3、访问 Docker 的下载&#xff08;[https://www.docker.com/products/docker-desktop](https://www.do…