登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
园子
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Web前端入门第 38 问:CSS flex 弹性盒子与 grid 网格布 ...
Web前端入门第 38 问:CSS flex 弹性盒子与 grid 网格布局区别及应用场景
[ 复制链接 ]
届表
前天 21:55
弹性盒子又称为 Flexbox,然而我更喜欢 flex 的叫法。
flex 弹性盒子和 grid 网格布局作为前端开发中两把利器,它们的分界线没那么明显,虽然按照 MDN 的说法 flex 多用于一维布局(行/列),grid 多用于二维布局(行列网格),但实际开发中用多个一维布局也能拼凑出一个完整的二维布局。
grid 主要用来简化 html 结构,在一些二维布局的场景下,使用 flex 时需要更复杂的 html 结构支撑,而使用 grid 则可以尽可能的简化 html 结构。
我的理解 flex 擅长细节上的雕琢,而 grid 更擅长宏观上的调控。
flex 的应用场景
下面细说 flex 的应用场景,及同时使用 grid 会怎样实现。
网页导航
随处可见的网页导航布局,看图:
使用 flex 实现可以是这样的代码结构:
首页
新闻
产品
联系我们
公司简介
关于我们
复制代码
使用 grid 实现的代码结构:
首页
新闻
产品
联系我们
公司简介
关于我们
复制代码
可以看到,在处理一维布局时候,flex 可以说是得心应手,grid 则需要多写一些代码。
flex 的代码长得小清新一样,而 grid 总感觉有点长歪了~
常见的左右布局
再看这种常见的栏目标题布局:
使用 flex 实现:
<h3 >栏目标题</h3>
更多 >
复制代码
使用 grid 实现:
<h3 >栏目标题</h3>
更多 >
复制代码
对比下来,使用 grid 的代码还是多了一行 grid-auto-flow: column;,小清新的 flex 还是要苗条一点~
常见的左左右布局
以百度首页的热搜导航为例:
使用 flex 实现:
以下示例代码巧用了 margin-left: auto; 让元素跑到右侧位置。
我的关注
百度热搜
换一换
复制代码
使用 grid 实现:
我的关注
百度热搜
换一换
复制代码
对比下来,还是 flex 布局更显得小清新一点。
一维布局 flex 与 grid 对比
对比了几种常见的一维列布局,使用 flex 比使用 grid 代码要简洁一点,虽然都能达到想要的效果,当然是代码越少越好了。
gird 应用场景
看完了一维布局的几个应用场景,再看看 grid 的应用场景。
经典的网页分区
页面的整体框架结构无外乎那几种,我们看一种最常见的管理平台的页面分区:
使用 grid 实现:
Header
Aside
Main
Footer
复制代码
使用 flex 实现:
Header
Aside
Main
Footer
复制代码
可以看到虽然 flex 也实现了一样的页面分区效果,但 HTML 的结构确要比 grid 更加复杂,需要嵌套更多的 HTML 结构用来实现复杂的二维布局。
卡片列表
看一种最常见的卡片列表布局:
使用 grid 实现:
1
2
3
4
5
6
7
8
复制代码
使用 flex 实现:
1
2
3
4
5
6
7
8
复制代码
flex 实现的卡片列表必须明确指定一个宽度,这个宽度值需要减去列间距得出;而 grid 实现的这种卡片列表则无需考虑这种计算问题,直接会自动适应。
二维布局 flex 与 grid 对比
在二维布局领域,grid 当之无愧的强大,虽然 flex 也可以实现一毛一样的效果,当不可避免的是代码冗余。
总结
flex 在一维布局中更能发挥优势,grid 在宏观布局或二维布局中优势更加明显。
在不考虑代码冗余的情况下,flex 和 grid 都能在对方领域抢饭碗。
实际开发中,grid 标准浏览器都是在 2017 年之后才实现的,flex 标准则是在 2012 年就开始支持,项目但凡需要兼容老古董浏览器,grid就别想了,赖克宝吃不到小天鹅~~
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
如何优雅的使用RabbitMQ
分布式锁1 Java常用技术方案
浅谈我对DDD领域驱动设计的理解
游戏编程十年总结(下)
【前端性能】高性能滚动 scroll 及页面渲染优化
验证码对抗之路及现有验证机制介绍
从零开始入门 K8s | 手把手带你理解 etcd
中文写程序,何陋之有?
NHibernate之旅(2):第一个NHibernate程序
谈谈如何从本质上理解sql语句, 存储过程,ORM之间的联系和取舍。
公司的中场
.net环境下跨进程、高频率读写数据
Android 系统缺陷不完全点评
第二个iPhone应用程序:“Say Hello”
FFmpeg开发笔记(六十二)Windows给FFmpeg集成H.266编码器vvenc
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
Windows 8 Metro app开发初体验
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
届表
前天 21:55
关注
0
粉丝关注
7
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9998
喝岖
9998
森萌黠
9998
4
姨番单
9998
5
裒噎
9998
6
里豳朝
9998
7
愤血冒
9998
8
澹台忆然
9998
9
少屠
9998
10
蜴间囝
9998
查看更多