css - svg 在包含 div 的范围内稍微移位

标签 css svg

我正在尝试构建一个颜色选择器。我想在不透明度选择器下方显示方格图案,因此我决定将我的 svg 组件放在一个 div 中,并将背景颜色附加到它。

无论我是否向 div 添加样式,svg 都是在其容器内移位的几个像素,我看不出如何解决这个问题。 (换句话说,我可以关闭所有样式,问题仍然存在,只是当背景为白色时您不会注意到它)

<div class="opacity-picker" style="background-image: linear-gradient(45deg, rgb(128, 128, 128) 25%, transparent 25%), linear-gradient(-45deg, rgb(128, 128, 128) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgb(128, 128, 128) 75%), linear-gradient(-45deg, transparent 75%, rgb(128, 128, 128) 75%); background-size: 12px 12px; background-position: 0px 0px, 0px 6px, 6px -6px, -6px 0px; width: 200px; height: 12px;"><svg width="100%" height="100%"><defs><linearGradient id="gradient-opacity" x1="100%" y1="0%" x2="0%" y2="0%"><stop offset="0%" stop-color="rgba(0%,100%,100%,1)" stop-opacity="1"></stop><stop offset="100%" stop-color="rgba(0%,100%,100%,1)" stop-opacity="0"></stop></linearGradient></defs><rect x="0" y="0" width="100%" height="100%" fill="url(#gradient-opacity)"></rect></svg></div>

svg

最佳答案

<svg> element 是一个行内元素,与 <img> 相同元素。所以默认情况下,它会被放置在一行文本的基线上。所以它下面会留有空间用于下行字符(如 g、j 等)。

解决方案是将 SVG 设置为 display: block .

svg {
  display: block;
}
<div class="opacity-picker" style="background-image: linear-gradient(45deg, rgb(128, 128, 128) 25%, transparent 25%), linear-gradient(-45deg, rgb(128, 128, 128) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgb(128, 128, 128) 75%), linear-gradient(-45deg, transparent 75%, rgb(128, 128, 128) 75%); background-size: 12px 12px; background-position: 0px 0px, 0px 6px, 6px -6px, -6px 0px; width: 200px; height: 12px;"><svg width="100%" height="100%"><defs><linearGradient id="gradient-opacity" x1="100%" y1="0%" x2="0%" y2="0%"><stop offset="0%" stop-color="rgba(0%,100%,100%,1)" stop-opacity="1"></stop><stop offset="100%" stop-color="rgba(0%,100%,100%,1)" stop-opacity="0"></stop></linearGradient></defs><rect x="0" y="0" width="100%" height="100%" fill="url(#gradient-opacity)"></rect></svg></div>

关于css - svg 在包含 div 的范围内稍微移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52569571/

相关文章:

javascript - 在显示另一个元素时隐藏一个元素?

javascript - 定义数组的长度在 javascript 中返回 0

javascript - Bootstrap 将 nav 和 nav-pills 添加到我的下拉列表中

javascript - SVG D3js 上的发光/闪烁效果

CSS:元素应该在断词之前获得最大宽度

css - SVG 无法在 Firefox 中呈现(最新版本)

javascript - 来自外部 svg 的着色路径

html - SVG 元素属性 xmlns

.htaccess - 如何通过 Apache2 发送压缩(放气)的 SVG?

html - 图像不会在 div 顶部对齐 - 请参见示例