uni-app利用全局Mixin的方式实现整个项目自适应 DPR 加载图片,要求兼容小程序、H5和App三个平台。另外给定的资源图里有@2x、@3x,有的图片没有@1x图,请给出兼容有效写法
时间: 2024-03-09 20:50:27 浏览: 83
针对给定的需求和资源,可以通过以下步骤实现整个项目的自适应DPR加载图片:
1. 在`App.vue`文件中引入`uni.scss`文件,并定义全局Mixin:
```scss
@import "@/uni.scss";
// 定义全局Mixin
@mixin dpi-image($url, $width, $height) {
background-image: url($url + "@1x.png");
background-size: $width $height;
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url($url + "@2x.png");
}
@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 288dpi) {
background-image: url($url + "@3x.png");
}
}
```
2. 在需要使用自适应DPR加载图片的组件中,引入`uni.scss`文件,并使用全局Mixin:
```scss
@import "@/uni.scss";
.my-image {
// 使用全局Mixin
@include dpi-image("../assets/my-image", 100px, 100px);
}
```
3. 为了兼容小程序平台,需要在项目根目录下的`pages.json`文件中,将需要自适应DPR加载图片的页面的`style`属性设置为:
```json
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页",
"usingComponents": {},
"globalStyle": {
"my-image": {
"@include dpi-image(../assets/my-image, 100px, 100px)": {}
}
}
}
}
```
这样,在小程序中也能够使用自适应DPR加载图片了。
通过以上步骤,就可以在uni-app项目中实现整个项目的自适应DPR加载图片,同时兼容小程序、H5和App三个平台。如果给定的资源图中没有@1x图,可以使用和@2x图一样的图片,只不过需要在全局Mixin中将@1x.png改为.png即可。
阅读全文