位置: IT常识 - 正文

flex布局优化(两端对齐,从左至右)(flex布局实战)

编辑:rootadmin
flex布局优化(两端对齐,从左至右) 文章目录前言方式一 nth-child方式二 gap属性方式三 设置margin左右两边为负值总结前言

推荐整理分享flex布局优化(两端对齐,从左至右)(flex布局实战),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:flex布局教程实例篇,flex布局flex:1,flex布局使用场景,flex布局使用场景,flex布局用法,flex布局使用场景,flex布局问题,flex布局问题,内容如对您有帮助,希望把文章链接给更多的朋友!

flex布局是前端常用的布局方式之一,但在使用过程中,我们总是感觉不太方便,因为日常开发中,大多数时候,我们想要的效果是这样的

即左右两端对齐并顶满,小盒子左右间距一致,并且从左至右排布。 今天主要就来讨论,通过css,有几种方式来实现,以及它们的优缺点。

方式一 nth-child<template> <div class="main"><div class="flex-box"><div class="item-box">...</div>...</div> </div></template>.flex-box {display: flex; // 设置成为flex模式 flex-wrap: wrap; // 允许换行}.item-box {width: 22%; // 以4个一行为例,有4个子盒子,3个间距margin-right: 4%; // 3 * 4 + 4 * 22 = 100margin-bottom: 20px; // 行与行之间也要设置边距。}// 如果一行是5个就是 5 + 5n.item-box:nth-child(4 + 4n) {// 当n为0时,即表示第一行最后一个元素,不需要右外边距,否则就超出 100%了。margin-right: 0 !important;}

优点:实现了我们想要的布局方案,代码量也并不复杂,基本没有兼容性的问题。

缺点1:当遇到下面这种情况时,该设置将会失效。

<template> <div class="main"><div class="flex-box"><div class="item-box">...</div><div class="item-box" style="display:none;"></div></div> </div></template>

这是因为nth-child是按照子盒子的个数来设置的,虽然其中一部分子盒子消失了,但它的元素依然存在,个数并没有变。

flex布局优化(两端对齐,从左至右)(flex布局实战)

缺点2: 不够灵活,如果在不同屏幕分辨率下,每行个数不一样(做响应式的时候经常会遇见这种情况),需要在不同分辨率下,多写一套样式代码。

@media screen and (max-width: 991px) { .flex-box {display: flex; // 设置成为flex模式 flex-wrap: wrap; // 允许换行}.item-box {width: 48%; // 以2个一行为例,有2个子盒子,1个间距margin-right: 4%; // 1 * 4 + 2 * 48 = 100margin-bottom: 20px; // 行与行之间也要设置边距。}// 如果一行是2个就是 2 + 2n.item-box:nth-child(2 + 2n) {// 当n为0时,即表示第一行最后一个元素,不需要右外边距,否则就超出 100%了。margin-right: 0 !important;} }方式二 gap属性.flex-box {display: flex; // 设置成为flex模式 flex-wrap: wrap; // 允许换行 gap: 4%; // 设置间距为4%}.item-box {width: 22%; // 以4个一行为例,有4个子盒子,3个间距 margin-bottom: 20px; // 行与行之间也要设置边距。}

优点: 显而易见,这种方式的代码量更少,更方便,并且不存在方式一的缺点1,即display:none;不会造成影响。

缺点1:gap目前还是一个很新的属性,对浏览器的兼容性并不高,尤其是不兼容ie11,如果项目对浏览器没有兼容性要求,可以使用gap,当然也可以换一种布局方式,display:grid;

缺点2:当然这种方式也需要对不同分辨率的设配,额外多写一套代码,但相对来说,也轻松许多。

方式三 设置margin左右两边为负值.flex-box {display: flex; // 设置成为flex模式 flex-wrap: wrap; // 允许换行 margin: 0 -2% 0 -2% // 间距为4%}.item-box {width: 21%; // 以4个一行为例,有4个子盒子,4个间距 4 * 21 + 4 * 4 = 100 margin: 0 2% 20px 2%; // 左右两边各2%,所以间距为4%}

优点:兼容性很好,能够兼容ie11,并且不存在display:none;时的问题。 缺点1:代码略微有些复杂,需要合理安排盒子宽度和间距的宽度,与前面的两种方式不同间距数量和盒子数量一致。需要分别设置左边距和右边距。

缺点2:需要对不同分辨率的设配,额外多写一套代码。

总结

三种方式中,第二种方式最简单,但兼容性有限;第一种方式代码量不少,兼容性适中,而且display:none;的问题严重,最后一种方式,最推荐,虽然有一些计算,并且也要合理分配宽度,但其兼容性最好,基本没啥场景不能适用,正所谓一招鲜,吃遍天。

至于缺点2,面对不同分辨率,每行数量会变化的问题,目前没有特别好的解决方案,都需要额外一套样式代码才能解决。

当然,你可以通过使用scss或者less,弄一个for循环,从一行2个到 10个 进行样式的封装,这样使用的时候,直接使用类名即可,比如 flex-row-6,flex-row-4等。

@for $i from 2 through 10 { .flex-row-#{$i} { display: flex; flex-wrap: wrap; .item { width: calc(96% / #{$i}) !important; margin-right: calc(4% / #{$i - 1}) !important; margin-bottom: 20px; } .item:nth-child(#{$i}n + #{$i}) { margin-right: 0 !important; } }}
本文链接地址:https://www.jiuchutong.com/zhishi/296133.html 转载请保留说明!

上一篇:山东项目系统慢问题分析和解决(山东省项目)

下一篇:Python 高性能 web 框架 - FastApi 全面指南(Python 高性能 pdf)

  • 财务人员如何管理固定资产
  • 税控财务软件装什么系统
  • 偶然所得个人所得税会计分录
  • 销售使用过的固定资产放弃减税
  • 个人抬头的发票可以报销吗
  • 房地产企业年报台账怎么填
  • 普通发票没有明细可以吗
  • 2021小规模纳税人减免增值税
  • 模具费入什么会计科目
  • 外经证预交几个点
  • 有期末留抵税额增值税和附税还用计提和缴纳吗
  • 境外机构可以开通b股账户
  • 资产损失税前扣除及纳税调整明细
  • 伤亡保险是什么意思
  • 工资可以用来抵扣成本吗
  • 小规模纳税人未建账处罚
  • 案例分析关于团员青年的思想困惑疏导和成长问题释疑
  • 购入的商品用于捐赠怎么做分录
  • 研发样机转销售合法吗
  • 公司转让税费如何计算
  • 开具发票的收入如何做账务处理?
  • 股权筹资的概念
  • 小企业会计准则成本核算方法选什么
  • 文件在另一个程序中打开,怎么解决
  • 收到退还的工会经费进什么科目
  • 净资产收益率是什么指标
  • 生产成本怎样结转科目明细
  • thinkphp 路由
  • 开机反应慢是怎么回事
  • linux grep使用
  • 往来账要交税吗
  • php中array怎么用
  • 增值税专用发票有几联?
  • php运用
  • 业务招待费的企业是什么
  • 税务文书送达回证企业要盖章吗
  • 工程项目科学技术方法工具过程之间的关系
  • openapi官网
  • js添加方法
  • 支付版权费用账号是什么
  • 经费支出的定义
  • 实收资本注入怎么操作
  • 企业税金总额包括什么
  • 收入的确认规则
  • 税务新法规
  • 在建工程转入固定资产怎么做
  • 业务招待费计入其他业务成本
  • 安置房是交付的时候交钱吗
  • 购入的设备用于研发怎样记账
  • 信用减值损失和公允价值变动的区别
  • 年度亏损计提所得税吗
  • 长期股权投资的初始投资成本
  • 交易性金融资产属于流动资产
  • 收到货款未开发票是否违法
  • 政府补贴收入的账务处理
  • 诉讼财产保全保函
  • 跨年成本少结转如何调整
  • 佣金付给别人公司合法吗
  • 城市综合配套
  • sql like多个
  • win8.1重置电脑
  • win10 10月更新
  • 苹果电脑win10系统打不开
  • 在mac下如何安装软件
  • 人脉系统
  • retrorun.exe - retrorun有什么用 是什么进程
  • win10系统预览版
  • javascript事件模型介绍
  • easyui 日期格式化
  • 代码整洁之道 高清pdf
  • lessons there是什么意思
  • python构造方法的参数
  • shell脚本符号
  • 简单介绍linux系统有哪些主要特点?
  • 莱鸟人集团
  • 江苏税务局开票在哪看的
  • 请问各位专家金线吊乌龟有什么功效
  • 日照公交305发车时间表
  • 关于新时代新征程
  • 苏州汇川和深圳汇川那个好
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设