解决flex gap兼容性问题

打印 上一主题 下一主题

主题 506|帖子 506|积分 1518

媒介

一个项目写下来,在网页端预览的时候正常,效果到产品经理手上。
计划稿样式

实际产品手机上样式

产品:“你这玩意儿怎么没间距?”
我:“为什么我的正常???呐呐呐你看我手机(来自RedmeK50Utral)”
产品:“哦,你看我的手机(来自荣耀20)”
我:“。。。”
至此我看了看我代码中的一堆gap,再看了看她那还不退休的老安卓,陷入了沉思!
解决办法

我的想法就是通过子元素设置右边和下边的间距,父元素设置划一值的,同方向的负magin值来实现gap同样的效果。
  1. // xxxx.scss
  2. .xxxxActions {
  3.   display: flex;
  4.   margin-right:-12px;
  5.   margin-bottom:-12px;
  6.     .xxxaa {
  7.                   margin-right:12px;
  8.                 margin-bottom:12px;
  9.     }
  10. }
复制代码
你以为这样就结束了吗?漏!并不是这样的。每个文件中都这么写不累吗?作为一个懒鬼,我是非常不屑于这么写,不敷优雅。
sass mixin用法

写过vue2的肯定都知道,mixin是个什么东西,sass同理
某观众:“这这这我熟啊!”
mixin简朴来说,就是把一些共用的东西,给塞进来,mixin的英文翻译过来是混入的意思。就比如你是奶茶店的员工,你在做奶茶,每杯奶茶都必要加糖吧!但其他东西都不一样,这时候就可以把果糖封装起来,然后mixin混入一下,混到奶茶里,这杯奶茶就成了。是不是非常好明白
封装mixin

  1. @mixin gap($size) {
  2.         margin-bottom: calc(0px - $size);
  3.         margin-right: calc(0px - $size);
  4.         & > * {
  5.                 margin-right: $size;
  6.                 margin-bottom: $size;
  7.         }
  8. }
复制代码
使用mixin

这里以vue cli5+webpack5实例,其他同理。uniapp中直接在uni.scss中写mixin,不必要多余设置
第一步:在vue.config.js中设置,webpack4把additionalData换成data就行
  1. module.exports = defineConfig({
  2.   css: {
  3.     loaderOptions: {
  4.       sass: {
  5.         additionalData: `
  6.           @import "@/assets/css/mixin.scss";
  7.         `
  8.       }
  9.     },
  10.   },
  11. })
复制代码
这一步的设置作用是自动在每个scss文件中引入mixin.scss,这样才能访问到mixin函数
第二步:使用
  1. .basicBottomActions {
  2.         display: flex;
  3.         @include gap(10px);
  4. }
复制代码
总结

以上就达到了gap同样的效果,并且保持了精良的兼容性。妈妈再也不怕兼容性不好的手机用不了gap啦!总之不管用的什么打包工具,vite也要webpack也好,原理是一样的。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表