繁体   English   中英

在 svg 元素上显示内联和块之间的区别

[英]Difference between display inline and block on svg elements

我理解 div 的区别。

但在 svg 中:

<svg>
    <rect display="block" id="svg_3" height="57" width="52" y="20" x="41" stroke-width="5" stroke="#000000" fill="#FF0000"/>

     <rect display="inline" id="svg_3" height="57" width="52" y="20" x="120" stroke-width="5" stroke="#000000" fill="#0000BB"/>
</svg>

似乎产生相同的结果......('none'隐藏元素tho)这是jsfiddle: https ://jsfiddle.net/foreyez/3c7va377/

有什么区别,默认值是什么,内联还是块?

根据SVG 规范

display: none 值表示给定元素及其子元素不应直接呈现(即,这些元素不存在于呈现树中)。 除了 none 或inherit 之外的任何值都表示给定的元素应由SVG 用户代理呈现。

所以除了 none 之外的所有东西都被完全一样对待。

SVG 不是 HTML,它没有回流的概念(即一个元素位置的变化不会影响文本中除了 tspan 和 tref 之外的其他元素)。

我搜索这个是因为我在一个页面中有一个 svg,其中周围元素的高度比 svg 的实际高度高 5px。

据我所知,如果您使用display="none"display="block"display="inline"确实会有所不同。

就像图像一样,svg 下方有空间。 因为默认情况下它们是内联块元素(在某些浏览器中是内联的)。 因此,它们与文本并排:在 svg 下可见的空间用于“p”和“q”等字母的下行。

这可以通过在 div 中放置一个 svg 来看到。 如果 svg 是 24px。 高,div 的高度(例如)为 29 像素。

display="block"将阻止 svg 保留该空间,因此放置 svg 的 div 将具有相同的高度。

在我的实践中,当我使用<svg>标签时 -- browser (Google Chrome Version 80.0.3987.100 (Official Build) (64-bit))默认将其解释为内联元素 它表现为标准的内联元素 如果 complines display: block css-property for it -- 它表现为标准块元素

如果我们进行一些研究并进入开发工具中任何 svg-child 元素的计算选项卡,那么我们将看到它具有display inline属性。 即使我们将设置 svg display: block svg-child 元素默认保持内联元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM