前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >九宫格布局

九宫格布局

作者头像
Tiffany_c4df
发布2019-09-04 15:25:23
1.7K0
发布2019-09-04 15:25:23
举报
文章被收录于专栏:前端小课堂前端小课堂

需求背景

高考活动页面需要在一个页面容器中,实现一个两行三列宽度自适应缩放,且图片等比例缩放,随着浏览器宽度进行自适应缩放的布局。 中间的图片需要自适应,随着页面宽度的变化,三等分缩放,图片等比例缩放。页面地址

GitHub
GitHub
GitHub
GitHub

解决办法一:flex布局 + padding-bottom

解决思路:

  1. 使用flex弹性布局,使子元素成为容器成员
  2. 父元素使用flex-wrap: wrap;将flex 元素 被打断到多个行中

CSS flex-wrap 指定 flex 元素单行显示还是多行显示 。如果允许换行,这个属性允许你控制行的堆叠方向。取值如下: nowrap flex 的元素被摆放到到一行,这可能导致溢出 flex 容器。 cross-start 会根据 flex-direction 的值 相当于 start 或 before。 wrap flex 元素 被打断到多个行中。cross-start 会根据 flex-direction 的值选择等于start 或before。cross-end 为确定的 cross-start 的另一端。 wrap-reverse 和 wrap 的行为一样,但是 cross-start 和 cross-end 互换。

3、巧妙使用padding-bottom,为子元素设置高度

padding-bottom 属性设置元素的下内边距(底部空白),因为padding-bottom计算的基准值是以父元素的宽度来进行的。 该属性设置元素下内边距的宽度。行内非替换元素上设置的下内边距不会影响行高计算,因此,如果一个元素既有内边距又有背景,从视觉上看可能延伸到其他行,有可能还会与其他内容重叠。不允许指定负内边距值。 值 描述 length 规定以具体单位计的固定的下内边距值,比如像素、厘米等。默认值是 0px。 % 定义基于父元素宽度的百分比下内边距 inherit 规定应该从父元素继承下内边距

html结构如下:

代码语言:javascript
复制
<div class="wrap">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>

css结构如下:

代码语言:javascript
复制
.wrap {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
}
.item {
    width: 33.3%;
    padding-bottom: 33.3%;
    box-sizing: border-box;
}

加上一些可以区分的背景和线框之后如图:

GitHub
GitHub
GitHub
GitHub

随着页面的缩放,始终未三等份。

解决办法二:使用网格grid布局

代码语言:javascript
复制
.father {
    width: 100%;
    padding-bottom: 100%;
    display: grid;
    grid-template-rows: repeat(3, 33.3%);
    grid-template-columns: repeat(3, 33.3%);
}

解决办法三:使用table-cell布局

div结构如下:

代码语言:javascript
复制
<div class="father">
    <div class="table-row">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    
   <div class="table-row">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <div class="table-row">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
</div>

css样式如下:

代码语言:javascript
复制
.father {
    width: 300px;
    height: 300px;
    display: table;
    background: pink;

}
.item {
    display: table-cell;
}
.table-row {
    display: table-row;
    width: 300px;
}

解决办法四:使用table表格布局

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求背景
  • 解决办法一:flex布局 + padding-bottom
  • 解决办法二:使用网格grid布局
  • 解决办法三:使用table-cell布局
  • 解决办法四:使用table表格布局
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档