这种基于 Flexbox 的布局是否需要额外的标记?

2024-04-19

我现在开始使用 Flexbox,尝试了解如何从使用传统 CSS 网格过渡。

我有两种布局:一种是用 CSS 网格制作的。另一种是使用 Flexbox 制作的。这两个示例的基本布局都非常基本:页眉、导航、内容部分和页脚。

从设计角度来看,它们看起来相同,并且对于 RWD 的行为也完全相同。然而,为了使用 Flexbox 完成相同的行为,我必须在 Nav 和 Content 部分周围创建一个包装器 div。

这是与 CSS 网格布局一起使用的 HTML:

<div class="container-12 clear">
    <header class="grid-12">Header</header>
    <nav class="grid-4">Nav</nav>
    <section class="grid-8">Content</section>
    <footer class="grid-12">Footer</footer>
</div>

这是与 Flexbox 布局一起使用的 HTML:

<div class="main-container">
    <header>Header</header>
    <div class="site-content">
        <nav>Nav</nav>
        <section>Content</section>
    </div>
    <footer>Footer</footer>
</div>

注意<div class="site-content">周围的nav and section元素。

所以我的问题是:是<div class="site-content">周围的nav and section使用 Flexbox 完成布局所需的元素?

我正在尝试使用相同的 HTML 但不同的 CSS 技术来实现相同的布局。

以下是演示:

  1. 使用 CSS 网格的基本布局 http://jsfiddle.net/rzea/kLsfbedd/1/
  2. 使用 Flexbox 的基本布局 http://jsfiddle.net/rzea/vu62mtzb/

感谢您对此的任何指导。


答案很简单:Yes,需要额外的包装。

我在 2011 年的《Smashing》杂志上找到了这篇文章理查德·谢泼德 http://www.smashingmagazine.com/author/richard-shepherd/其中确认有时需要额外的包装容器才能使用 Flexbox 处理子元素。诚然,他的文章使用了 2009 年的旧语法,但这种情况仍然适用:

使用 Flexbox 通常需要一个或两个额外的 div,因为任何 Flexbox 元素的父元素都需要具有display set to box。以前,您可以避免以下情况:

<div style="float: left; width: 250px;"> Content here </div>
<div style="float: right; width: 250px;"> Content here </div>

现在使用 Flexbox,您需要:

<div style="display: box">
  <div style="width: 250px"> Content here </div>
  <div style="width: 250px"> Content here </div>
</div>

你们中的许多人已经转身离开,因为这种纯粹用于展示的额外标记受到了侮辱。这是可以理解的。但事情是这样的:一旦你掌握了 CSS,这个额外的包含 div 就变得很小了。事实上,您通常已经有一个要添加的包含元素(不一定是 div)display: box到,所以根本不需要权衡。

摘自CSS3 灵活框布局解释 http://www.smashingmagazine.com/2011/09/19/css3-flexible-box-layout-explained/

