html - 是否可以在单击时修改 svg 图像的内部颜色
问题描述
我有一张星星的图像,内部颜色显然是透明的,我想知道是否可以单击更改内部颜色,例如星级。只使用没有任何脚本的 html CSS。空白星
- 尝试了填充选项,但它只修改了星星的外线。- 尝试使用 svg tags 对象标签,但再次没有填充星号。
我在想我唯一的选择是填充另一个图像并在它们之间进行交换......
解决方案
是的,你可以改变星星的内部颜色onclick
,但是你确实需要一个小js来为对象添加一个类。如果它只是一个rollover
,你可以只用 CSS 来做到这一点,:hover
在元素的类定义中添加一个状态。
为了实现这两者,SVG 必须是 HTML 内联的,因此它是 DOM 的一部分。
关于你的问题:
- 尝试了填充选项,但它只修改了星星的外线。- 尝试使用 svg tags 对象标签,但再次没有填充星号。
为了更改对象的填充颜色,您必须更改属性fill
,如下所示:
.star-holder{
width:6rem;
height:6rem;
}
.star-holder img {
width: 100%
height:auto;
}
.star {
fill:#666
}
.star:hover {
fill:#f29111;
}
<h3> Star rollover demo</h3>
<div class="star-holder">
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 1278.000000 1280.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)"
stroke="none" class="star">
<path d="M6760 12443 c-137 -26 -302 -163 -453 -375 -207 -293 -384 -645 -802
-1598 -347 -790 -486 -1070 -667 -1337 -211 -311 -357 -373 -878 -374 -303 0
-573 22 -1315 106 -310 36 -666 73 -930 97 -191 17 -792 17 -905 0 -359 -56
-525 -174 -538 -382 -7 -128 43 -265 161 -442 197 -294 514 -612 1317 -1323
955 -845 1247 -1174 1290 -1452 37 -234 -95 -656 -453 -1458 -364 -816 -430
-963 -490 -1110 -252 -611 -352 -998 -318 -1236 31 -222 145 -333 357 -346
311 -21 768 169 1699 704 749 431 885 508 1051 596 451 240 718 338 924 341
121 1 161 -10 310 -84 265 -133 574 -380 1300 -1040 1006 -916 1405 -1206
1752 -1276 102 -21 173 -13 255 27 103 50 160 135 204 304 21 81 23 111 23
315 0 125 -5 267 -12 320 -51 379 -107 674 -253 1335 -229 1034 -279 1327
-279 1647 0 162 16 260 55 346 101 221 462 490 1275 952 661 375 831 473 1005
578 739 446 1065 761 1065 1027 0 155 -96 273 -306 378 -300 150 -748 236
-1764 342 -1052 108 -1334 148 -1637 225 -387 100 -514 201 -648 515 -117 276
-211 629 -391 1482 -135 644 -212 973 -289 1237 -115 398 -240 668 -380 824
-94 105 -221 156 -335 135z"/>
</g>
</svg>
</div>
星级评分系统需要一个脚本来保存用户点击星星时的状态,等等。你可能想检查这个已经有星型系统与 SVG 一起工作的repo
推荐阅读
- javascript - 如何在 JS 中映射对象数组并为每个对象获取网络数据?
- r - 如何使用 r 中的 if-else 循环替换时间序列数据的缺失值
- python - 如何从使用 plot_date 生成的图形中删除点?
- c++ - 使用 OpenSSL 作为静态库在 Visual Studio 中编译项目
- apache - Apache 为每个 WebSocket 连接保留一个活动工作器
- svn - 如何使用最后 2 个版本的 SVN 存储库打印所有文件的属性?
- android - C++ 信号处理程序无法通知 Java 端
- f# - 在 F# 类型提供程序中,如何将静态类添加到提供的类型?
- perl - Perl中以qw表示的数组数组
- sql-server - 如何在 SQL 2008 中设置带有回滚的 try/catch 块?