目錄
簡而言之
演示
Sass結構
首頁 web前端 css教學 我如何用CSS自定義屬性製作圖標系統

我如何用CSS自定義屬性製作圖標系統

Mar 10, 2025 am 10:49 AM

將CSS自定義屬性打造為圖標系統

毫無疑問,SVG是網站圖標的最佳格式。無論屏幕像素密度如何,它都能提供清晰的圖標;您可以更改SVG的懸停樣式,甚至可以使用CSS或JavaScript為圖標添加動畫效果。

在網頁中包含SVG的方法有很多,每種技術都有其自身的優缺點。過去幾年,我一直使用Sass函數直接在我的CSS中導入圖標,避免弄亂我的HTML標記。

我有一個包含所有圖標源代碼的Sass列表。然後,每個圖標都使用Sass函數編碼為data URI,並存儲在頁面根目錄的自定義屬性中。

簡而言之

我在這裡提供的是一個Sass函數,它可以直接在您的CSS中創建一個SVG圖標庫。

SVG源代碼由Sass函數編譯,該函數將其編碼為data URI,然後將圖標存儲在CSS自定義屬性中。然後,您可以像使用外部圖像一樣,在CSS中的任何位置使用任何圖標。

這是從我的個人網站代碼中直接提取的一個示例:

<code>.c-filters__summary h2:after {
  content: var(--svg-down-arrow);
  position: relative;
  top: 2px;
  margin-left: auto;
  animation: closeSummary .25s ease-out;
}</code>
登入後複製

演示

Sass結構

<code>/* 所有圖標源代碼 */
$svg-icons: (
  burger: '<svg data-line="" scss="" viewbox="0...'
);

/* 編碼圖標的Sass函數 */
@function svg($name) {
  @return url('data:image/svg xml, #{$encodedSVG} ');
}

/* 將每個圖標存儲到自定義屬性中 */
:root {
  @each $name, $code in $svg-icons {
    --svg-#{$name}: #{svg($name)};
  }
}

/* 在我的按鈕中添加漢堡圖標 */
.menu::after {
  content: var(--svg-burger);
}       



<p>此技術既有優點也有缺點,因此在項目中實施此解決方案之前,請務必考慮這些因素:</p>


<h4  >優點</h4>


<ul ><li>無需為SVG文件發出HTTP請求。 </li><li>所有圖標都存儲在一個位置。 </li><li>如果需要更新圖標,則無需遍歷每個HTML模板文件。 </li><li>圖標與CSS一起緩存。 </li><li>您可以手動編輯圖標的源代碼。 </li><li>它不會通過添加額外的標記來污染您的HTML。 </li><li>您仍然可以使用CSS更改圖標的顏色或某些方面。 </li></ul>


<h4  >缺點</h4>


<ul ><li>您無法使用CSS為SVG的特定部分添加動畫或更新。 </li><li>圖標越多,編譯後的CSS文件就越大。 </li></ul>



<p>我主要將此技術用於圖標,而不是徽標或插圖。編碼後的SVG始終比其原始文件更大,因此我仍然使用<img src=" data-src="https://img.php.cn/upload/article/000/000/000/174157496146935.jpg" class="lazy" alt="How I Made an Icon System Out of CSS Custom Properties "></svg></code>
登入後複製

以上是我如何用CSS自定義屬性製作圖標系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom 每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom Apr 17, 2025 am 10:55 AM

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

帶有HTML對話框元素的一些動手 帶有HTML對話框元素的一些動手 Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

紙張形式 紙張形式 Apr 16, 2025 am 11:24 AM

購買或建造是技術的經典辯論。自己構建東西可能會感覺更便宜,因為您的信用卡賬單上沒有訂單項,但是

'訂閱播客”鏈接應在哪裡? '訂閱播客”鏈接應在哪裡? Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

快速吞噬緩存破壞 快速吞噬緩存破壞 Apr 18, 2025 am 11:23 AM

您應該肯定會在CSS和JavaScript(以及圖像和字體以及其他內容)等資產上設置遙遠的高速緩存標頭。告訴瀏覽器

See all articles