”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 你应该了解的现代 CSS 样式 4

你应该了解的现代 CSS 样式 4

发布于2024-11-07
浏览:241

TL;DR: 本博客使用代码示例来探索 Web 开发的五种最佳 CSS 样式和功能:容器查询、子网格、伪类、逻辑属性和实验室颜色空间。它们增强响应能力、简化布局并提高设计一致性。

层叠样式表 (CSS) 是一种众所周知的用于设计网页样式的语言。使用 CSS,您可以通过添加空格来自定义 HTML 元素;定义颜色、字体大小和字体样式;等等。 CSS 在过去几年中有了很大的改进,新功能改善了开发人员的体验。

因此,本文将讨论您可以在下一个项目中使用的五种创新 CSS 功能。

1. 容器查询

CSS 容器查询引入了一种新的响应方法。之前,我们使用媒体查询来创建适应不同屏幕尺寸的 UI。但这并不像听起来那么容易。在维护、性能、灵活性和风格重叠方面存在问题。

容器查询通过允许开发人员根据其父容器大小自定义元素来解决这些问题。由于此方法不依赖于视口大小,因此它使 HTML 组件完全模块化且独立。

以下是容器查询如何工作的简单示例。

.wrapper {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 20px;
}
@container (min-width: 500px) {
  .profile-card {
    grid-template-columns: 150px 1fr;
    grid-template-rows: auto 1fr;
    align-items: start;
    gap: 20px;
  }

  .profile-card header,
  .profile-card .bio {
    grid-column: 2;
  }

  .profile-card .profile-image {
    grid-row: 1 / 3;
    grid-column: 1;
  }
}

当配置文件卡的宽度达到 500 像素或更大时,此容器查询会调整配置文件卡的布局。它将卡片从堆叠布局(图像在顶部)更改为两列布局,其中图像显示在左侧,文本内容在右侧对齐。

参考以下图片。

odern CSS Styles You Should Know In 4

堆叠布局

odern CSS Styles You Should Know In 4

两栏布局

容器查询在设计系统中非常有用,其中组件需要根据其直接环境而不是整个视口进行调整。然而,容器查询仍然缺乏完整的浏览器支持。如果您的用户使用任何不受支持的浏览器或旧版本,他们可能会面临样式问题。

odern CSS Styles You Should Know In 4

来源:CSS 容器查询

注意: 看看这个 CSS 容器查询的工作演示。

2. 子网格

Subgrid 是 CSS 网格布局模型的一个令人兴奋的补充,它允许您在子网格项中继承父网格容器的网格结构。简而言之,子网格允许您根据父网格的行或列对齐子元素。通过这种方法,您可以轻松创建复杂的嵌套网格,而无需使用嵌套网格覆盖。

在下面的代码示例中,布局在列表中使用子网格方法。