Thanks.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这种基于 Flexbox 的布局是否需要额外的标记? 的相关文章

  • Chrome:网络元素自动移动

    我正在开发一个网络项目 在过去的两周里 我正在进行学期考试 所以我要休息一下 现在 既然他们已经结束了 我又继续我的工作了 但我发现我的一些Web 元素 如按钮 span 在 Chrome 上移动了一些像素 在 IE 和 Mozilla 上
  • Highcharts - 使用选定的饼图切片获得 3D 效果

    在 highcharts 中 我试图使当用户选择或将鼠标悬停在饼图的切片上时 该切片会产生沿 z 轴 朝向用户 上升的效果 我试图通过 css 设置阴影过滤器并使切片的边框更宽 填充颜色相同 来实现此目的 然而 我面临的问题是切片仍然可以位
  • 在Android中将半径边框绘制到imageview或textview的一个角落

    我需要在我的应用程序中为图像视图或文本视图绘制边框 但我只需要在一个角落绘制它 就像图像一样 我做了一个形状 但我在所有 4 个边上都有边框
  • 如何计算单击的甜甜圈元素的中点与负 y 轴之间的角度

    Consider the following codesample donut chart using jquery flot http jsfiddle net c5zsg6y3 26 now as i have added the im
  • 垂直对齐多行文本(菜单元素)?

    我正在尝试垂直对齐 UL 内的文本 问题是某些列表项具有不止一行文本 因此无法使用行高 小提琴 http jsfiddle net jaAYT http jsfiddle net jaAYT 这是我想要达到的结果 http img402 i
  • CSS 未在 Django 项目中加载?

    我是 Django 新手 但负责该项目的前端工作 我一直在研究如何准确加载 css 文件 但我发现这些方法不起作用 这是 html 文件布局 load static
  • 在 Chrome 中隐藏 HTML 时间输入字段上的图标

    在 Chrome 中 当您type time 属性到输入框 您会在输入旁边看到一个小图标时钟图标 有没有办法去掉这个小时钟图标 基于这个问题的答案 将日期输入三角形更改为日历图标 https stackoverflow com questi
  • CSS 标签“object-fit:cover”不会在 Chrome 中裁剪/剪辑视频

    CSS tag object fit cover无法按预期在 Chrome 中剪辑 裁剪视频 这种情况仅适用于视频且仅在 Chrome 中发生 图像在 Chrome 中正常 在所有其他经过测试的浏览器中 图像和视频都工作正常 The beh
  • 如何获得 calc() 函数的无单位结果

    我正在使用此计算来获取网页中的流体行高 line height calc 1 42em 1 55 1 42 100vw 300px 1080 300 数学是工作属性 除非我改变font size特定部分 因为line height应使用无单
  • 严格/过渡 DOCTYPE 之间的浏览器渲染差异

    前段时间我遇到了一个 问题 但我从未深入了解过 希望有人能够照亮它 当我将 DOCTYPE 从严格更改为过渡时 是什么导致某些浏览器 Chrome Opera 和 Safari 以不同方式呈现页面 我知道造成这种情况的一般原因是触发了怪异模
  • 自动调整Google网站嵌入代码的高度(html)

    我正在使用 Google 协作平台嵌入 HTML 代码 将代码粘贴到 从网络嵌入 窗口中 输出的长度是可变的 我希望有一种方法可以动态调整父级的高度iframeGoogle 协作平台用于托管我的 HTML 我知道我可以使用 Google 协
  • 当鼠标悬停在伪元素上时触发CSS动画?

    我试图在伪元素悬停时触发 CSS 动画 我目前有 2 个视频 显示鼠标悬停在浏览器的 50 一侧 我想应用类似的效果来为某些文本添加动画效果 我想要 p 标签在移动时向上移动并淡入 p h1 同时以同样的方式标记 就像这个网站一样 http
  • Twitter bootstrap:居中缩略图

    我有一个缩略图列表 它们有固定的尺寸 我希望连续缩略图的数量随着窗口的宽度而变化 使用 Twitter Bootstrap 这很容易 http jsfiddle net charlesbourasseau 5WvAL http jsfidd
  • 如何在 font Awesome 图标链接下方添加添加文本?

    我正在尝试在我的 Blogger 模板中的 font awesome Icons 下添加一些文本 这是我想要实现的目标的图像 我想要实现的外观图片 https i stack imgur com BVYlh png 但到目前为止我已经做到了
  • 如何适应特定子元素的宽度?

    problem 我正在尝试创建一个技能表 我无法问下一个问题为什么 所以我创建了一个新帐户并询问 当前状态 我想将元素的宽度与 meter 也就是说 如何设定区块的标准 meter 子元素 在上面的 gif 中 img meter 我想要保
  • 如何在CSS中制作一个带有边框的可调整大小的心形

    我想要制作一个心形 用户可以将其大小调整为任意宽度和高度 并且边框为 1 像素 我尝试了用纯 CSS 制作的心形 https stackoverflow com a 17386187 1404447 https stackoverflow
  • 即使在包裹后也具有等宽的弹性项目

    是否可以制作一个像这样的纯 CSS 解决方案 物品有一些min width 它们应该动态增长以填充所有容器宽度 然后换行到新行 列表中的所有项目都应具有相同的宽度 现在看起来是这样的 这就是我希望它看起来像的样子 我已经手动管理这些底部项目
  • 使用@font-face时浏览器下载什么字体

    font face 有点令人困惑 因为所有浏览器都无法决定使用哪种文件格式 下面是我目前正在使用的向网站添加 1 个新字体的方法 您可以看到有 4 个单独的字体文件 我知道每个文件都是因为某些浏览器支持不同的格式 但浏览器是下载所有文件还是
  • 元素和 svg 形状之间的白线

    大家好 我正在使用由 shapedivider 生成的 svg 整形器 您可以看到 有一条白线 我不知道为什么它在那里以及如何删除它 请你帮助我好吗 有形状分隔符的代码 custom shape divider bottom 1640714
  • 我可以根据同一容器中另一个元素的大小强制内联文本换行吗?

    考虑这个 jsbin http jsbin com ElIKOKe 3 edit html css output 我有这个html div class container span The lime outlined container h

