我们只需要两层,原二维码为一层,然后将渐变图案叠加在其之上,并且设置 mix-blend-mode: lighten
<view class="g-container">
<image src="../../static/img/icons/qrcode.png" class="qrimg">
</view>
css
.g-container {
margin-top: -54rpx;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 400rpx;
height: 400rpx;
&::before {
position: absolute;
content: "";
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(255, 154, 0, 1);
mix-blend-mode: lighten;
}
.qrimg {
width: 400rpx;
height: 400rpx;
}
}
在h5页面上混合属性mix-blend-mode不生效
原因可能是: 元素没有设置position属性或者z-index属性,导致混合模式无法生效。
我加上 z-index: 5
就解决了
.detail-containergreen {
// margin-top: -54rpx;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 400rpx;
height: 400rpx;
&::before {
position: absolute;
content: "";
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(67, 207, 123.99999999999997, 1) !important;
background-color: rgba(67, 207, 123.99999999999997, 1) !important;
mix-blend-mode: lighten;
z-index: 5,//加上這一段就展示了
}
mix-blend-mode的属性
mix-blend-mode:normal;//正常 | mix-blend-mode:multiply;//正片叠底 |
mix-blend-mode:screen;//滤色 | mix-blend-mode:overlay;//叠加 |
mix-blend-mode:darken;//变暗 | mix-blend-mode:lighten;//变亮 |
mix-blend-mode:color-dodge;//颜色减淡 | mix-blend-mode:color-burn;//颜色加深 |
mix-blend-mode:hard-light;//强光 | mix-blend-mode:soft-light;//柔光 |
mix-blend-mode:difference;//差值 | mix-blend-mode:exclusion;//排除 |
mix-blend-mode:hue;//色相 | mix-blend-mode:saturation;//饱和度 |
mix-blend-mode:color;//颜色 | mix-blend-mode:luminosity;//亮度 |
mix-blend-mode:initial; | mix-blend-mode:inherit; |
mix-blend-mode:unset; | - |