grid布局实现移动端H5响应式排列正方形区域
- grid布局:CSS Grid 网格布局教程
- 在 CSS 中,padding-top 的百分比值是相对于元素自身的宽度,而不是高度。这是 CSS 规范中的一个特性,所有的 padding 和 margin 的百分比值都是相对于元素的宽度。
例子
index.tsx
import styles from "./index.module.less";const GridTest = () => {const list = [{key: "1",src: "https://img0.baidu.com/it/u=2627467846,539460817&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=714",},{key: "2",src: "https://img0.baidu.com/it/u=1920485745,1250113689&fm=253&fmt=auto&app=138&f=JPEG?w=873&h=800",},{key: "3",src: "https://img0.baidu.com/it/u=81847473,3448580678&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=707",},{key: "4",src: "https://img0.baidu.com/it/u=3226719732,1801549043&fm=253&fmt=auto&app=138&f=JPEG?w=888&h=500",},{key: "5",src: "https://img0.baidu.com/it/u=2627467846,539460817&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=714",},{key: "6",src: "https://img0.baidu.com/it/u=3226719732,1801549043&fm=253&fmt=auto&app=138&f=JPEG?w=888&h=500",},{key: "7",src: "https://img0.baidu.com/it/u=2627467846,539460817&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=714",},{key: "8",src: "https://img0.baidu.com/it/u=1920485745,1250113689&fm=253&fmt=auto&app=138&f=JPEG?w=873&h=800",},];return (<div className={styles.gridBox}>{list.map((item) => {return (<div key={item.key} className={styles.gridItem}><img src={item.src} alt="" /></div>);})}</div>);
};export default GridTest;
index.module.less
.gridBox {display: grid;grid-template-columns: repeat(3, 1fr);gap: 8px; // 设置间距.gridItem {position: relative;width: 100%;padding-top: 100%; // 通过 padding-top 设置高度为宽度的 100%,实现正方形border-radius: 4px;overflow: hidden;img {position: absolute;top: 0;left: 0;width: 100%;height: 100%;object-fit: cover;}}
}
页面效果
响应式的正方形图片格子例子