浅谈css grid比Bootstrap更适合创建布局的原因

为什么css gridbootstrap更适合布局?本篇文章给大家介绍一下原因。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

1.png

CSS Grid是一种全新的创建布局方式,这是有史以来第一次合适的布局系统,并且他是浏览器原生的,他给我们带来了很多好处。

当你和当今最流行的Bootstrap框架相比,grid的好处变的尤为清晰,您不仅可以创建在以前在不引入JavaScript的情况下无法实现的布局,而且您的代码将更易于维护和理解。

【相关推荐:《css视频教程》《bootstrap教程》】

立即学习“前端免费学习笔记(深入)”;

本文中我会解释一下为什么。

标签会更加简洁

相比Bootstrap,使用grid会使你的HTML更加干净,虽然这不是最重要的好处,但它可能会是你第一个注意到的。

为了举例说明,我创建了一个布局,以便我们可以比较两个版本所需要的代码。

2.png

注意:我在给出的例子中稍微设计了一下,但是他和我们比较Bootstrap没有任何关系,所以我只保留布局部分的CSS

Bootstrap

先看一下Bootstrap需要创建的标签。

3.png

这里有两件事需要注意一下:

每个row都需要一个

标签

  • 使用了class name来指定布局(col-xs-2)

    随着这种布局的复杂性增长,HTML也是如此。

    如果这是个响应式网站,它会看起来更复杂:

    4.png

    现在我们来看一下用Grid布局:

    5.png

    我可以在这里使用语义化元素,但我还是使用div来和Bootstrap对比。

    显然,grid用来布局看起来更简单,丑陋的类名和每行所需的额外的div标签一去不复返了,简简单单一个container和里面的item。

    Bootstrap不同的是,随着布局复杂度的增加,Grid布局标签的复杂度将不会增加太多。

    Bootstrap示例不需要添加任何CSS,引用一下就可以了。CSS Grid肯定需要添加。具体来说,是这样的:

    6.png

    这可能是一些人赞成Bootstrap的一个论点:你不用关心CSS,只需要在HTML中定义布局。但是,正如你将会明白的那样,当涉及到灵活性的时候,标签和布局之间的耦合会变成一个很大的问题。

    更灵活

    假设您想要根据屏幕大小更改布局。 例如,将菜单拉到最上面一行,在移动设备上查看。

    换句话说,布局从这样:

    7.png

    换成这样:

    8.png

    CSS Grid

    CSS Grid的话会非常简单,我们只需要添加一个media query,布局就像变魔术一样变成了你想要的。

    9.png

    你可以这样重新排列布局,不用担心HTML标签编写的顺序,这对开发人员和设计师都是很大的一个好处!

    BootStrap

    如果想在Bootstrap中做同样的事情,就必须得修改HTML了,需要调整标签的顺序。

    10.png

    这个需求仅仅使用media query是远远不够的,你还得使用JavaScript。

    这个例子是我体会到的grid最大的好处

    不再限死12列

    这个不是一个很大的问题,但是这个问题也困扰过我多次,因为Bootstrap的grid系统分为了12列,如果你想要一个5列的布局就会纠结,或是7列、9列、任何不会合为12列的。

    CSS Grid就没有任何限制,你可以让grid正好有你想要的数量。这是一个7列的grid:

    11.png

    通过设置grid-template-columns : repeat(7, 1fr)实现,就像这样:

    12.png

    浏览器支持

    当然也必须讨论一下浏览器支持,在撰写本文的时候,全球75%的网站流量支持CSS Grid

    13.png

    CSS Grid是一个布局模块,它允许我们改变文档的布局,而不会干扰标签顺序。换句话说,CSS网格是一个纯粹的可视化工具,使用得当,对文档内容的表达应该没有影响。所以:在旧的浏览器中缺乏对CSS Grid的支持不影响访问者的体验,只是让体验不同。

    原文地址:https://hackernoon.com/how-css-grid-beats-bootstrap-85d5881cf163

    更多编程相关知识,请访问:编程视频!!

  • 以上就是浅谈css grid比Bootstrap更适合创建布局的原因的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1620047.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    css怎么设置字体颜色渐变
    上一篇 2025年12月24日 06:57:51
    css怎么设置滚动条的高度
    下一篇 2025年12月24日 06:57:57

    相关推荐

    • SpringBoot 配置 ELK 环境

      SpringBoot 配置 ELK 环境SpringBoot 配置 ELK 环境SpringBoot 配置 ELK 环境SpringBoot 配置 ELK 环境

      为什么要使用elk?简单来说,elk栈(elasticsearch、logstash、kibana)是一个强大的日志分析和管理工具组合,可以帮助我们高效地收集、存储、搜索和可视化日志数据。下面我将简单地介绍一下elk的架构,并详细说明如何在mac和linux系统上配置elk环境。windows系统的…

      2026年9月23日 用户投稿
      500
    • 使用 Dompdf 高效生成大量 PDF:优化长时任务与超时处理

      本文探讨了在使用 Dompdf 生成大量或多页 PDF 文件时遇到的超时问题。针对Web环境下的限制,文章提出了两种解决方案:短期内可通过调整PHP执行时间限制来缓解,但更推荐采用PHP命令行接口(CLI)进行后台处理。通过将耗时任务转移到独立的CLI脚本中执行,可以有效避免Web服务器超时,提升P…

      2026年9月23日
      200
    • 解决WordPress插件中$wpdb对象未初始化导致的数据库更新失败问题

      本文旨在解决wordpress插件开发中,使用`$wpdb`对象进行数据库更新时出现`call to a member function query() on null`错误。该错误通常是由于`$wpdb`对象未正确初始化所致。教程将详细解释错误原因,并提供通过引入`wp-config.php`文件…

      2026年9月23日
      200
    • 使用PHP和Ajax实现搜索结果的A-Z排序

      在PHP搜索结果页面实现A-Z排序功能,可以极大地提升用户体验。结合Ajax技术和PHP后端排序逻辑,我们可以在不刷新页面的情况下实现排序功能。以下将详细介绍实现步骤。 1. 前端:创建排序表单和Ajax请求 首先,需要在 search.php 页面中创建一个表单,用于触发排序操作。这个表单可以包含…

      2026年9月23日
      100
    • 定制Spring Boot Kafka自动配置:构建可复用的配置注解

      本文深入探讨了在Spring Boot应用中,如何通过自定义注解实现Kafka配置的自动化与简化。面对传统@PostConstruct方法注册KafkaTemplate导致Bean无法注入的问题,文章详细介绍了两种更健壮的解决方案:利用META-INF/spring.factories实现真正的自动…

      2026年9月22日
      200
    • Spring Boot自定义Kafka配置与动态Bean注册最佳实践

      本文探讨了在Spring Boot应用中通过自定义注解简化Kafka配置的挑战与解决方案。重点介绍了如何利用META-INF/spring.factories实现早期自动配置,并详细阐述了使用ImportBeanDefinitionRegistrar在应用上下文初始化早期动态注册Kafka生产者工厂…

      2026年9月22日
      100
    • 如何在mysql中搭建Percona XtraDB Cluster

      部署PXC需先配置系统环境并安装Percona源,随后在首个节点通过bootstrap启动集群,配置wsrep参数并创建SST用户,其他节点按相同配置加入集群,通过SHOW STATUS验证集群状态,确保cluster_size、wsrep_ready和cluster_status正常。 在MySQ…

      2026年9月22日
      100
    • Ubuntu安装Python3.6并切换到3.6版本「建议收藏」

      大家好,很高兴再次与你们见面,我是你们的好朋友全栈君。 文章目录 前言==补充==1 了解系统中已安装的Python版本2 安装Python 3.63 从Python 2.7切换到Python 3.64 中间遇到的问题4.1 问题一4.2 问题二总结参考文献 前言本文记录我在Ubuntu 16.04…

      2026年9月21日
      100
    • 构建Spring自定义Kafka配置的注解式解决方案

      本文探讨了在Spring Boot应用中通过自定义注解实现Kafka配置自动化时遇到的挑战,特别是由于Bean注册时机不当导致的依赖注入失败。我们将深入分析问题根源,并提供两种核心解决方案:利用META-INF/spring.factories实现标准化的自动配置发现,以及通过ImportBeanD…

      2026年9月21日
      1200
    • 编译CEGUI「建议收藏」

      大家好,很高兴再次与你们见面,我是你们的老朋友全栈君。 平台: Windows 7 / 64位 / VS2005 CEGUI下载 地址:https://www.php.cn/link/9a2327a2fcc570914ce9c9e61581cbf8 源码选择: CEGUI 0.7.9 库源码下载 这…

      2026年9月21日
      100
    • 大数据量下的批量导入/导出优化

      在大数据环境下优化批量导入/导出的方法包括:1. 使用批处理技术分批导入/导出数据,减少系统资源压力;2. 采用数据流技术如apache kafka进行实时处理,降低内存占用;3. 利用并行处理技术分配任务到多个处理器或节点,提高处理速度;4. 通过性能监控和调优识别并解决瓶颈点,以提升整体效率。 …

      2026年9月21日
      400
    • Yii调试面板(Debug Toolbar)的高级用法

      yii框架的调试面板除了基本功能外,还能提供性能分析、数据库查询分析、邮件发送记录等高级用法。1.性能分析功能可识别代码瓶颈,优化应用速度。2.数据库查询分析工具显示sql查询及执行时间,优化数据库操作。3.邮件发送记录功能帮助排查邮件发送问题。合理使用这些功能能大幅提升应用性能和用户体验。 让我们…

      2026年9月20日
      000
    • 如何在Laravel中管理环境变量

      在laravel中管理环境变量的核心在于利用.env文件和config配置系统。具体来说,1. 使用.env文件存储环境变量,如数据库连接信息、api密钥等;2. 通过laravel的配置文件(如config/database.php)读取.env中的值,并使用config()函数获取配置;3. 在…

      2026年9月20日
      000
    • 如何在Laravel中使用宏指令

      宏指令在laravel中是一种运行时动态扩展类功能的机制。1. 它通过调用类的macro静态方法,传入名称和闭包来实现;2. 常用于给str、request、response、builder等核心类添加便捷方法;3. 与继承和特性不同,宏指令是非侵入性的运行时扩展,适合轻量级工具方法或链式调用场景;…

      2026年9月20日
      000
    • 如何在Laravel中配置路由缓存

      laravel路由缓存通过将路由定义编译为单个php文件来提升性能。1. 它减少了每次请求时解析多个路由文件的开销,适用于生产环境;2. 启用时需先清除旧缓存(php artisan route:clear),再生成新缓存(php artisan route:cache);3. 路由缓存后,修改路由…

      2026年9月13日
      000
    • 如何在Laravel中使用门面模式

      门面模式在laravel中通过静态代理简化了类的访问。其核心实现步骤包括:1. 创建服务提供者并绑定服务到容器;2. 创建继承facade基类并重写getfacadeaccessor方法的门面类;3. 在config/app.php中注册门面别名;4. 通过静态方式调用服务方法。为避免门面导致代码耦…

      2026年9月13日
      100
    • ThinkPHP的分页功能怎么做?ThinkPHP如何实现数据分页?

      ThinkPHP的分页功能怎么做?ThinkPHP如何实现数据分页?ThinkPHP的分页功能怎么做?ThinkPHP如何实现数据分页?ThinkPHP的分页功能怎么做?ThinkPHP如何实现数据分页?ThinkPHP的分页功能怎么做?ThinkPHP如何实现数据分页?

      thinkphp实现分页功能的核心是使用内置的paginate()方法。具体步骤如下:1. 在控制器中通过db门面或模型调用paginate()方法执行分页查询,可结合where、order等链式操作设置查询条件;2. 将分页结果传递到视图层,使用$list->render()渲染分页链接;3…

      2026年9月12日 用户投稿
      100
    • YII框架的主题是什么?YII框架如何切换主题?

      yii框架的主题是一种视图层面的分离策略,通过配置view组件的theme属性实现主题切换,需在config/web.php中设置basepath和baseurl;2. 主题目录结构包含views、layouts、assets或web文件夹,用于组织视图、布局和静态资源,形成独立的ui皮肤;3. 常…

      2026年9月12日
      100
    • YII框架的覆盖率测试是什么?YII框架如何检查测试覆盖率?

      代码覆盖率是衡量测试对代码触达程度的指标,在YII框架中通过PHPUnit结合Xdebug或PCOV生成报告,合理配置phpunit.xml可聚焦业务逻辑覆盖,但追求100%覆盖率不现实且易陷入测试误区,应关注核心逻辑的高质量覆盖而非绝对数值。 代码覆盖率测试,简单说,就是衡量你的自动化测试(主要是…

      2026年9月12日
      100
    • YII框架的多租户是什么?YII框架如何支持SaaS?

      答案:Yii框架通过共享数据库加租户ID隔离、独立数据库或Schema等策略实现多租户,结合自定义BaseActiveRecord、查询作用域、行为和事件系统确保数据隔离,利用子域名或路径路由识别租户,并通过RBAC、模块化设计和缓存优化支持SaaS应用的可扩展性与安全性。 YII框架的多租户,简单…

      2026年9月12日
      100

    发表回复

    登录后才能评论
    关注微信