Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SVG填充宽度到子元素

SVG填充宽度到子元素
EN

Stack Overflow用户
提问于 2014-05-04 04:25:00
回答 3查看 3.3K关注 0票数 4

我想让我的容器SVG元素缩放,以便适合它的子组元素,或者让它在溢出时显示滚动条。我想知道是否有一个css属性来做到这一点。

例如,如果标记如下所示:

代码语言:javascript
运行
AI代码解释
复制
<div class="wrapper" style="width:500px; overflow-x:scroll;">
   <svg class="main">
      <g width="1000"></g>
   </svg>
</div>

我如何让svg的宽度填充到'1000‘,或者如果子元素超过宽度就显示滚动条?

以下css对上述内容没有影响:

代码语言:javascript
运行
AI代码解释
复制
.main {
    width: 500px; // Setting to 100% also does nothing
    overflow-x: scroll;
}

目前,我使用javascript根据需要更新svg容器的宽度,以达到预期的效果;但这很麻烦,而且容易出错,因为我需要检查以确保在svg中添加任何新元素时,svg容器的大小都会调整到合适的大小。

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2014-05-04 17:11:10

<svg>中删除widthheight,然后添加一个viewBox属性。此外,您还需要一个具有所需行为的值的preserveAspectRatio属性。

有关更多详细信息,请查看here。此方法使用SVG视口,乍一看有点复杂,但实际上,它将可见尺寸与图形的图形设置分开。这样,<svg>从它所处的上下文接收其宽度和高度,在本例中是从css接收的。

我花了一段时间来理解这个概念,但一旦你理解了它,你就会注意到它给了你很大的灵活性,这实际上比像素图像要多得多。

票数 2
EN

Stack Overflow用户

发布于 2014-05-04 06:00:34

我不确定这是否解决了您的问题,但是您可以将约束放在svg的父标记( div标记)上。

如下所示:

代码语言:javascript
运行
AI代码解释
复制
<div class="wrapper">
  <svg class="main" xmlns="http://www.w3.org/2000/svg">
    <g>
      <rect x="20" y="20" height="250" width="400" style="fill:#006600"/>       
    </g>
  </svg>
</div>

.wrapper {
    width: 200px;
    height: 100px;
    overflow: scroll;
}
.main {
    width: 400px; 
    height: 250px;
}

这是一个jsfiddle

票数 0
EN

Stack Overflow用户

发布于 2014-05-05 04:42:06

当您向SVG添加元素时,无法让SVG自动更新其宽度和高度。您所能做的就是手动更新宽度和高度。

但是,不必每次添加内容时都要更新SVG的宽度和高度,您可以添加一个间隔计时器函数来为您执行检查。

代码语言:javascript
运行
AI代码解释
复制
setInterval(mySVGCheckFn, 500);

function  mySVGCheckFn() 
{
    var  svg = document.getElementById("mysvg");
    var  bbox = svg.getBBox();

    // Add 10 padding for some breathing space    
    svg.setAttribute("width", bbox.x + bbox.width + 10);
    svg.setAttribute("height", bbox.y + bbox.height + 10);
}

Demo here

单击“添加更多”将随机圆添加到SVG中。

DOM2添加了一些事件类型,这些事件类型应该在您向DOM添加节点时触发。它们将是理想的解决方案,但是我相信它们并不是在所有浏览器上都能得到可靠支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23452610

