css 如何垂直拉伸SVG而不在底部创建空白空间?

v7pvogib  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(48)

我尝试修改SVG以增加其高度,同时保持其设计元素锚定在底部。SVG是包含在div中的箭头。以下是当前SVG代码:

<div class="arrow">
        <svg width="99" height="113" viewBox="0 0 99 113" fill="none" xmlns="http://www.w3.org/2000/svg">
            <line x1="0" y1="-2000" x2="0" y2="39.75" stroke="#CECCCC" stroke-width="2"/>
            <line x1="0" y1="69.75" x2="0" y2="84.5" stroke="#CECCCC" stroke-width="2"/>
            <path id="Shape" d="M98.3536 108.854C98.5488 108.658 98.5488 108.342 98.3536 108.146L95.1716 104.964C94.9763 104.769 94.6597 104.769 94.4645 104.964C94.2692 105.16 94.2692 105.476 94.4645 105.672L97.2929 108.5L94.4645 111.328C94.2692 111.524 94.2692 111.84 94.4645 112.036C94.6597 112.231 94.9763 112.231 95.1716 112.036L98.3536 108.854ZM24.5 109H98V108H24.5V109ZM0 84.5C0 98.031 10.969 109 24.5 109V108C11.5213 108 1 97.4787 1 84.5H0Z" fill="#CECCCC"/>
        </svg>
    </div>

字符串
当我简单地增加SVG的height属性时,它会在箭头的底部创建一个不需要的空白区域,如图所示。

<svg width="99" height="113" viewBox="0 0 99 413" fill="none" xmlns="http://www.w3.org/2000/svg">


的数据
我想拉伸SVG,使箭头垂直伸长,但仍然附着在SVG画布的底部,而不在其下方引入任何空白空间。
如何调整SVG代码来实现这一点?

c86crjj0

c86crjj01#

为了拉伸SVG的内容以匹配SVG的尺寸,将值为nonepreserveAspectRatio attribute添加到<svg>元素。注意,这种拉伸会扭曲图形。

figure {
  display: inline-flex;
  flex-direction: column;
  gap: 1rem;
  margin: 0;
  padding: 1rem;
  border: 1px solid black;
}

svg {
  background: rgba(200, 255, 255, 0.9);
  height: 300px;
}

个字符

az31mfrm

az31mfrm2#

我建议你把SVG分成两部分。现在你需要在垂直部分上有一个“休息”,“不”,这将是一个很好的地方。这几乎是一个古老的学校滑动门技术,垂直线是高度,并在顶部被切断。
在代码片段中,你可以看到一个示例(无序列表)和下面我用作CSS背景的两个SVG。我跳过了“是”箭头。
在任何情况下:帮助自己绘制箭头作为一个路径与中风,而不是一个路径与填充!

ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
}

li {
  width: 50px;
  height: 50px;
  padding-left: 100px;
  margin-left: -25px;
  position: relative;
}

li>div {
  display: flex;
  width: 50px;
  height: 50px;
  background-color: silver;
  border-radius: 50%;
  justify-content: center;
  align-items: center;
}

ul>ul {
  flex-direction: column;
}

ul.tree>ul:nth-of-type(1)>li:last-child {
  padding-top: 150px;
}

ul.tree>ul:nth-of-type(2)>li:last-child {
  padding-top: 70px;
}

li.down {
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyBoZWlnaHQ9IjEwMDAiIHZpZXdCb3g9IjAgMCAyIDEwMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiNDRUNDQ0MiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgPGxpbmUgeDE9IjEiIHgyPSIxIiB5Mj0iODkwIi8+Cjwvc3ZnPg==');
  background-repeat: no-repeat;
  background-position:left bottom;
}

li.down:before {
  content: 'No';
  position: absolute;
  left: -10px;
  bottom: 20px;
  width: 110px;
  height: 80px;
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyBoZWlnaHQ9IjUwIiB2aWV3Qm94PSIwIDAgMTAwIDUwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSIjQ0VDQ0NDIiBzdHJva2UtbGluZWNhcD0icm91bmQiPgogIDxwYXRoIGlkPSJTaGFwZSIgZD0ibSAxIDEgdiAyMCBhIDI0IDI0IDAgMCAwIDI0IDI0IGggNzQgbSAtNCAtNCBsIDQgNCBsIC00IDQiIGZpbGw9Im5vbmUiLz4KPC9zdmc+');
  background-repeat: no-repeat;
  background-position: 10px bottom;
}

个字符

相关问题