Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在REACT中构造网格视图_Javascript_Css_Reactjs_Jsx - Fatal编程技术网

Javascript 在REACT中构造网格视图

Javascript 在REACT中构造网格视图,javascript,css,reactjs,jsx,Javascript,Css,Reactjs,Jsx,我想做一个网站的网格视图。 以上就是我想做的。然而,我只是构造了这个。 网格视图的要求: 仅显示这些内容,并按以下顺序显示:图像、内容、时间 每个网格项目的背景色为#CCCC 图像和文本应居中对齐 每个项目的宽度/高度:200px,各边留10px余量 如果网格项不适合特定行,则应转到下一行 如何更改css和react组件 jsx: class App extends React.Component { constructor(props) { super(props)

我想做一个网站的网格视图。

以上就是我想做的。然而,我只是构造了这个。

网格视图的要求:

  • 仅显示这些内容,并按以下顺序显示:图像、内容、时间

  • 每个网格项目的背景色为#CCCC

  • 图像和文本应居中对齐

  • 每个项目的宽度/高度: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>
            );
        }
    }
    
    .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网格。将其与
    repeat
    minmax
    功能结合使用,可使响应网格自动将所有内容放入相应的容器宽度中

    .grid{
    显示:网格;
    网格模板列:重复(自动拟合,最小值(200px,1fr));
    栅隙:12px;
    }
    .项目{
    最小高度:200px;
    背景色:#eee;
    }
    
    项目1
    项目2
    项目3
    
    使用CSS网格。