【发布时间】:2020-05-31 03:11:59
【问题描述】:
我想知道如何缩放 SVG 以在每个屏幕尺寸上看起来都不错。这就是我所拥有的
- 作为背景的线性渐变
- 我需要在其顶部应用 2 个蒙版,顶部的顶部和底部的底部都有空白
我设法以 320x770 像素的尺寸重现了我想要的设计,但我正在努力寻找如何使它适合不同的屏幕尺寸或方向。
我创建了一个代码沙箱来展示我的问题(将其打开到 320x770 的新窗口以查看所需的结果)。 https://codesandbox.io/s/blissful-frost-ste6y?file=/pages/index.vue
main section {
height: 100vh;
width: 100vw;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.wave-wrapper {
background: linear-gradient(#0e548c, #197d89, #0e548c);
position: relative;
overflow: hidden;
}
.above-waves {
position: relative;
z-index: 2;
}
.white {
margin-top: 160px;
color: #fff;
}
.mask-1,
.mask-2 {
position: absolute;
z-index: 1;
width: 100%;
}
.mask-1__image {
width: 100%;
transform: translateY(-53%);
}
.mask-2__image {
width: 100%;
transform: translateY(-55%);
}
<main>
<section>Section A</section>
<div class="wave-wrapper">
<div class="mask-1">
<img class="mask-1__image" src="https://ste6y.sse.codesandbox.io/_nuxt/assets/waves-mask-1.svg" alt="Waves mask 1">
</div>
<div class="above-waves">
<section>Section B</section>
<section>Section C</section>
</div>
<div class="mask-2">
<img class="mask-2__image" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMTI5OS43NTciIHZpZXdCb3g9IjAgMCAzMjAgMTI5OS43NTciPgogIDxnIGlkPSJHcm91cGVfMTAiIGRhdGEtbmFtZT0iR3JvdXBlIDEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjQ3NSAtMTcxOSkiPgogICAgPHBhdGggaWQ9IlRyYWPDg8KpXzMxIiBkYXRhLW5hbWU9IlRyYWPDg8KpIDMxIiBkPSJNLTExNDUsMjE1NC43NTdWOTc5LjA2czMuOTkxLDI1LjU3MiwyNi4zNjksNTMuOTE5LDMzLjgxMiw0MS4zNTUsNjMuMTQyLDU5LjQ2OGMxNy4yMTIsMTAuNjI5LDMyLjk4NywxNy45MzUsNDcuNTc1LDI1LjMzMiw0OS42MiwyNS4xNjEsODYuOTQyLDMzLjc2LDg2Ljk0MiwzMy43NnM1Mi40NTQsNy40NDQsOTUuNSw3Mi4xNzV2OTMxLjA0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExNDUgODY0KSIgZmlsbD0iI2ZmZiIvPgogICAgPHBhdGggaWQ9IlRyYWPDg8KpXzMyIiBkYXRhLW5hbWU9IlRyYWPDg8KpIDMyIiBkPSJNLTExNDUsODU1cy05LjY4NCw5OC41ODcsNTguNDQ3LDE3My44MzhjMzkuNTE2LDQzLjY0NSwxMTguMTYsODcuMDE5LDE2MC40NDYsMTA1LjE3MiwzMC40LDEzLjA0OSwzNC44OTEsMTEuMjM1LDYyLjIsMzEuNzQ4LDI3LjMzMSwyMy45MTEsMzguNDMsNTguNDQ3LDM4LjQzLDU4LjQ0N3MtMjguNjEtMzkuNDgxLTY0LjEtNTguNDQ3Yy0xMy45ODMtNy40NzMtNDQuNTE5LTE2LjkxNC02OS4yNzctMjYuMzc2LTM3LjM3Ny0xNC4yODUtNzYuMjMyLTMwLjYtMTEwLjY0My01NS43ODEtNTYuNzg0LTQxLjU1NS03NS41MDYtOTkuNTMxLTc1LjUwNi05OS41MzFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTQ1IDg2NCkiIGZpbGw9IiM5M2I1YzUiLz4KICA8L2c+Cjwvc3ZnPgo=" alt="Waves mask 2">
</div>
</div>
<div>
<section>Section D</section>
</div>
</main>
这是我迄今为止尝试过的:
- 相对于父级缩放 SVG 在某些时候它变得太大了
- 保持原始大小,但我最终会在两侧显示渐变
【问题讨论】: