1 回答
TA贡献1872条经验 获得超3个赞
尝试这样:https: //codesandbox.io/s/serene-pine-ckph1
在React中,修改组件的方式是根据它的props/state。单击图片容器时更新状态,然后使用它来添加类。
图片.js
import React, { Component } from "react";
import "../css/utilities.css";
import "../css/main.css";
class Pictures extends Component {
constructor(props) {
super(props);
this.state = {
fadeOut: false
};
this.fadeOut = this.fadeOut.bind(this);
}
fadeOut() {
this.setState({ fadeOut: true }, function () {
setTimeout(function () {
document.getElementById("length").innerText--;
}, 200);
});
}
render() {
console.log(this.props.picture);
const { title, thumbnailUrl } = this.props.picture;
return (
<div
className={
"picture card container" + (this.state.fadeOut ? " fadeOut" : "")
}
onClick={(event) => this.fadeOut(event)}
>
<img src={thumbnailUrl} alt="" />
<h1 className="title">{title}</h1>
</div>
);
}
}
export default Pictures;
然后该类使用 CSS 平滑地应用淡出效果:
main.css
.picture {
opacity: 1;
transition: opacity 0.2s linear;
}
.picture.fadeOut {
opacity: 0;
}
其他建议:
上面的代码代替 jsonPlaceholder.js 运行,以更好地遵循框架约定并仅使用 CSS 进行样式设置
在 HTML 中,每个id
id="picture"
属性必须是唯一的,因此如果有超过 1 个图片元素,则无法设置每个图像都应该有一个alt属性
添加回答
举报