位置: 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)

  • win7怎么升级win10(win7怎么升级win10系统版本2022)

    win7怎么升级win10(win7怎么升级win10系统版本2022)

  • 子网位数是什么(子网位数怎么求)

    子网位数是什么(子网位数怎么求)

  • 华为mate30怎么安装谷歌框架(华为mate30怎么安装第三方软件)

    华为mate30怎么安装谷歌框架(华为mate30怎么安装第三方软件)

  • 小米note是什么接口(小米手机note系列怎么样)

    小米note是什么接口(小米手机note系列怎么样)

  • 给别人打电话响一声就挂了怎么回事(给别人打电话响了几声自动挂断)

    给别人打电话响一声就挂了怎么回事(给别人打电话响了几声自动挂断)

  • 抖音投放最佳时间是几点?(抖音投放dou什么时候合适)

    抖音投放最佳时间是几点?(抖音投放dou什么时候合适)

  • 快手营销号是什么意思(快手营销平台是干什么用的)

    快手营销号是什么意思(快手营销平台是干什么用的)

  • 淘宝消息撤回对方还能看到吗(淘宝消息 撤回)

    淘宝消息撤回对方还能看到吗(淘宝消息 撤回)

  • 华为nova7se截图怎么截(华为nova7 se截图)

    华为nova7se截图怎么截(华为nova7 se截图)

  • 淘宝买家星级标准(淘宝买家星级标准图亲查查)

    淘宝买家星级标准(淘宝买家星级标准图亲查查)

  • 不是好友怎么举报(不是好友怎么举报朋友圈)

    不是好友怎么举报(不是好友怎么举报朋友圈)

  • 怎么设置手机图标样式(怎么设置手机图标随意摆放)

    怎么设置手机图标样式(怎么设置手机图标随意摆放)

  • 删除了的微信好友怎么找回(删除了的微信好友朋友圈点赞还在吗)

    删除了的微信好友怎么找回(删除了的微信好友朋友圈点赞还在吗)

  • 手机序列号是哪个(手机序列号是哪个怎么有2个)

    手机序列号是哪个(手机序列号是哪个怎么有2个)

  • 悬浮窗是干什么的(悬浮窗是干什么用的)

    悬浮窗是干什么的(悬浮窗是干什么用的)

  • honor9x指纹在哪儿(华为honor9x指纹锁)

    honor9x指纹在哪儿(华为honor9x指纹锁)

  • ps怎么加口红(ps怎么口红换颜色)

    ps怎么加口红(ps怎么口红换颜色)

  • vivo怎么弄抖音锁屏(vivo手机怎么弄抖音动态壁纸)

    vivo怎么弄抖音锁屏(vivo手机怎么弄抖音动态壁纸)

  • 共享单车电力如何供应(共享单车怎么用电)

    共享单车电力如何供应(共享单车怎么用电)

  • 淘手游怎么注销实名认证(淘手游怎么注销账号信息)

    淘手游怎么注销实名认证(淘手游怎么注销账号信息)

  • 陌陌现在怎么不能视频了     (陌陌现在怎么不能发红包了)

    陌陌现在怎么不能视频了 (陌陌现在怎么不能发红包了)

  • 荣耀20pro指纹在哪(华为荣耀20pro指纹)

    荣耀20pro指纹在哪(华为荣耀20pro指纹)

  • 华为nova5pro和nova5有什么区别(华为nova5pro和nova7pro哪个好)

    华为nova5pro和nova5有什么区别(华为nova5pro和nova7pro哪个好)

  • vkyaloo是什么机型(vkworld手机是什么品牌)

    vkyaloo是什么机型(vkworld手机是什么品牌)

  • 如何关闭IPv6协议(关闭 ipv6)

    如何关闭IPv6协议(关闭 ipv6)

  • 帝国模板变量更新后页面不更新怎么办(帝国cms模型)

    帝国模板变量更新后页面不更新怎么办(帝国cms模型)

  • 房地产增值税税率是多少
  • 自然人个税申报换电脑数据怎么合并
  • 境内公司代付境外货款
  • 哪些发票能做公章
  • 进项税抵扣销项税怎么做账
  • 房屋租赁费如何计提
  • 销售承兑现金会退回来吗
  • 从公账转账私人转账
  • 开发商土地使用税如何计算
  • 企业发生的装修费可以几年摊销
  • 营改增后房地产开发企业需要交哪些税?
  • 小规模纳税人印花税怎样计算
  • 微信红包税前扣除
  • 同一地级行政区范围内举例
  • 企业优惠条件
  • 个人出租商铺要交城镇土地使用税吗
  • 货物分批付款会计处理
  • 现金分红和红利再投是什么意思
  • 应收及预付款项包括( )
  • 企业残疾人保障金的缴纳标准
  • 预付维修费计入入账价值吗
  • 没有营业执照哪个银行可以办理房产抵押贷款
  • php嵌入js
  • 荣耀x10升级鸿蒙系统好用吗
  • 深入浅出stm8
  • linux怎么创建一个用户组
  • PHP:http_build_query()的用法_url函数
  • .fas文件病毒
  • php array_map 和 foreach性能
  • 圆顶亭效果图
  • yolov3训练自己的数据超详细
  • 社保缴费基数如何调整
  • 电子税务局增值税申报流程
  • 物流辅助服务费计入什么科目
  • 数学建模赋权
  • 微信小程序上面有个音乐怎么关闭
  • fmt println
  • 广告系统源码
  • 什么是跨域以及解决方法
  • 资产减值损失为什么要调增
  • 应付职工薪酬账户期末余额可能是
  • 企业销售旧车如何开票
  • 实缴的钱注销后可以拿回来吗
  • 公司向法人借款会计分录
  • 微擎框架下载
  • python删除列表的方法
  • python有public
  • 劳务派遣业务如何开展
  • 国家研发费用补助
  • 企业所得税成本核定
  • 企业筹办期怎么做账最合理
  • 租赁公司开票没有写数量可以开吗?
  • 工会会员缴纳的医疗互助金列工会什么科目
  • 私车公用费用报销是否违规
  • 申购费从哪里扣
  • 跨年暂估收入,次年开票会计分录
  • 怎样申请开发票
  • mysql5.7.17下载
  • Windows平台下被支持最好的音频格式
  • 组策略 guest
  • linux sshd是什么
  • 使用注册表删除软件时,有些拒绝访问
  • win7旗舰版系统激活码
  • 家庭普通版win7
  • Win10 Mobile 10586.312提前体验
  • WIN10系统打开IE浏览器断网
  • perl 获取数据库查询结果
  • QOpenGLWindow 、QOpenGLWidget 和 QPainter混合渲染方法初探
  • jquerymobile
  • mare的用法
  • python获取数据包
  • 精灵动画片大全90年代
  • c调用nodejs
  • #vr#
  • 彻底解决老鼠进发动机舱
  • js实现ping一个ip地址
  • 安卓接口回调例子
  • 浙江税务打不开,提示新版本
  • 如何在网上查看自己的营业执照
  • 增值税与个人的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设