看到这个标题的时候,可能有人会问,uni-app 中使用背景图片不是很简单的事情,直接使用 css 就可以了。
没错,如果不考虑多端兼容性的问题,使用起来很简单,如下:
background-image: url(../../static/images/bg.png);
background-size: 100% 100%;
background-position: 50% 50%;
background-repeat: no-repeat;
这样在在 H5 上使用没啥问题,但是在微信小程序中运行会发现报如下错误:
pages/*.wxss 中的本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用<image/>标签
这边说的很明白,提供了3种解决方式,笔者推荐使用 image 标签。因为base64还需要本地转换,比较麻烦;而使用网络图片对不同环境需要不同配置。
下面就简单介绍使用 image 标签的方式。
给需要设置背景图片的组件增加样式:
position: relative;
z-index: 0; // 支付宝小程序下背景不生效时,可以加上这个
再在该组件中插入 image 组件:
<image class="image-bg" src="/static/images/bg.png"/>
在 App.vue 中加入 image-bg 样式:
.image-bg {
position: absolute;
z-index: -1;
left: 0;
right: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
}
OK,大功告成~~~。
版权属于:瞭月
本文链接:https://www.lervor.com/archives/67/
版权声明:本文为瞭月原创文章,转载请附上原文出处链接和本声明。
6 条评论
可是上面写文字的话,不会展示文字呀
<view><image class="image-bg" /><view class="image-bg-content">内容</view></view>
.image-bg-content { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; z-index: 1; }切换页面时背景加载会闪一下 请问如何解决?求教!
这里面增加图片宽度和高度写死
求教 : z-index:0 起什么作用呀,加了就好使了
可以参考百度里面的解释:“因为 z-index 只决定同一父元素中的同级子元素的堆叠顺序。如果直属父元素没有设置 z-index 会向上追溯,如果一直找不到含有 z-index 的父元素的情况下,则可以视为自由的 z-index 元素,它可以与父元素的同级兄弟定位元素或其他自由的定位元素来比较 z-index 的值,决定其堆叠顺序。同级元素的z-index值如果相同,则堆叠顺序由元素在文档中的先后位置决定,后出现的会在上面。”
由于本例中 .image-bg 设置了 z-index: -1,如果父元素没有显式设置 z-index,导致图片堆叠顺序跑到更高层,甚至需要跟body下跟元素对比,因此会在后面,被其他元素遮挡。至于部分浏览器不需要加“z-index: 0;”也可以显示,是因为有些浏览器或者小程序内核,对没有设置 z-index 的默认设置为 0