随机推荐

  • Lisp / Clojure:编写函数生成宏是个好主意吗?

    这个问题 https stackoverflow com q 7852351 346587要求创建一个 Clojure 宏来生成多个函数 我们找到了一种方法来做到这一点 但仍被 这是一个好主意吗 的问题所困扰 我的第一反应是并不真地 有两个
  • 无法从 sonarqube 服务器更新数据

    当 sonarlint eclipse 要求我刷新我的 sonarqube 数据 更新所有项目绑定 时 我收到以下错误 Unable to update data from server cerbere Unable to move C w
  • pthread_join() 用于异步线程

    我写了一个简单的演示程序 以便我可以理解pthread join 功能 我知道如何使用pthread condition wait 函数允许异步线程 但我试图了解如何使用pthread join 功能 在下面的程序中我通过线程1s ID t
  • 部分 GSON 反序列化

    我正在实施一个自定义JsonDeserializer因为处理所需的业务逻辑 但有些部分可以用标准方式解析 这是否可能 自己处理一些元素并让一些嵌套元素自动处理 这是 JSON id 10 games PZ definition count
  • 将项目 own_to 关系添加到 Active Admin

    我正在为我的 Rails 应用程序使用活动管理 我有一个客户模型 它属于一个部门 也属于一个交货时间 在我的管理文件夹中 我有一个用于主动管理的 customer rb 文件 该文件看起来像这样 ActiveAdmin register C
  • 如何将数据库从本地主机移动到实时服务器

    我使用 Xampp 构建了一个数据库和网站 它允许我使用和测试 php 以及托管在本地主机上的数据库 我现在想将其移至实时服务器 我已使用 123 reg 将网站移至实时服务器 如何移动数据库 我尝试导出 phpmyadmin 数据库并将
  • 从单独的键和值列表创建字典(dict)

    我想将这些结合起来 keys name age food values Monty 42 spam 放入单个字典中 name Monty age 42 food spam 我怎样才能做到这一点 像这样 keys a b c values 1
  • .htaccess:如何通过IP限制对单个文件的访问?

    我已经查看了所有内容 但不断遇到有关目录级 IP 限制的相同信息 通常如下所示 Order Deny Allow Deny from all Allow from 123 123 123 123 是否可以将相同类型的访问限制绑定到页面 文档
  • 高级分析对于所选进程不可用

    我正在尝试使用 3 0 中的 Android Studio 分析器分析 APK 由于我使用的不是 Android 7 0 因此我必须在模块配置中显式打开高级分析 问题是 完成此操作后 Android Studio 仍然显示 高级分析对于所选
  • 如何在管理面板中显示插件激活通知?

    当我激活测试插件时 我试图在管理面板中显示通知 我怎样才能显示它 那个方法是什么 对于插件激活 不能直接使用 admin notices 挂钩 因为存在重定向 解决方法是将您的通知存储在选项表中 并在下次检查 另外 如果您还想涵盖插件升级和
  • Django 表单验证:获取 JSON 格式的错误

    我有这个非常简单的 Django 表单 from django import forms class RegistrationForm forms Form Username forms CharField Password forms C
  • c# listview取消选择项目

    我正在开发一个 Windows 应用程序 它有一个包含一堆项目的 ListView 当用户单击某个项目时 应用程序会显示该项目的详细信息 这 然后用户就有机会编辑这些详细信息 用户应该单击 每次更改后都会单击 保存 按钮 但当然这种情况并不
  • 如何解析没有对象名称的 JSON 数组

    我将如何在 Java 中解析这个 JSON 数组 我很困惑 因为没有对象 谢谢 编辑 我是个白痴 我应该阅读文档 这可能就是它的用途 id 63565 name Buca di Beppo user null phone 408 377 7
  • Python Flask 导入未导入模块的错误

    我有一个在 Google App Engine 中运行的 Flask 应用程序 昨天 我部署了应用程序的新版本 其中仅更改了 HTML 样式 它按预期部署 今天 我意识到我没有更改每个相应 HTML 页面的标题 因此我只更改了每个 HTML
  • android服务的onCreate未调用

    我想以静态方式启动服务 所以从我的活动中我打电话 SpeechActivationService makeStartServiceIntent this getApplicationContext WordActivator 这是从服务类扩
  • 在 VIM 中切换语法高亮的隐藏属性

    我目前有一个解析日志文件的语法文件 与以下内容非常相似 这是针对 syslog 的 syn match syslogText syn match syslogFacility 1 nextgroup syslogText skipwhite
  • 如果缺少一台主机,Datastax Java 驱动程序将无法连接

    如果我没记错的话 可以连接到 Cassandra 集群 至少知道集群中的一个节点 然后可以发现其他节点 假设我有三个节点 1 2 和 3 并且我像这样连接到这些节点 Cluster builder addContactPoints 1 2
  • jquery选择器在ajax加载时找不到元素

    没有任何 jQuery 选择器能够通过 Ajax 请求处理从服务器加载的元素 但它在正常模式下工作得很好 myid change function alert OK
  • 如何继承 ASP.NET MVC 控制器并仅更改视图?

    我有一个从基本控制器继承的控制器 我想知道如何利用基本控制器的所有逻辑 但返回与基本控制器使用的不同的视图 基本控制器填充模型对象并将该模型对象传递到其视图 但我不确定如何在子控制器中访问该模型对象 以便将其传递到子控制器的视图 有几点 如
  • 这种基于 Flexbox 的布局是否需要额外的标记?

    我现在开始使用 Flexbox 尝试了解如何从使用传统 CSS 网格过渡 我有两种布局 一种是用 CSS 网格制作的 另一种是使用 Flexbox 制作的 这两个示例的基本布局都非常基本 页眉 导航 内容部分和页脚 从设计角度来看 它们看起