.product-wrapper {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
.product-card {
  display: grid;
  grid-template-rows: subgrid; /* Allows the nested grid to align directly with the parent grid */
}

在示例中,product-wrapper创建了一个灵活的网格布局,以根据容器宽度控制列数。然后,每个 product-card 将其行直接与 product-wrapper.

定义的网格对齐

子网格对于产品卡可能包含不同数量的内容但必须保持统一外观的电子商务网站特别有用。

参考以下图片。

odern CSS Styles You Should Know In 4

父网格

odern CSS Styles You Should Know In 4

使用子网格 CSS 创建的子网格

注意:查看 CSS 子网格的工作演示。

3. 伪类

伪类,例如 :hover:focus:first-child 是根据 HTML 元素的状态而不是其状态来选择 HTML 元素的选项文档中的层次结构或顺序。这些选择器允许开发人员在不使用 JavaScript 的情况下创建更具交互性和响应性的 UI。

以下代码示例演示了几个实际操作的伪类。

// HTML
...
.hover-section:hover {
  background-color: rgb(82, 11, 145); /* Changes the background color on hover */
  color: white;
}
.input-section input[type="text"]:focus {
  border-color: orange; /* Highlights the input field when focused */
  background-color: lightyellow;
}
.list-section li:first-child {
  color: green; /* Styles the first item in a list */
}
.list-section li:last-child {
  color: red; /* Styles the last item in a list */
}

此 CSS 代码示例展示了如何通过根据用户操作更改样式(例如悬停或聚焦于元素)来增强用户交互,以及如何设置容器的特定子项的样式。

这些伪类在开发需要视觉提示来指导用户交互的表单、导航菜单和交互式内容时非常有用。

参考下图

odern CSS Styles You Should Know In 4

CSS伪类演示

注意:查看这个伪类的工作演示。

4. 逻辑属性

CSS 逻辑属性允许开发人员以与方向无关的方式管理布局和间距。换句话说,利用 CSS 逻辑属性,您可以使用不同的书写模式,例如从左到右 (LTR) 和从右到左 (RTL),而无需更改结构代码。

这是一个使用逻辑属性进行布局调整的示例。

.lab-gradient-generator {
  margin-inline-start: 2rem; /* Responsive margin that adjusts based on text direction */
}
.lab-gradient-display {
  background: linear-gradient(
    to right, 
    lab(var(--l-start) var(--a-start) var(--b-start)), 
    lab(var(--l-end) var(--a-end) var(--b-end))
  ); /* Creates a gradient using LAB colors */
}

在此代码示例中,margin-inline-start 使用逻辑属性来确保边距始终位于内容 starting 一侧,自动适应不同的书写系统。 background 属性与 LAB color gradient 说明了在定义视觉上一致的颜色过渡时逻辑属性的使用。

逻辑属性在需要支持多种语言的全局应用程序中特别有用,无论方向如何都保持布局相同。

参考下图

odern CSS Styles You Should Know In 4

逻辑属性演示

注意: 请参阅 CSS 逻辑属性如何与国际化结合使用的工作演示。

5. 实验室色彩空间

Lab 色彩空间允许您指定颜色以更符合人类视觉。此方法提供了更广泛、更精确的颜色范围,有助于提高不同显示器之间的一致性。

这是一个代码示例,展示了 CSS 中实验室颜色空间的用法。

.color-strip:nth-child(1) {
  --l: 90%;
  --a: -80;
  --b: 80;
  background-color: lab(var(--l) var(--a) var(--b));
}
.color-strip:nth-child(2) {
  --l: 75%;
  --a: -40;
  --b: 40;
  background-color: lab(var(--l) var(--a) var(--b));
}
.color-strip:nth-child(3) {
  --l: 60%;
  --a: 0;
  --b: 0;
  background-color: lab(var(--l) var(--a) var(--b));
}
.color-strip:nth-child(4) {
  --l: 45%;
  --a: 40;
  --b: -40;
  background-color: lab(var(--l) var(--a) var(--b));
}
.color-strip:nth-child(5) {
  --l: 30%;
  --a: 80;
  --b: -80;
  background-color: lab(var(--l) var(--a) var(--b));
}

此代码示例设置了一系列 div(颜色条),每个 div 都具有在实验室颜色空间中定义的唯一背景颜色。它展示了实验室颜色如何产生在各种显示器上保持一致的各种色调和色调。

Lab 颜色在数字设计中非常宝贵,特别是在颜色准确性至关重要的行业,例如数字艺术、在线商务和品牌设计。

参考下图

odern CSS Styles You Should Know In 4

探索 LAB 颜色

注:更多详细信息,请参阅实验室色彩空间演示。

结论

感谢您的阅读!这些 CSS 功能为改进应用程序的功能和用户体验提供了独特的优势和新的可能性。它们还改善了开发人员的体验,因为这些功能简化了他们的复杂任务。

因此,请务必亲自尝试这些示例,并在您的下一个 Web 应用程序中实现它们,使其成为现代应用程序。

相关博客

  • React 样式:设计师的基本提示和技巧
  • 在 React 或 Next.js 应用程序中编写 CSS 的 7 种最佳方法
  • 响应式网页设计的发展:引入 CSS 容器查询
  • CSS Flex:每个开发人员都应该了解的内容
版本声明 本文转载于:https://dev.to/syncfusion/5-modern-css-styles-you-should-know-in-2024-364f?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 文档的力量:阅读如何改变我在 JamSphere 上使用 Redux 的体验
    文档的力量:阅读如何改变我在 JamSphere 上使用 Redux 的体验
    作为开发人员,我们经常发现自己一头扎进新的库或框架,渴望将我们的想法变为现实。跳过文档并直接跳到编码的诱惑很强烈——毕竟,这有多难呢?但正如我通过构建音乐管理平台 JamSphere 的经验所了解到的那样,跳过这一关键步骤可能会将顺利的旅程变成充满挑战的艰苦战斗。 跳过文档的魅力 当...
    编程 发布于2024-11-07
  • 如何在PHP多子域应用中精准控制Cookie域?
    如何在PHP多子域应用中精准控制Cookie域?
    在 PHP 中控制 Cookie 域和子域创建多子域站点时,有必要控制会话 cookie 的域确保每个子域的正确会话管理。然而,手动设置域时,PHP 的 cookie 处理似乎存在差异。默认情况下,session_start() 会使用当前子域分配会话 cookie。但是,尝试使用 ini_set(...
    编程 发布于2024-11-07
  • Java中的三元运算符可以不返回值吗?
    Java中的三元运算符可以不返回值吗?
    三元运算符:深入研究代码优化虽然三元运算符 (?:) 是 Java 中的一个强大工具,但它了解其局限性至关重要。一个常见的误解是可以在不返回值的情况下使用它。与这种看法相反,Java 不允许在没有 return 语句的情况下进行三元运算。三元运算符的目的是评估条件并将值分配给变量或表达式。如果没有返...
    编程 发布于2024-11-07
  • 为什么您应该在下一个 PHP 项目中尝试 Lithe?
    为什么您应该在下一个 PHP 项目中尝试 Lithe?
    Lithe 是寻求简单性与强大功能之间平衡的开发人员的完美 PHP 框架。如果您厌倦了使开发缓慢且令人困惑的繁琐框架,Lithe 提供了一种极简但极其灵活的方法,旨在使您的工作更快、更高效。 1. 轻量且超快 Lithe 的开发重点是轻量级,允许您以很少的开销创建应用程序。与其他提供...
    编程 发布于2024-11-07
  • 如何处理 Android 中的互联网连接变化?
    如何处理 Android 中的互联网连接变化?
    处理 Android 中的互联网连接变化问题集中在需要一个可以监视互联网连接变化的广播接收器,因为现有代码仅检测连接变化。为了解决这个问题,这里有一个替代方法:public class NetworkUtil { public static final int TYPE_WIFI = 1; ...
    编程 发布于2024-11-07
  • Python 3.x 的 Super() 在没有参数的情况下如何工作?潜在的陷阱是什么?
    Python 3.x 的 Super() 在没有参数的情况下如何工作?潜在的陷阱是什么?
    Python 3.x 的超级魔法:解开谜团Python 3.x 在其 super() 方法中引入了令人惊讶的转折,允许无参数调用。这种看似无害的变化在幕后却带来了重大的后果和内在的魔力。揭开魔力为了维护 DRY 原则,新的 super() 行为绕过了显式类命名。它有一个特殊的 class 单元,用于...
    编程 发布于2024-11-07
  • Tailwind Flex:Flexbox 实用程序初学者指南
    Tailwind Flex:Flexbox 实用程序初学者指南
    Tailwind Flex 提供了一种创建响应式布局的有效方法,无需编写复杂的 CSS。通过使用 flex、flex-row 和 flex-col 等简单的实用程序,您可以轻松对齐和排列元素。 Tailwind Flex 非常适合希望简化布局创建同时保持对对齐、方向和间距的完全控制的开发人员 - 所...
    编程 发布于2024-11-07
  • ETL:从文本中提取人名
    ETL:从文本中提取人名
    假设我们想要抓取chicagomusiccompass.com。 如您所见,它有几张卡片,每张卡片代表一个事件。现在,让我们看看下一篇: 注意事件名称是: jazmin bean: the traumatic livelihood tour 所以现在的问题是:我们如何从文本中提取艺术家的名字? 作为...
    编程 发布于2024-11-07
  • 如何控制 C++ ostream 输出中的浮点精度?
    如何控制 C++ ostream 输出中的浮点精度?
    在 Ostream 输出中维护浮点精度在 C 中,在 ostream 运算中使用“
    编程 发布于2024-11-07
  • 如何保证PHP会话的安全销毁?
    如何保证PHP会话的安全销毁?
    确保销毁 PHP 会话尽管信息存在冲突,但仍有有效的方法可以安全地消除 PHP 会话。要实现此最终终止,遵循多步骤流程至关重要。会话终止的基本步骤删除会话数据:启动会话后与 session_start() 一起,使用 unset() 删除与特定会话变量关联的任何存储数据,例如 $_SESSION[&...
    编程 发布于2024-11-07
  • 为什么我的 MongoDB 文档在 Go 中使用 TTL 索引 5 秒后没有过期?
    为什么我的 MongoDB 文档在 Go 中使用 TTL 索引 5 秒后没有过期?
    在 Go 中使用 MongoDB 在指定的秒数后使文档过期使用 TTL 索引,MongoDB 允许您在指定的秒数后自动使文档过期期间。本文演示了如何使用官方 mongo-go-driver 在 Go 中实现此目的。按照 MongoDB 文档,代码显示了如何:创建带有 expireAfterSecon...
    编程 发布于2024-11-07
  • 使用 JetForms 简化表单管理:完整指南
    使用 JetForms 简化表单管理:完整指南
    在当今的数字环境中,管理表单提交很快就会变得不堪重负,特别是当您跨不同平台处理多个表单时。无论是网站上的简单联系表单还是产品的全面调查,手动维护表单提交都是一件麻烦事。这就是 JetForms 的用武之地——一个简化流程、节省您时间和精力的精简平台。 在本指南中,我将引导您了解如何开始使用 JetF...
    编程 发布于2024-11-07
  • 使用列表列表时如何修复 Tensorflow 中的“不支持的对象类型浮点”错误?
    使用列表列表时如何修复 Tensorflow 中的“不支持的对象类型浮点”错误?
    Tensorflow - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 float)背景您正在尝试训练一个包含列表列表的模型,每个列表包含 1000 个浮点数,但遇到错误“无法将 NumPy 数组转换为张量(不支持的对象类型浮点)。”原因和解决方案 Tensorflow...
    编程 发布于2024-11-07
  • 如何使用 contains() 函数在 XPath 中实现不区分大小写的搜索?
    如何使用 contains() 函数在 XPath 中实现不区分大小写的搜索?
    不区分大小写的 XPath contains() 函数在 XPath 中,contains() 函数区分大小写。但是,有一些方法可以解决此限制。方法 1:翻译字符此方法涉及在检查子字符串之前将字符转换为小写或大写:/html/body//text()[ contains( transla...
    编程 发布于2024-11-07
  • 使用 JavaScript 计算一个月天数的最佳方法是什么?
    使用 JavaScript 计算一个月天数的最佳方法是什么?
    使用 JavaScript 确定一个月中的天数的高效日期计算准确高效地确定一个月中的天数是Web 开发中的常见任务。此计算存在多种方法,每种方法的准确性和效率水平各不相同。问题: 使用哪种方法来确定一个月中的天数最精确且最节省资源的方法是什么? JavaScript?解决方案: 最有效、最准确的方法...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3