javascript - svg 的宽度高度没有改变

标签 javascript html svg

当我尝试更改 svg 标签的高度和宽度时,它发生了变化,但 grts 中的 map 被剪切了。

这是svg文件的样本

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="500pt" height="500pt" viewBox="0 0 500 500" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <g transform="translate(528,270)" > 
        <g id="states" fill="green" width="500pt" height="500pt" >
            <a id="s01">
                <path d="M158.95067408594068,46.88327098850149L185.03303599629845,44.0148159910488L189.74121811302572,59.50889743727097L196.59587401503094,82.27898337817625L199.0518321008348,87.17077847298319L201.13017099189912,89.85649424407167L200.707578706067,91.7588142001174L202.6261541288344,92.6205139503571L200.33524838576966,95.29216920133321L200.7363444144292,97.59217497211156L199.80999341478454,100.8918397716738L202.09021078470892,106.20782432993735L201.64399529140977,111.17790897235179L204.03767592952832,115.96122130827978L196.3574723373462,117.09985438789514L163.47293491613115,121.08122011183377L163.22294648718562,123.55296427740802L167.13791879442175,126.6835133291724L166.871741037497,129.76735843938286L168.2485001228969,131.1400084527912L166.21795234496457,134.1137855808483L164.12121282499038,134.9547500732084L159.81791064191435,132.36796011584426L158.90469329765804,127.88713803963412L157.64560372254968,127.51168600895127L156.5390262005875,131.08669596034315L156.36678872306632,134.46030822963786L152.20800610122825,133.97284127048096L148.16895577705603,105.98121856614907L148.12136132417422,70.56398790998259L148.15893441899317,50.102043132249676L146.40831263672231,48.33943105796875Z" stroke="#FFFFFF" stroke-dasharray="1, 0" stroke-width="1.5"></path>
                <text x="162.66165594858754" y="86.92631614090374" style="">AL</text>
                <title></title>
            </a>
            <a id="s02">

最佳答案

玩过你的样本后,我想我知道可能会发生什么。

您对您的文件做了什么来尝试调整它的大小?您是否更改了宽度和高度,或者是否更改了 viewBox 值?还是两者兼而有之?

在您发布的片段中,阿拉巴马州的轮廓超出了图片的右手边缘。那是因为第一组的转换:

transform="translate(528,270)"

这会将阿拉巴马原点移动到 528,270,它超出了 viewBox (500x500) 定义的图的边缘。

因此更改宽度和高度不会将阿拉巴马州带回页面。您必须更改 viewBox,使其包含 Alabama 所在的页面部分。因此,例如,如果您将其更改为:

viewBox="0 0 1000 500"

阿拉巴马州现在可见,然后您可以根据需要更改 map 的大小。

Demo here

综上所述,viewBox(x y width height)描述了页面内容的边界。 widthheight 告诉渲染器将 viewBox 描述的区域缩放到多大。 所以在这种情况下,1000x500 viewbox 中的所有内容都将被缩放,以便它适合由宽度和高度 (500x500) 定义的框。因此,实际上, map 会针对这些值缩小(1000x500 缩小到 500x250)。

关于javascript - svg 的宽度高度没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887746/

相关文章:

javascript - 具有扩展类和模块的 es6 变量作用域

javascript - 如何允许字符串既匹配某个表达式又不包含另一个字符串

javascript - 网站可以知道我是否在运行用户脚本吗?

html - 4个额外的垂直像素?

css - div 向两个方向倾斜

javascript - 通用 AJAX 完成处理程序?

html - Material Design Lite 表单按钮不提交任何内容

javascript - 使用 JS 无法按预期工作将 onclick 事件分配给多个跨度

javascript - 烘焙转换为 SVG 路径元素命令

javascript - 使用 javascript 将椭圆转换为路径