html - 在后台使用精灵中的 SVG
问题描述
我的目标是SVG
在重复背景中使用,但我需要能够更改其fill
颜色以CSS
在网站的不同部分使用。
据我的理解SVG
,它不能作为一个外部文件(background:url(image.svg)
),因为那样我就不能改变它的CSS
属性fill
。另一方面,SVG
不能在HTML
( <svg>...</svg>
) 中内联,因为这样我就无法在background
属性中使用/引用它。
如果我错了,请纠正我,或者你有什么解决办法吗?
解决方案
就我对 SVG 的理解而言,它不能作为外部文件 (background:url(image.svg)) 进行加载,因为这样我就无法更改 CSS 属性,比如它的填充属性。
考虑使用CSS 过滤器来改变 svg 的颜色,而不是fill
在下面的示例中,svg 文件作为外部文件加载:
background-image:url(https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/android.svg);
并且它的颜色将在悬停时使用 CSS 过滤器的组合进行更改
您可以使用该实用程序为特定颜色获得所需的过滤器组合
https://codepen.io/sosuke/pen/Pjoqqp
悬停改变颜色
.android {
display:inline-block;
width:96px;
height:105px;
background-image:url(https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/android.svg);
}
.android.blue:hover {
filter: invert(8%) sepia(99%) saturate(7454%) hue-rotate(248deg) brightness(100%) contrast(143%);
}
.android.red:hover {
filter: invert(25%) sepia(100%) saturate(7420%) hue-rotate(6deg) brightness(98%) contrast(122%);
}
.android.gold:hover {
filter: invert(50%) sepia(31%) saturate(3357%) hue-rotate(113deg) brightness(99%) contrast(101%);
}
<div class="android blue">
</div>
<div class="android red">
</div>
<div class="android gold">
</div>
推荐阅读
- swift - 如何在 Swift 5 中对数组的数组进行排序
- r - 将矩阵更改为具有相同维度的数据框的问题
- android - 是否可以在不使用面向 API 29 的 Android 应用程序的前台服务的情况下进行屏幕录制?
- button - Power BI Desktop 中的书签
- ssas - 检查 MDX 命名集中是否存在项目
- ios - Swift - 使用UnsafePointer传递变量和传递变量地址之间的区别?
- android - 在 Android Studio 项目中集成 MoShi 和 Retrofit 2 的最佳方式
- php - 在 cPanel 中将主页更改为 php 脚本
- firebase - 使用颤振将入口地图发布到 Firestore
- amazon-web-services - 通过 eksctl 启用功能门 EKS