」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 你應該了解的現代 CSS 樣式 4

你應該了解的現代 CSS 樣式 4

發佈於2024-11-07
瀏覽:381

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 域和子域在PHP 中控制Cookie 域和子域建立多子網域網站時,必須控制會話cookie 的網域確保每個子網域的正確會話管理。然而,手動設定網域時,PHP 的 cookie 處理似乎存在差異。 header("Set-Cookie: cookiename=c...
    程式設計 發佈於2024-11-07
  • 如何取得已安裝的 Go 軟體包的完整清單?
    如何取得已安裝的 Go 軟體包的完整清單?
    檢索Go 中已安裝軟體包的綜合清單在多台電腦上傳輸Go 軟體包安裝時,有必要取得詳細的清單所有已安裝的軟體包。本文概述了此任務的簡單且最新的解決方案。 解決方案:利用“go list”與過時的答案相反,當前的建議列出Go 中已安裝的軟體包是使用“go list”命令。透過指定三個文字句點 ('...
    程式設計 發佈於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 輸出中維護浮點精度在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 文檔,程式碼顯示如何:建立帶有expireAfterSeconds 的索...
    程式設計 發佈於2024-11-07
  • 使用 JetForms 簡化表單管理:完整指南
    使用 JetForms 簡化表單管理:完整指南
    在當今的數位環境中,管理表單提交很快就會變得不堪重負,特別是當您跨不同平台處理多個表單時。無論是網站上的簡單聯絡表單還是產品的全面調查,手動維護表單提交都是一件麻煩事。這就是 JetForms 的用武之地——一個簡化流程、節省您時間和精力的精簡平台。 在本指南中,我將引導您了解如何開始使用 Jet...
    程式設計 發佈於2024-11-07
  • 使用清單清單時如何修復 Tensorflow 中的「不支援的物件類型浮點」錯誤?
    使用清單清單時如何修復 Tensorflow 中的「不支援的物件類型浮點」錯誤?
    Tensorflow - ValueError:無法將NumPy 數組轉換為張量(不支援的物件類型float)背景您正在嘗試訓練一個)背景]您正在嘗試訓練一個包含清單清單的模型,每個清單包含1000 個浮點數,但遇到錯誤「無法將NumPy 陣列轉換為張量(不支援的物件類型浮點)。」x_train =...
    程式設計 發佈於2024-11-07
  • 如何使用 contains() 函數在 XPath 中實作不區分大小寫的搜尋?
    如何使用 contains() 函數在 XPath 中實作不區分大小寫的搜尋?
    不區分大小寫的 XPath contains() 函數在 XPath 中,contains() 函數區分大小寫。但是,有一些方法可以解決此限制。 方法1:翻譯字元此方法涉及在檢查子字串之前將字元轉換為小寫或大寫:/html/body//text()[ contains( translat...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3