【发布时间】:2018-01-24 19:25:09
【问题描述】:
我正在学习使用 vanilla JavaScript 将 SVG 数据属性添加到 HTML 对象以适应设备宽度。我正在寻找一种方法来为移动设备和桌面设备之间的不同布局加载和切换 SVG。
我使用 JavaScript setAttribute() 属性构建了一个测试,为对象元素添加数据属性,并根据客户端浏览器窗口宽度注入外部 SVG 文件。
我从各种资源中拼凑出 JavaScript 代码。它有效,但结果很糟糕。 JavaScript 包含一个window.onresize 函数,该函数会导致 SVG 抖动并重新加载/重新绘制。有什么办法可以改进这段代码以减少 FLOUT?
代码如下:
<script>
if (window.matchMedia("(max-width: 760px)").matches) {
/* the view port is at less than 760 pixels wide */
document.getElementsByTagName("object")
[0].setAttribute("data", "assets/images/svg/SVG_dynamic-
test_02.svg");
}
else {
/* the view port is more than 760 pixels wide */
document.getElementsByTagName("object")
[0].setAttribute("data", "assets/images/svg/SVG_dynamic-
test_01.svg");
};
window.onresize=function(){
if (window.matchMedia("(max-width: 760px)").matches) {
/* the view port is at less than 600 pixels wide */
document.getElementsByTagName("object")
[0].setAttribute("data", "assets/images/svg/SVG_dynamic-
test_02.svg");
}
else {
/* the view port is more than 760 pixels wide */
document.getElementsByTagName("object")
[0].setAttribute("data", "assets/images/svg/SVG_dynamic-
test_01.svg");
}
};
</script>
以下是实时原型的链接:
http://craigwebbart.com/prototypes/SVG_attribute-test.html https://codepen.io/cwebba1/pen/GyLVEm
【问题讨论】:
标签: javascript html svg