gpt4 book ai didi

javascript - 用javascript修改svg属性没有效果

转载 作者:技术小花猫 更新时间:2023-10-29 12:30:00 25 4
gpt4 key购买 nike

我正在尝试使用 javascript 修改 svg 标签以使其可调整大小,但我的更改没有效果。我需要这样做的原因是这个标签是由我无法修改的库呈现的,因此我唯一的选择似乎是用 javascript 修改 svg。

我知道这个脚本生成的标签是正确的,因为我能够将标签复制到一个新的 html 文档并且它会起作用(我已经将它包含在示例代码中),所以我似乎需要一些方法强制 svg 识别它已被更改(或以其他方式修改 svg)。

这是一个显示我的问题的 HTML 页面:

<html>
<head>
<script src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var svg = $('#testsvg').find('svg')[0];

var w = svg.getAttribute('width').replace('px', '');
var h = svg.getAttribute('height').replace('px', '');

svg.removeAttribute('width');
svg.removeAttribute('height');

svg.setAttribute('viewbox', '0 0 ' + w + ' ' + h);
svg.setAttribute('preserveaspectratio', 'xminymin meet')

$(svg)
.css('width', '100%')
.css('height', '100%')
.css('background-color', 'white');
});
</script>
</head>
<body style="background-color: #333;">
<div style="width: 80%; height: 40%;">
<svg id="resultsvg" xmlns="http://www.w3.org/2000/svg" version="1.1" style="width: 100%; height: 100%; background-color: white; " viewbox="0 0 100 100" preserveaspectratio="xminymin meet">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="2" fill="red"></circle>
</svg>
</div>
<div id="testsvg" style="width: 80%; height: 40%;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100px" height="100px">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
</svg>
</div>
</body>
</html>

最佳答案

SVG 区分大小写,所以

svg.setAttribute('viewbox', '0 0 ' + w + ' ' + h);
svg.setAttribute('preserveaspectratio', 'xminymin meet')

应该这样写

svg.setAttribute('viewBox', '0 0 ' + w + ' ' + h);
svg.setAttribute('preserveAspectRatio', 'xMinYMin meet')

<svg> 上的宽度和高度元素是属性而不是样式(不像 html)所以你应该使用 setAttribute('width', '100%')而不是 .css('width', '100%')

关于javascript - 用javascript修改svg属性没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com