gpt4 book ai didi

html - SVG 图像 - 固定高度 - 保持比例 - 切片

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:26 26 4
gpt4 key购买 nike

我有一个需要固定高度的 SVG,因此当宽度为 2000+ 像素时它不会太大(宽屏...)剪贴蒙版应该始终可见,背景图像应该被切片而不是被拉伸(stretch),我尝试了几种方法但似乎没有任何效果。

这是我现在拥有的: https://codepen.io/bucky208/pen/OEqbPp

div {
width: 100%;
}
<div>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1381.5" preserveAspectRatio="none" style="display: block; position: absolute; width: 100%;height: 400px;">
<g id="clipgroup">
<defs>
<polygon id="mask" points="0,572.1 0,1381.3 1024,1040.5 1024,337.6 0,0"/>
</defs>
<clipPath id="mask_1_">
<use xlink:href="#mask" style="overflow:visible;"/>
</clipPath>
<g style="clip-path:url(#mask_1_);">
<image style="overflow:visible;" width="331" height="444" id="theimage" xlink:href="https://image.ibb.co/ipbNkJ/56_E0406_E5_C8_EF897.jpg" transform="matrix(3.1119 0 0 3.1111 -3.0528 -2.604167e-04)"></image>
</g>
</g>
</svg>
</div>

我需要另一个包装器来包裹所有东西吗?如何恢复图片比例?

向所有试图提供帮助的人致以诚挚的问候和衷心的感谢。

最佳答案

为了使图像填充以填充其容器但保留原始纵横比,结合 objectBoundingBox 大小和 preserveAspectRatio 的过滤器是你的 friend 。以下代码执行我认为您想要的操作:

svg {
background: red;
}

#svgcont {
position: absolute;
width: 100%;
}
<div id="svgcont">
<svg x="0" y="0" width="100%" height="800px">

<defs>
<filter id="image-fill-nostretch" primitiveUnits="objectBoundingBox">
<feImage x="0" y="0" width="1" height="1" id="theimage" xlink:href="https://image.ibb.co/ipbNkJ/56_E0406_E5_C8_EF897.jpg" preserveAspectRatio="xMidYMid slice"/>
<feComposite operator="in" x1="SourceGraphic"/>
</filter>

<clipPath id="mask_1_" clipPathUnits="objectBoundingBox">
<polygon id="mask" points="0,0.5 0,1 1,0.75 1,0.25 0,0"/>
</clipPath>
</defs>

<g clip-path="url(#mask_1_)">
<rect width="100%"height="100%" x="0%" y="0%" filter="url(#image-fill-nostretch)"/>
</g>
</svg>
</div>

关于html - SVG 图像 - 固定高度 - 保持比例 - 切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51140016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com