【发布时间】:2017-03-16 10:13:00
【问题描述】:
我有一个由复选框的两种状态组成的 SVG 图像精灵。我在 SVG 文件中创建了两个组 ID,因此我可以通过单击时的片段标识符来更改 SVG 视图框。
当我尝试将类名切换为“已选中”时,它不会将复选框重新呈现为正确的状态,除非我采取措施强制重新绘制(例如调整窗口大小)。
这适用于 Firefox,但不适用于 Chrome (v56)。我可以通过更改显示来使其工作:; “检查”类中的属性,但只是好奇这里到底发生了什么。
Codepen 在这里玩: https://codepen.io/anon/pen/evGWPj
HTML
<html>
<body>
<div class="check" id="check">
Click me
</div>
<p>Then, resize the viewport</p>
</body>
</html>
CSS
.check {
background-image:url("https://s3-eu-west-1.amazonaws.com/static.musomatt.com/misc/checkbox.svg#unchecked");
background-size:18px;
background-position:10px center;
background-repeat: no-repeat;
padding-left:40px;
cursor:pointer;
}
.checked {
background-image:url("https://s3-eu-west-1.amazonaws.com/static.musomatt.com/misc/checkbox.svg#checked");
}
JS
var el = document.getElementById("check");
el.addEventListener("click", toggleCheck);
function toggleCheck(){
el.classList.toggle("checked");
}
【问题讨论】:
标签: javascript html css svg