gpt4 book ai didi

javascript - CSS 不透明度过渡不适用于 Safari

转载 作者:行者123 更新时间:2023-12-05 08:06:37 25 4
gpt4 key购买 nike

我正在尝试实现某种惰性背景图像加载。我希望图像在加载后立即淡入。因此,我在加载时更改了 holding div 的不透明度。 它适用于 Chrome 或 Firefox,但不知何故不适用于 Safari。使用 Safari 时,图像只显示而没有任何过渡。为何如此?

import React, {Component} from 'react';

import './ImageHolder.css'

class LazyImage extends Component {

state = {
src: null,
};

componentDidUpdate(prevProps, prevState, snapshot) {

if (prevProps.image !== this.props.image) {
this.setState({src: null});
this.loadImage();
}
}

componentDidMount() {
this.loadImage();
}

loadImage = () => {
const src = this.props.image;

const imageLoader = new Image();
imageLoader.src = src;

imageLoader.onload = () => {
this.setState({src: src})
};
};

classList = (classes) => {
return Object
.entries(classes)
.filter(entry => entry[1])
.map(entry => entry[0])
.join(' ');
};

render() {
const style = {
backgroundImage: 'url(' + this.state.src + ')',
};

return(
<div className="h-image-wrapper" style={{backgroundColor: this.props.bgColor}}>
<div className={this.classList({
'h-image-holder': true,
'h-image-loaded': this.state.src,
})} style={style} />
</div>
);
}
}

export default LazyImage;
.h-image-holder {
background-repeat: no-repeat;
background-position: center;
background-size: cover;
will-change: opacity, transform;
pointer-events: none;
opacity: 0;
width: 100%;
height: 100%;
transition: opacity .6s ease;
-webkit-transition: opacity .6s ease;
}

.h-image-wrapper {
position: relative;
width: 100%;
height: 100%;
will-change: transform;
pointer-events: none;
}

.h-image-loaded {
opacity: 1;
}

最佳答案

也许这会有所帮助。关于Safari CSS Visual Effects Guide据说你必须使用这个:

-webkit-transition-property: opacity;

您还可以更改它的持续时间:

-webkit-transition-duration: 2s;"

关于javascript - CSS 不透明度过渡不适用于 Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com