方法一:
使用 background-size 和 background-attachment:
可以设置 background-size 为 auto,这样背景图片将按照它的原始尺寸显示,不会随容器大小的变化而缩放。此外,使用 background-attachment: fixed; 可以将背景图片固定在视口中,而不是相对于元素。
body {
margin: 0;
padding: 0;
/* 背景图片 URL */
background: url('/img/background2.png') no-repeat center center;
/* 背景图片固定在视口中(固定背景图片,不随页面滚动) */
background-attachment: fixed;
/* 自定义比例:100% 宽度,200% 高度 */
background-size: 100% 200%;
/* 原始尺寸 */
/* background-size: auto;*/
}
方法二:
固定元素的位置:
元素的宽度和高度没有随着页面大小的变化而动态调整,所以背景图片也不会改变大小
设置元素的最小高度为视口的高度:min-height: 100vh
然后在设置背景图片:
background: url(“https://gw.alipayobjects.com/zos/rmsportal/FfdJeJRQWjEeGTpqgBKj.png”)
0% 0% / 100% 100%;
background-position: 0% 0%; :这个属性将背景图片定位在容器的左上角
background-size: 100% 100%; :这个属性使得背景图片的宽度和高度都设置为容器的100%。当容器的大小发生变化时(例如通过页面的放大或缩小),背景图片的尺寸也会相应地调整,以完全填充容器。
但由于容器大小不变,所以背景图片的尺寸也不变。
<template>
<div id="UserLayout">
<!-- 设置元素的最小高度为视口的高度 -->
<a-layout style="min-height: 100vh">
<a-layout-header class="header">
<a-space>
<img src="../assets/img.png" class="logo" alt="" />
<div>Amelia</div>
</a-space>
</a-layout-header>
<a-layout-content class="content">
<router-view />
</a-layout-content>
<a-layout-footer class="footer">
by Amelia
</a-layout-footer>
</a-layout>
</div>
</template>
<script></script>
<!-- scoped 属性,这会将 CSS 限制在当前组件内,使其不会影响全局样式 -->
<style scoped>
#UserLayout {
text-align: center;
background: url("/img/background2.png")
0% 0% / 100% 100%;
}
#UserLayout .logo {
width: 64px;
height: 64px;
}
#UserLayout .header {
/* 导航阴影 */
/* box-shadow: 3px 3px 6px #c2c1c1; */
margin-top: 16px;
}
/* 渐变背景色 */
#UserLayout .content {
/* background: linear-gradient(to right, #bbb, #fff); */
margin-top: 8px;
padding: 20px;
}
#UserLayout .footer {
padding: 16px;
/* 绝对定位到底部absolute */
/* 粘性定位,能够在用户滚动页面时,让元素在特定的滚动位置“粘住”,直到另一个边界达到 */
position: sticky;
bottom: 0;
/* 居中 */
left: 0;
right: 0;
text-align: center;
}
</style>