前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态内容的等高布局实现

动态内容的等高布局实现

作者头像
RobinsonZhang
发布2018-08-28 12:57:48
9240
发布2018-08-28 12:57:48
举报

前言

本文将用不同的方式实现动态内容的等高布局。

场景描述

首先不同内容的固定高度等高布局没有任何难度,本文讲的不是这种。本文讲的是,不同行级或者浮动元素具有不定高度时,将其他元素的高度填充为最大高度元素的高度这种场景。

代码语言:javascript
复制
<ul class="cont-wrap1">
  <li>12324134242342wrwt</li>
  <li>241</li>
</ul>  

方案 一 display:flex

特点:简单,高效,基本的现代浏览器都支持。

代码语言:javascript
复制
.cont-wrap1 {
  border:1px solid gray;
  padding:10px;
  overflow:hidden;
  display:flex;
  li{
  word-break:break-all;  
  margin-left:20px;
  border:1px solid red;  
  width:50px;}
}

方案 二 table 布局或者伪table

特点:没有兼容问题,但是元素显示不能符合预期(容器百分百的时候,元素设置的宽度无效;容器没有宽度的时候,不符合原来容器需求),而且比较受限于需要占满父容器,不过也是看你实际需求,有可能这正是你需要的。

代码语言:javascript
复制
.cont-wrap2 {
  border:1px solid gray;
  display:table;
  overflow:hidden;
  width:100px;
  li{
  display:table-cell;
  word-break:break-all;  
  border:1px solid red;  
  width:50px;}
}

方案 三 :绝对定位

实现固定的等高

特点:参考同一个父模型,同时实现等高利用top,bottom

代码语言:javascript
复制
.cont-wrap3{
  border:1px solid gray;
  padding:10px;
  height:100px;
  position:relative;
  .main,.left{
    position:absolute;
  word-break:break-all;  
  border:1px solid red;  
    width:50px;
    top:0;
    bottom:0;
  }
  .left{
  left:0;
  }
  .main{
    left:50px;
  }
}

侧边栏根据内容实现变化等高

特点:需要指定好变化的内容是哪部分,根据依赖项等高的原理。

代码语言:javascript
复制
.cont-wrap4 {
   border:1px solid gray;
  position:relative;
  width:100px;
  .main{
    margin-left:50px;
    border:1px solid red;  
    word-break:break-all; 
  }
  .left{
    position:absolute;
  word-break:break-all;  
  border:1px solid red;  
    width:50px;
    top:0;
    bottom:0;
  }

}

方案 4 :其他

利用背景图片

特点:纯效果模拟,利用整体布局的背景图片宽度相同,竖直方向重铺,各个元素的高度并未变化。不做过多的描述。

利用边框

特点:也是视觉效果的边框重合,并没有真实实现元素等高

代码语言:javascript
复制
.cont-wrap5 {
   border:1px solid gray;
  padding-left:50px;
  &:after{
    content:'';
    clear:both;
    display:table;
  }
  .left,.main{
    float:left;
    word-break:break-all;
  }
  .left{
    margin-left:-50px;
    width:50px;
    border-right:1px solid red;
  }
  .main{
    width:50px;
    margin-left:-1px;
    border-left:1px solid red;

  }
}

总结

综上,其实只要display:flex完整的能实现吧水平的浮动或者行内元素实现动态内容完整的等高布局。

参考

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 场景描述
  • 方案 一 display:flex
  • 方案 二 table 布局或者伪table
  • 方案 三 :绝对定位
    • 实现固定的等高
      • 侧边栏根据内容实现变化等高
      • 方案 4 :其他
        • 利用背景图片
          • 利用边框
          • 总结
          • 参考
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档