资讯专栏INFORMATION COLUMN

Flexbox 很棒,但有些情况不适用

wums / 1990人阅读

摘要:其设计初衷并不是完备的网格系统。所以禁止将其作为一个完整的网格系统使用。但猫有四条腿,而人类只有两条。总而言之,还是很棒的真的很有用。

对大部分的人来说(如果你写过CSS),Flexbox 可以说是完美,但它是否适合所有场景呢?

简而言之,我会给出几种可用的场景,需要你重新思考 Flexbox 模型的使用。

顺便说一句,本人是 Flexbox 的忠实粉丝,曾写过一篇 Flexbox 详解 ,可以算得上最全面的文章了。

当然,我们应该了解该如何使用 Flexbox,哪些情况不应该使用,以及用在哪些地方最好。

以下是我选出的最不应该是使用 Flexbox 的3种场景,并附带原因。

1. 把Flexbox当作一个网格系统使用

长久以来,很多人(包括我自己)都在滥用 CSS 盒模型。

从复选框点击 hack 到“纯 CSS 图形”,我们似乎沉浸在各种奇淫巧技中 —— 各种让人觉得高大上或精通的技巧。

我并不反对这样做,但其实我们曲解了 CSS 规范,不是吗?

我们并没有将它们用在应该用的地方 —— 主要原因之一是可以做,之二是不得不做。有时候仅仅是出于兴趣(我觉得我属于这种)。

也就是说,如果你选择在布局中将 Flexbox 模型当作网格系统使用,那么就算曲解了规范。

还能不能开心的玩耍了?

你当然可以用,但就像滥用 CSS 盒模型。

其设计初衷并不是完备的网格系统。尽管你可以任意使用 Flexbox 模型,当然本人也曾瞎用,但其初衷不改。

网格布局 —— 在 2017 年火了,因为所有主流浏览器都开始支持。

可以在布局中将 Flexbox 作为唯一的网格系统使用吗?

额!当然不可以。

为什么?

如果仅仅是为了一个怎么复杂的布局,或简单的为了移动端而重构布局,确实有这种可能。

其实你可以摆脱这种想法的,虽然曾经我试过只用 Flexbox 就可以完成复杂的布局 —— 仅仅是因为可以做,并探索 Flexbox 的可能性。

有什么注意事项吗?

有一点你一定要记住。

如果你不得不兼容老版本的 IE 浏览器(它们还能支持些什么好功能么?),那会有一个大问题,因为用户什么都看不到 —— 任何东西都不会显示。

但是,如果你在这些浏览器上使用 Flexbox 模型作为渐进增强,你的备用方案可能是表格布局,那么老版本 IE 用户能正常使用。

Flexbox 也支持一些真正的 网格系统 才有的标准特性 —— 那些特性真的很棒。

尽管它还不太“标准”。此处的标准指的是就像圣杯布局那样的常用。所以禁止将其作为一个完整的网格系统使用。

后面会继续讨论。

2. 完全控制其视觉位置

能力越大责任越大 ...然后滥用! (我加的).

网格布局最棒的特点之一就是无需考虑 html 源码的顺序而可以自由的指定内容的显示位置。

难道 Flexbox 模型没有顺序属性么?

其实是有的。

但猫有四条腿,而人类只有两条。PS:此处的意思是,毕竟还是有区别,不能同等对待不同的事物,即使外观类似.

上面的猫星人很帅,但即使套上了西装,也还不是人类!毫无疑问,只有人才能算人类。

这就跟通过顺序属性实现“排序”的 Flexbox 一样。

仅适用于简单的重排场景,如下:

flexbox重排之前

flexbox重排之后

但是,它仍是基于元素的 html 源码顺序的。

所以,其实还是没有脱离“猫人”的本质。

其对源码顺序的处理与 CSS 网格布局完全不同。网格布局是另一个话题,这里不会详细讨论。

3. 多列布局

我觉得应该不会有很多人会将 Flexbox 模型用来干这个,值得一提的是,除了Flexbox之外,CSS3 还提供其他增强布局方式 —— Flexbox 只是恰巧也能用来完成类似的功能。

如果你想这样做,那么请考虑优先使用 CSS3 已提供的合适的布局方式。

i. 排除特定形状

如果你需要构建复杂的布局,并想要让内容按自定义区域排版或要特定几何形状来包裹内容,请使用正确的方法。虽然你可以将其包裹在 flex-item(弹性项)中,但还是要使用正确的方法处理排除和内容包裹。

ii. 实现多列

多列布局是 Indesign 等传统桌面排版软件的核心功能,当某列调整大小或不能包含所有内容时,列内的文本会自动流入另一列。

如果你需要在你项目中实现这个功能,CSS3 多列布局方式可以直接实现。

所以,啰嗦一句,请使用正确的方式来实现此功能。

可以让多列布局的某列也同时具有 flex-item(弹性项)特性么?我没有玩过 —— 不确定。

总而言之,Flexbox 还是很棒的!真的很有用。

非常有必要深入了解它,了解他们应该在何时何处使用。

对于 Flexbox,其最大的优势是可在整体页面中为独立部分的自由布局。

觉得不错?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/114464.html

相关文章

  • 前端方便面

    摘要:技术前端布局推进剂间距规范化利用变量实现令人震惊的悬浮效果很棒,但有些情况不适用布局说可能是最全的图片版学习网格布局使用的九大误区图解布局布局揭秘和中新增功能探索版本迭代论基础谈展望对比探究绘图中撤销功能的实现方式即将更改的生命周期几道高 技术 CSS 前端布局推进剂 - 间距规范化 利用CSS变量实现令人震惊的悬浮效果 Flexbox 很棒,但有些情况不适用 CSS布局说——可能是最...

    liaoyg8023 评论0 收藏0
  • 前端方便面

    摘要:技术前端布局推进剂间距规范化利用变量实现令人震惊的悬浮效果很棒,但有些情况不适用布局说可能是最全的图片版学习网格布局使用的九大误区图解布局布局揭秘和中新增功能探索版本迭代论基础谈展望对比探究绘图中撤销功能的实现方式即将更改的生命周期几道高 技术 CSS 前端布局推进剂 - 间距规范化 利用CSS变量实现令人震惊的悬浮效果 Flexbox 很棒,但有些情况不适用 CSS布局说——可能是最...

    DevWiki 评论0 收藏0
  • 现代 CSS 进化史

    摘要:第一个主流的预处理器是年发布的,它提供了一个新的更简洁的语法缩进代替大括号,没有分号等等,同时增加了一些缺失的高级特性,像变量工具方法还有计算。 showImg(https://segmentfault.com/img/bV5u5I?w=533&h=300); 简评:CSS 是一门入门比较简单,但真正使用起来又很困难的语言(有些人认为它不应该称为一门语言)。CSS 看起来凌乱复杂,其实...

    EastWoodYang 评论0 收藏0
  • 现代CSS进化史

    摘要:第一个主流的预处理器是年发布的,它提供了一个新的更简洁的语法缩进代替大括号,没有分号等等,同时增加了一些缺失的高级特性,像变量工具方法还有计算。 英文:https://medium.com/actualize-...编译:缪斯 showImg(https://segmentfault.com/img/bV3vCJ?w=1129&h=735); CSS一直被web开发者认为是最简单也是最...

    msup 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<