将svg附加并拉伸到父级

布拉德·伍兹(Brad Woods)

在下面的示例中,我有3个div:

  • 第一个是一个空的div,
  • 第二个有一个内联的SVG作为子对象,
  • 第三个是一个空的div,它通过JS附加了SVG。

我的问题是;

  1. 为什么第二个SVG向下推页面?我只是将SVG放在div中,没有改变任何边距。
  2. 默认情况下,SVG的宽度和高度为100%,因此,如果将SVG放入容器中,则应拉伸以填充该容器。但是,当我通过JS附加SVG时,它没有。

http://codepen.io/BradLee/pen/oxvQMN?editors=1010

<div></div>

<div>
    <svg viewbox="0 0 24 24">
        <path d="M2,14l6,6h12c1.1,0,2-0.9,2-2V6c0-1.1-0.9-2-2-2L4,4C2.9,4,2,4.9,2,6V14z M9,18.5L3.5,13H9V18.5z"/>
        <path fill="none" d="M0,0h24v24H0V0z"/>
    </svg>
</div>

<div class="svgAppendDiv"></div>


div{
    display: inline-block;
    margin-left: 100px;
    background-color: tomato;
    width: 300px;
    height: 300px;
}


var myDiv = document.querySelector(`.svgAppendDiv`);

function createElement () {
    let svg = document.createElementNS("http://www.w3.org/2000/svg", 'svg');
    svg.setAttribute(`xmlns`, `http://www.w3.org/2000/svg`);
    svg.setAttribute(`viewbox`, `0 0 24 24`);
    svg.setAttribute(`preserveAspectRatio`, `none`);

    let path = document.createElementNS("http://www.w3.org/2000/svg","path");
    path.setAttribute("d", "M2,14l6,6h12c1.1,0,2-0.9,2-2V6c0-1.1-0.9-2-2-2L4,4C2.9,4,2,4.9,2,6V14z M9,18.5L3.5,13H9V18.5z");

    svg.appendChild(path);
    myDiv.appendChild(svg);
};

createElement();
保罗·勒博

为什么第二个SVG向下推页面?

这是由于CSS与所包含的一种样式表之间的交互(material.blue-amber.min.css)引起的

您正在重新定义<div>inline-block,而样式表已设置<svg>为具有vertical-align: middle

要覆盖它,请将以下规则添加到CSS中以重置对齐方式。

svg {
    vertical-align: baseline;
}

默认情况下,SVG的宽度和高度为100%,因此,如果将SVG放入容器中,则应拉伸以填充该容器。但是,当我通过JS附加SVG时,它没有。

您拼写viewBox错误。SVG中的属性区分大小写。如果您解决了该问题,它将起作用。

更新的代码笔:http ://codepen.io/anon/pen/NNjRva

顺便说一句

  1. 您在某些JS中使用反引号而不是单引号。这将在最近的浏览器版本中起作用。但是,如果要编写需要在较旧的浏览器中运行的代码,则可能要避免养成它的习惯。

  2. 您不需要像您所做的那样显式设置xmlns属性。使用时为您完成createElementNS()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将div拉伸到父级的高度

来自分类Dev

如何将div拉伸到父级li的大小

来自分类Dev

将Flutter Row的子级拉伸到最大*自然*高度

来自分类Dev

如何将文本附加到 SVG 中的父级?

来自分类Dev

将子菜单拉伸到父菜单大小

来自分类Dev

如何将父元素的高度拉伸到包含图像

来自分类Dev

将SVG路径文本拉伸到3D网格

来自分类Dev

将SVG路径文本拉伸到3D网格

来自分类Dev

如何将TableRow的一个子级拉伸到最大可用高度?

来自分类Dev

将固定拉伸到底部父div到div孩子的宽度

来自分类Dev

将复选框拉伸到父组合框的整个宽度

来自分类Dev

将SVG拉伸到视口(容器div),而无需通过viewBox设置纵横比

来自分类Dev

将 TabItem 拉伸到 TabControl 宽度

来自分类Dev

图像没有拉伸到完整的父高度?

来自分类Dev

无法将<p:ajax>附加到非ClientBehaviorHolder父级

来自分类Dev

无法将Button元素附加到li父级

来自分类Dev

在未知宽度的父级中,将宽度未知的元素与固定宽度的元素一起拉伸

来自分类Dev

如何将图像拉伸到其父代的填充内?

来自分类Dev

如何将块的背景拉伸到屏幕的整个宽度?

来自分类Dev

显示:网格。如何将块拉伸到全宽

来自分类Dev

将div拉伸到固定宽度元素内的全宽

来自分类Dev

滚动后如何将DIV拉伸到页面底部

来自分类Dev

如何将像素图拉伸到窗口的边缘?

来自分类Dev

如何将JButton拉伸到JPanel的整个高度

来自分类Dev

如何将WAV文件拉伸到相同的视频长度?

来自分类Dev

将进度条拉伸到原始图像的起始位置

来自分类Dev

将嵌套的div宽度拉伸到容器的宽度吗?

来自分类Dev

将DIV内的DIV拉伸到100%的高度?

来自分类Dev

将右侧边栏背景拉伸到屏幕的右边缘

Related 相关文章

热门标签

归档