html - CSS - 父 div 扩展到子 SVG 之外

标签 html css svg

我有一个 SVG,我在标题中使用它作为 Logo 。很多 flex 盒子。像...

HTML

<header id="header">

    ... stuff ...

    <div class="logo">
        <svg class="logo-color">
            <title>Title</title>
            <use xlink:href="/images/svgs.svg#logo-color-bt"></use>
        </svg>
    </div> <!-- /.logo -->

    ... stuff ...

</header> <!-- /#header -->

CSS (SASS)

#header {

    display: flex;
    flex-direction: row;

    align-items: center;

    height: 50px;

    ... other css...

    .logo {
        flex: 1;

        display: flex;
        flex-direction: row;

        align-items: center;
        justify-content: center;

        svg.logo-color {
            display: block;
            height: 32px;

            cursor: pointer;
        }
    }
}

一切都显示良好,我可以将 SVG 大小更改为我想要的任何大小。但!当我将鼠标悬停在 Logo 上时,光标仍然显示为远离 SVG 的 cursor(但不是整个 .logo div)。

整个.logo div(绿色矩形是SVG)...

Entire logo div

svg.logo-color 元素...

svg.logo-color element

SVG...

SVG element

第二个屏幕截图显示了光标显示为指针的区域。

我想要的是让 svg.logo-color 适合在其中绘制的 SVG。问题在于 SVG 图像的高度(以及宽度)可能会发生变化,因此我无法为宽度输入硬编码值。

如有不明之处请告知。简而言之:我只想要绿色矩形内的 pointer 光标,否则只是一个普通的箭头。

编辑 #1 -(附加信息)

正如 MullerA 巧妙地指出的那样,我可以将 cursor: pointer; 设置为仅 use 元素。但是,当页面尺寸调整得更小时,不需要的“填充” 会导致一些流程问题。如果可能的话,我想一起摆脱它。

最佳答案

SVG 使用默认宽度“300px”,因为您没有给它任何其他关于它应该是什么的想法。

如果您希望它与 Logo 大小相同,请为您的内联 SVG(即 svg.logo-color )提供适当的 viewBox。属性。

您不包含其他 SVG 文件。所以我们没有 isea 什么元素 #logo-color-bt是。如果是<symbol> , 那么应该只能使用它的 viewBox .

关于html - CSS - 父 div 扩展到子 SVG 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44744152/

相关文章:

c++ - 替换 HTML 源中的特殊字符

javascript - 使用 jQuery 为悬停时的 SVG 颜色和缩放设置动画

javascript - 如何保持响应式移动菜单处于事件状态?

html - 结合 Bootstrap 网格选项来简化长 div 类

javascript - 同一时刻只有一个定时器在工作(html+js)

css - 在页面级别解释的内联 SVG 嵌入式 CSS?

html - 如何将 SVG 效果应用于图像或 div 容器?

CSS 显示文本框

css - 浏览器上的水平滚动条在我的网站右侧显示空白,这是什么原因造成的?

jquery - 带有 jQ​​uery 和 CSS 动画的站点在除 Safari 之外的任何地方都可以工作