搜索
首页web前端css教程我如何用CSS自定义属性制作图标系统

将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?x-oss-process=image/resize,p_40" class="lazy" alt="How I Made an Icon System Out of CSS Custom Properties "></svg></code>

以上是我如何用CSS自定义属性制作图标系统的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
两个图像和一个API:我们重新着色产品所需的一切两个图像和一个API:我们重新着色产品所需的一切Apr 15, 2025 am 11:27 AM

我最近找到了一种动态更新任何产品图像的颜色的解决方案。因此,只有一种产品之一,我们可以以不同的方式对其进行着色以显示

每周平台新闻:第三方代码,被动混合内容,连接最慢的国家的影响每周平台新闻:第三方代码,被动混合内容,连接最慢的国家的影响Apr 15, 2025 am 11:19 AM

在本周的综述中,灯塔在第三方脚本上阐明了灯光,不安全的资源将在安全站点上被阻止,许多国家连接速度

托管您自己的非JavaScript分析的选项托管您自己的非JavaScript分析的选项Apr 15, 2025 am 11:09 AM

有很多分析平台可帮助您跟踪网站上的访问者和使用数据。也许最著名的是Google Analytics(广泛使用)

它全部都在头上:管理带有React头盔的React Power Site的文档头它全部都在头上:管理带有React头盔的React Power Site的文档头Apr 15, 2025 am 11:01 AM

文档负责人可能不是网站上最迷人的部分,但是其中所处的内容对于您的网站的成功也一样重要

JavaScript中的Super()是什么?JavaScript中的Super()是什么?Apr 15, 2025 am 10:59 AM

当您看到一些称为super()的JavaScript时,在子类中,您会使用super()调用其父母的构造函数和超级。访问它的

比较不同类型的本机JavaScript弹出窗口比较不同类型的本机JavaScript弹出窗口Apr 15, 2025 am 10:48 AM

JavaScript具有各种内置弹出API,它们显示用于用户交互的特殊UI。著名:

为什么可访问的网站如此难以构建?为什么可访问的网站如此难以构建?Apr 15, 2025 am 10:45 AM

前几天,我与一些前端人们聊天,讲述了为什么这么多公司努力创建可访问的网站。为什么可访问的网站如此艰难

'隐藏”属性显然很弱'隐藏”属性显然很弱Apr 15, 2025 am 10:43 AM

有一个HTML属性,它可以正是您认为应该做的:

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中