svg背景适应元素大小
svg背景适应元素大小
background-image: url("./test.svg");
background-size: 100% 100%;
如果你的css代码是以上这样的,它可能不会达到理想的效果
为了解决这个问题
方法一:修改svg文件,在svg标签中加属性preserveAspectRatio=“none”
方法二:将background-image: url(“./test.svg”);改为background-image: url(“./test.svg#svgView(preserveAspectRatio(none))”);
以vue为例
<template>
<div style="padding: 20px">
<div class="box" :style="{width: `${width}px`, height: `${height}px`}">
这是一个具有svg背景的box,并且svg背景的尺寸会随着box尺寸的改变而改变
</div>
<!--<div style="margin-top: 20px;">
width: <el-input-number v-model="width"></el-input-number>
</div>
<div style="margin-top: 20px;">
height: <el-input-number v-model="height"></el-input-number>
</div>-->
</div>
</template>
<script>
export default {
name: 'test',
data() {
return {
width: 280,
height: 120
}
}
}
</script>
<style scoped lang="scss">
.box {
padding: 20px;
background-image: url("./test.svg#svgView(preserveAspectRatio(none))");
background-size: 100% 100%;
}
</style>
test.svg文件内容为:
<svg
class="icon"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
width="320"
height="160"
viewBox="-1 -1 322 162"
fill="none"
stroke="blue"
stroke-width="1"
preserveAspectRatio="none"
>
<path d="
M 20 0
L 180 0
L 200 20
L 300 20
L 320 40
L 320 140
L 300 160
L 20 160
L 0 140
L 0 20
Z
"></path>
<polyline points="0,0 14,0, 0,14, 0,0"></polyline>
<line x1="186" y1="0" x2="206" y2="20"></line>
<line x1="314" y1="140" x2="294" y2="160"></line>
</svg>
原文地址:https://blog.csdn.net/m0_47659279/article/details/136473297
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!