我需要围绕其中心zoom SVG(引用为<use>),这也会影响父对象的大小.(父级必须绝对定位) 设置如下所示:

<div class="parent">
   <svg class="visual" viewBox="0 0 30 30" width="30">
      <use href="#ref" />
   </svg>
</div>

try 了以下附言:

  1. SVG元素上的按宽度/高度zoom 属性-从0,0而不是中心(width)开始zoom
  2. 在SVG上按"Scale"zoom -父对象不随子对象zoom (scale)

我也试着将原点平移到中心,但SVG似乎不是这样工作的(大多数是截断的).

目标是在不影响父样式(如边框)但影响父大小的情况下,在中心zoom SVG引用.

推荐答案

可以将齿轮大小从中心绝对位置更改为top: 50%; left: 50%;,并在X轴和Y轴上平移元素-50%.这里有一个例子,SVG在悬停时改变了它的大小:

.container {
  position: relative;
  width: 200px;
  height: 200px;
  background-color: green;
}

.element {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: orange;
  border: 3px solid red;
}

.visual {
  display: block;
  width: 30px;
  height: 30px;
  transition: width .5s, height .5s;
}

.element:hover .visual {
  width: 100px;
  height: 100px;
}
<svg style="display: none;">
  <defs>
    <symbol id="gear" viewBox="0 0 16 16">
      <!-- https://icons.getbootstrap.com/icons/gear/ -->
      <path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492zM5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0z M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115l.094-.319z" />
    </symbol>
  </defs>
</svg>

<div class="container">
  <div class="element">
    <svg class="visual" viewBox="0 0 30 30" width="30">
      <use href="#gear" />
    </svg>
  </div>
</div>

Html相关问答推荐

Flexbox嵌套div溢出

Select 包含iframe的图形<><>

悬停时跳转的内容

如何在Vim中删除Html标签?

如何实现弯曲的梯形导航栏?

Angular /HTML5不会播放本地文件夹中的音频mpeg

如何更改计时器S输入的Angular 字体大小?

MUI 日期 Select 器要包含的日期

为什么 html 元素的 max-width 和 width 一起工作?

如何检测输入字段是否没有必填且没有占位符?

如何调整边框半径以匹配父边框半径

获取链接到功能的网页表单

如何使用CSS Select 同级元素的::before伪元素?

SVG 填充 colored颜色 不使用轮廓填充空白区域

如何避免链接在悬停 timeshift 动,同时增加导航栏中的字体大小?

为什么使用 Css 只能看到 1 列而不是 3 列?

嵌套固定定位的 Div 滚动条渗透到前景中的 Div

禁用的 Select 标签没有在 chrome 上的 css 中指定的 colored颜色

网站页脚中的 Quarto 安装版本

如何将图像高度设置为等于文本高度?