- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想我在这里的第一个 svg 中遗漏了一个明显的偏移问题,顶部和左侧的边框被修改了(由红色箭头指向),另外如果嵌套了 <g>
之类的东西或 <symbol>
有可能请让我知道,谢谢。 (FF27 中的屏幕截图)
。
简化代码和 fiddle
<svg>
<defs>
<symbol id="ringCenters" style="fill:black;">
<circle cx="50" cy="50" r="2" />
/*...more circles*/
</symbol>
<symbol id="ring1" class="rings">
<path d="M99.9746,51.5943
A50 50 0 1 0
62.5254,98.4057"
stroke="green" />
<path d="M99.9746,51.5943
A50 50 0 0 1
62.5254,98.4057"
stroke="red" />
</symbol>
/*...more rings*/
</defs>
<use xlink:href="#ringCenters" x="10" y="10" />
/*...more rings*/
</svg>
.rings{fill:none;}
svg {
width:600px;
height:300px;
}
最佳答案
形状周围的笔划始终居中在形状的精确几何边界上,因此超出形状的宽度为笔划宽度的一半。
如果出于任何原因您不想使用 overflow:visible
,因此,另一种选择是只调整形状的位置,以便在边缘有一点填充,等于笔划宽度的一半。 (当然,这是假设每次使用符号时笔画宽度都相同。)
请注意,您必须调整 <path>
的位置在 <symbol>
内, 而不仅仅是 <symbol>
的位置在你的 SVG 中。那是因为每个符号元素的引用 is drawn as if it was a nested <svg>
element在它自己的视口(viewport)中,具有固定的高度、宽度和“viewBox”坐标系。您没有在符号上设置这些属性,因此它们最终成为嵌套 SVG 的默认值:宽度和高度等于父级的 100%,默认坐标系 (0,0) 在左上角视口(viewport)。
然后“嵌套 SVG”被定位,使其左上角位于 <use>
中指定的 (x,y) 位置。元素,但就符号内的绘图内容而言,该视口(viewport)的矩形边缘是绘图表面的边缘。当然,除非您像@helderdarocha 所建议的那样明确允许溢出。
(顺便说一下,symbols-are-drawn-as-nested-SVGs 的想法可能就是你需要为 Firefox 指定 svg{ overflow:visible;}
的原因,尽管它确实应该通过直接在符号上设置属性来工作;我' d 称之为 Firefox 错误。)
关于您的其他问题: <g>
元素可以毫无问题地嵌套多次。对于 <symbol>
元素,不是很清楚。 The specs说符号很像<g>
元素除了 (a) 它们有视口(viewport)和 (b) 符号不是直接绘制的,它仅供 <use>
引用。元素。
现在,这表明 <symbol>
s 可以像 <g>
这样嵌套元素。在 Chrome 上它可以工作。在 Firefox 上,不是那么多。我假设发生的事情是当 Firefox 复制外部 <symbol>
的内部内容时, 它对待内部 <symbol>
元素就好像它们只是符号定义,而不是它们是这些符号的渲染。
即像这样的代码
<svg>
<defs>
<symbol id="complicated">
<symbol id="firstPart">
<path d="...."/>
</symbol>
<symbol id="secondPart">
<path d="...."/>
</symbol>
</symbol>
</defs>
<use xlink:href="#complicated"/>
</svg>
像原来一样渲染
<svg>
<defs>
<symbol id="complicated">
<symbol id="firstPart">
<path d="...."/>
</symbol>
<symbol id="secondPart">
<path d="...."/>
</symbol>
</symbol>
</defs>
<g> <!-- The <use> element is drawn as if it was a <g> element -->
<svg> <!-- The <symbol> element is drawn as if it was a nested <svg> -->
<symbol id="firstPart"> <!-- the internal symbol is copied as-is -->
<path d="...."/>
</symbol>
<symbol id="secondPart"> <!-- but symbols aren't drawn directly! -->
<path d="...."/>
</symbol>
<svg>
</g>
</svg>
...那根本不应该被渲染成任何东西。这一点,我不会称之为 Firefox“错误”,只是对规范的字面解释,它不会对嵌套的符号元素给予任何特殊处理。
然而,有一种方法可以让符号嵌套,那就是使用<use>
。符号定义内的元素:
<svg>
<defs>
<symbol id="firstPart">
<path d="...."/>
</symbol>
<symbol id="secondPart">
<path d="...."/>
</symbol>
<symbol id="complicated">
<use xlink:href="#firstPart"/>
<use xlink:href="#secondPart"/>
</symbol>
</defs>
<use xlink:href="#complicated"/>
</svg>
这是使用该结构更新的 fiddle :http://jsfiddle.net/vGNMu/6/
关于SVG 边框出现修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22348896/
在字符串 (\test.something) 之后删除所有内容的命令是什么。 我在文本文件中有信息,但是在字符串之后有 1000 行我不想要的文本。如何删除包括字符串在内的所有内容。 这就是我所拥有的
我想删除每个项目的空白.amount 我在 .amount 类上使用 trim 和 each,但它似乎不起作用: jQuery('.amount').each(function(){ jQue
我列出了以下正在稳步增加的点,例如: [[0, 0], [9, 4], [18, 19], [25, 34], [48, 48], [54, 53], [61, 65], [69, 82], [73,
清理自动生成的 html 带来更多乐趣。标签中注入(inject)了大量无关的空格: Lorem Ipsum dolor sit... ( 代表实际空间,而不是实
计算 trimmed 的有效方法是什么?或winsorized列表的标准差? 我不介意使用numpy,但如果我必须制作列表的单独副本,它会非常慢。 最佳答案 这将制作两个副本,但您应该尝试一下,因为它
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: Leave only two decimal places after the dot Formatting
我正在使用绑定(bind)来填充 Listbox,其中包含 TextBlock 等。 问题是: 如何确保绑定(bind)到 TextBlock 的 Text 属性的文本具有特定长度,或者它是显示为某些
我正在按以下方式修剪 NSString: NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:
我有一个文本列,其内容在字符串的前后混合了换行符和空白字符。我正在尝试编写一个 SELECT 语句,它向我显示没有前导和尾随垃圾的内容。 以下查询修剪空格: SELECT TRIM(column) F
这个问题在这里已经有了答案: How to slice a pandas DataFrame by position? (5 个答案) 关闭 5 年前。 我似乎看不出这里有什么问题。我有一个长度为
我没有找到类似的问题可能是因为我没有找到正确的词(英语不是我的母语) 问题 我有一个 varchar 值,末尾有一个空格:"opt-193-381-markets " 当我执行 SELECT 的值没有
假设我有 $url="../folder/file",我想找到并删除 ../ 部分。 我正在使用 trim() ...... $url = trim($url,"../"); ……但它给了我一个警告:
这个问题在这里已经有了答案: Java String trim has no effect (7 个答案) string trim function is not working [closed]
我有以下 XML: tag:search.twitter.com,2005:22204349686 如何将第二个冒号后的所有内容写入变量? 例如22204349686 最佳答案 if(preg_mat
修剪在深度优先搜索中什么时候停止有效?我一直在研究一种有效的方法来解决 N-Queens 问题,并且我第一次关注修剪。我已经为前两行实现了它,但它什么时候停止有效?我应该修剪多远? 最佳答案 N 皇后
我有一个图表,按天将两种类型的数据制成表格,我希望只修剪图表中的第一个和最后一个标签。这是一个可重现的数据示例: library(dplyr) library(ggplot2) library(sca
如何去掉 excel 中的前导空格? 我有很多行有这个问题。 最佳答案 在您的空格删除请求中,请注意: TRIM仅删除字符 32,即标准空格。 CLEAN将删除非打印空格,例如回车符(字符 13)和换
当前正在编写指令,并且需要将空格作为字符传递给它。 喜欢: 结果证明 angular 消除了前导空间;但我想保留它。 有什么办法吗? 编辑:我将指令参数作为字符串传递(使用@,而不是作为变量,使用=
我正在为一个使用 Bold for Delphi 对象持久性框架的应用程序的数据库做一些维护。该数据库已经投入生产多年,其中一些表已经变得非常大。其中之一是 BOLD_CLOCKLOG这与 Bold
如何“修剪” NSString 以便仅用旧字符串的特定部分创建新字符串? 例如,我有字符串“Monday the 12th of September”,我如何仅选出“Monday”部分? 最佳答案 使
我是一名优秀的程序员,十分优秀!