复制
相关文章
SVG与foreignObject元素
可缩放矢量图形Scalable Vector Graphics - SVG基于XML标记语言,用于描述二维的矢量图形。作为一个基于文本的开放网络标准,SVG能够优雅而简洁地渲染不同大小的图形,并和CSS、DOM、JavaScript等其他网络标准无缝衔接。SVG图像及其相关行为被定义于XML文本文件之中,这意味着可以对其进行搜索、索引、编写脚本以及压缩,此外这也意味着可以使用任何文本编辑器和绘图软件来创建和编辑SVG。
WindRunnerMax
2023/08/13
5690
<网页布局>解决margin-top塌陷,实现子元素动态改变父元素尺寸1.伪类解决margin-top塌陷:2.浮动子元素动态改变父元素宽度:
1.伪类解决margin-top塌陷: 如果两个不浮动的盒子相互嵌套,对内部的盒子设置margin-top会导致属性被自动转移到外部的盒子上,导致内部盒子的margin-top设置失败最靠谱的解决方式
zhaoolee
2018/04/19
1.7K0
<网页布局>解决margin-top塌陷,实现子元素动态改变父元素尺寸1.伪类解决margin-top塌陷:2.浮动子元素动态改变父元素宽度:
向容器中填充元素---fill
利用fill可以将容器区间填充为指定的值 属于算术生成算法一类的小型算法-----需要包含头文件numeric
大忽悠爱学习
2021/03/02
6470
向容器中填充元素---fill
子元素滚动,父元素不滚动
这个是为了处理在bootstrap框架中的iframe 滚动条的问题,查找到的解决方案
solate
2019/07/22
4.1K0
React技巧之使用ref获取元素宽度
原文链接:https://bobbyhadz.com/blog/react-get-element-width-ref[1]
chuckQu
2022/08/19
4.1K0
LeetCode 891. 子序列宽度之和(数学)
类似题目: LeetCode 907. 子数组的最小值之和(单调栈) 天池 在线编程 所有子数组之和(排列组合)
Michael阿明
2021/09/06
3640
wordpress子比主题更改首页样式全宽度[美化教程]
在主题目录下“func.php”下面添加下面代码,这是我修改后的“图文封面卡片”小工具
七辰
2023/10/06
1.7K0
wordpress子比主题更改首页样式全宽度[美化教程]
一篇文章教会你使用SVG 填充图案
SVG填充图案用于用由图像组成的图案填充形状。该图案可以由SVG图像(形状)或位图图像组成。SVG填充模式看起来就像从Photoshop等中所习惯的那样,被称为“平铺”。
前端进阶者
2021/03/03
2.1K0
一篇文章教会你使用SVG 填充图案
禁止谷歌广告宽度超父元素的宽度,避免破坏移动网页样式
开通 谷歌广告联盟 Google AdSense 后,当访客使用手机访问时,谷歌自适应广告的宽度会展开为设备全宽,使得广告宽度超过了父元素的宽度,如下图所示:
Yangsh888
2022/03/28
8160
vue获取当前点击元素的父元素、子元素、上级元素等
<div @click = "clickfun($event)">点击</div> methods: { clickfun(e) { // e.target 是你当前点击的元素 // e.currentTarget 是你绑定事件的元素 #获得点击元素的前一个元素 e.currentTarget.previousElementSibling.innerHTML #获得点击元素的第一个子元素 e.curre
用户1349575
2022/01/26
11.3K0
SVG学习笔记,持续记录。
SVG是一种用XML定义的语言,用来描述二维矢量及矢量/栅格图形。SVG提供了3种类型的图形对象:矢量图形(vectorgraphicshape,例如:由直线和曲线组成的路径)、图像(image)、文本(text)。图形对象还可进行分组、添加样式、变换、组合等操作,特征集包括嵌套变换(nestedtransformations)、剪切路径(clippingpaths)、alpha蒙板(alphamasks)、滤镜效果(filtereffects)、模板对象(templateobjects)和其它扩展(extensibility)。
房东的狗丶
2023/02/17
3K0
SVG学习笔记,持续记录。
一篇文章带你了解SVG <tspan>元素
SVG <tspan>元素用于在SVG中绘制多行文本。不必绝对定位每行文本,该 <tspan>元素使相对于前一行文本放置一行文本成为可能。该 <tspan>元素还使用户可以一次选择并复制粘贴几行文本,而不仅仅是一个text元素。
前端进阶者
2021/01/22
2.2K0
一篇文章带你了解SVG <use> 元素
SVG <use>元素可以重用SVG文档中其他位置(包括 <g>元素和 <symbol>元素)的SVG形状。可以在 <defs>元素内部(使形状直到使用之前不可见)或外部定义重用形状。
前端进阶者
2021/01/22
3.9K0
盘点Arrays工具类中复制元素和填充元素的常用方法
在java的util包中提供了一个Arrays工具类用来操作数组的,它提供了许多的静态方法,例如数组所有元素进行排序,按从小到大的顺序、查找元素等。使用时需要导包如下所示:
Java进阶者
2021/08/20
7940
20个 CSS 快速提升技巧
css重置库如normalize.css已经被使用很多年了,它们可以为你的网站样式提供一个比较清晰的标准,来确保跨浏览器之间的一致性。
王小婷
2020/11/02
3.3K0
一篇文章带你了解SVG 文本效果
SVG <text>元素用于在SVG图像中绘制文本。在svg中使用 <text>元素,可以实现绘制文字,文字旋转,多行文字,具有超级链接的文字等。
前端进阶者
2021/04/13
1.3K0
一篇文章带你了解SVG 文本效果
js判断是否是子元素
在while循环中,俺使用赋值运算符=进行迭代,直到不再有父节点,在本例中为el.parentNode返回null时, while循环结束。
IT工作者
2022/01/15
10.8K0
SVG精髓阅读笔记
SVG,是一种可缩放矢量图形,一种XML应用.可以以一种简洁,可移植的形式表示图形信息.
拿我格子衫来
2022/01/24
1.5K0
如何提升你的CSS技能,掌握这20个css技巧即可[完整版]
随着前端开发越来越关注效率:通过选择器的使用和简化代码来快速加载渲染。像Less、SCSS这样的预处理器在工作的时候,需要绕的路较长,而直接使用css速度会更快。这里涵盖了20个css技巧来帮助你减少重复规则和复写,在布局中标准化样式流程,不仅可以帮助你高效地创建自己的框架,而且可以解决许多常见的问题。
Javanx
2019/09/04
5.1K0
如何提升你的CSS技能,掌握这20个css技巧即可[完整版]
子元素margin-top转移到父元素
如果子元素设置了margin-top/bottom,且父元素没有触发hasLayout,那么子元素的margin就可能转移到父元素。具体表现如下图(父元素虽然设置了background,但并不能覆盖子元素的margin部分;不过父元素高度足够时可以覆盖margin-bottom):
gojam
2019/09/19
1.1K0
子元素margin-top转移到父元素

相似问题

使子元素填充父元素的最小宽度。

16

horizontalscrollview设置子元素以填充horizontalscrollview宽度

35

增加子元素宽度到父元素之外

14

Rect没有填充svg的宽度

14

NVD3调整图表的宽度以填充svg元素

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文