如何使用bootstrap网格映射图像阵列



我正在使用gatsby.js建立一个投资组合网站。所有照片均发布在WordPress中,由GraphQL获取并渲染到网站。

我正在尝试使用bootstrap网格组织照片并使其响应迅速,但是由于GraphQl返回了从WordPress帖子中获取的所有图像的数组m使用array.map。而且我不知道该如何解决。

从GraphQl我将分辨率设置为宽度= 300px,高度= 300px。

这是我发现组织尺寸的唯一方法,只要我不能使用类行并且所有图像都在一行中考虑。问题是照片大小没有响应速度,因此它将始终为300x300 ...

我希望一种方法可以使其成为一个网格系统,因为它可以正常工作...因此,当我调整窗口大小时,所有照片都会组织起来。


const IndexPage = () => {
    const data = useStaticQuery(graphql`
        query {
            allWordpressPost {
                edges {
                    node {
                        title
                        featured_media {
                            localFile {
                                childImageSharp {
                                    resolutions(width: 300, height: 300) {
                                        src
                                        width
                                        height
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    `);
    const imagesResolutions = data.allWordpressPost.edges.map(
        (edge) => edge.node.featured_media.localFile.childImageSharp.resolutions
    );
    return (
        <Layout>
            <Jumbotron />
            <div className="container">
                <h1 className="my-5 text-center">Portfolio</h1>
                {imagesResolutions.map((imageRes) => (
                    <Img className="col-sm-6 col-lg-4 img-rounded img" resolutions={imageRes} key={imageRes.src} />
                ))}
            </div>
        </Layout>
    );
};

如果将 data.allWordpressPost.edges数组分为块状阵列,则可以循环穿过外部数组以渲染 rows,而每个内部数组则可以渲染 cols

对于3列的自举网格,您要传递3个尺寸值3(在此示例中,这是lodash.chunk的第二个参数(。这样可以确保每个块的长度为3。

这是一个简单的示例,忽略了graphql,childimagesharp和gatsby-image的使用。

import ReactDOM from 'react-dom';
import React, { Component } from 'react';
import arrayChunk from 'lodash.chunk';
import 'bootstrap/dist/css/bootstrap.min.css';
const IndexPage = () => {
  const rawData = [1, 2, 3, 4, 5, 6];
  const chunkedData = arrayChunk(rawData, 3)
  return (
    <div>
      <div className="container">
        {chunkedData.map((row, rowIndex) => {
          return (<div key={rowIndex} className="row">{
            row.map((col, colIndex) => {return (<div key={colIndex} className="col-sm">{col}</div>)})
          }</div>)
        }
        )}
      </div>
    </div>
  );
};
ReactDOM.render(<IndexPage />, document.getElementById('root'));

stackblitz

相关内容

  • 没有找到相关文章

最新更新