【发布时间】:2020-08-17 05:02:07
【问题描述】:
网格视图的要求:
仅按以下顺序显示:图像、内容、时间
每个网格项的背景颜色为#cccccc
图像和文本应居中对齐
每个项目的宽/高:200px,边距10px
如果网格项不适合特定行,则应转到下一行
如何更改 css 和 react 组件?
jsx:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
activities: activities,
filteredActivities: activities,
isShow: false,
isGrid: false,
};
}
render() {
return(
<div className="notificationsFrame">
<div className="panel">
<Header name={this.props.name} onClickSearch={this.handleClickChange} onClickAdd={this.addItem} onClickChange={this.changeView}/>
{ isShow ? <SearchBar inputChanged={this.handleSearchChange} /> : null }
{ isGrid ? <ContentGrid activities={this.state.filteredActivities} /> : <ContentList activities={this.state.filteredActivities} onRightClick={this.deleteItem}/> }
</div>
</div>
);
}
}
class ContentGrid extends React.Component {
render() {
return (
<div className="content">
<div className="grid"></div>
{this.props.activities.map(activity =>
<ActivityItemGrid img_url={activity.img_url} time={activity.time}
content={activity.content} comment_count={activity.comment_count}
/>
)}
</div>
);
}
}
class ActivityItemGrid extends React.Component{
render() {
return (
<div className="items">
<div className="avatar">
<img src={this.props.img_url} />
</div>
<p>
{this.props.content}
</p>
<span className="time">
{this.props.time}
</span>
</div>
);
}
}
css:
.demo {
position: relative;
}
.demo .notificationsFrame {
z-index: 2;
width: 100%;
top: 20px;
background: #fff;
border-radius: 3px;
overflow: hidden;
font-family: "Open Sans", Helvetica, sans-serif;
margin-bottom: 40px;
}
.demo .notificationsFrame .content {
position: relative;
overflow: hidden;
}
.demo .notificationsFrame .content .items {
position: relative;
z-index: 2;
width: 200px;
height: 200px;
margin: 10px 10px 10px 10px;
display: block;
background-color: #cccccc;
text-align: center;
}
.demo .notificationsFrame .content .items .time {
display: block;
font-size: 11px;
line-height: 11px;
margin-bottom: 2px;
}
.demo .notificationsFrame .content .items p {
font-size: 15px;
font-weight: bold;
}
.demo .notificationsFrame .content .items p b {
font-weight: 600;
}
【问题讨论】:
-
使用 CSS 网格。 gridbyexample.com/examples
标签: javascript css reactjs jsx