使用 flexbox(无浮动)或其他任何东西将元素包裹在图像周围

Posted

技术标签:

【中文标题】使用 flexbox(无浮动)或其他任何东西将元素包裹在图像周围【英文标题】:Wrap elements around an image with flexbox (no float), or anything else 【发布时间】:2016-08-21 02:07:27 【问题描述】:

我正在处理一个页面,我希望响应式 img 与我的 section flex 容器的左侧对齐,h1p 文本在图像的右侧,使用 @987654328 @。

section flex 容器中有更多文本和元素,但我希望它们位于 img 下方。

目标:

我使用codepen 作为沙盒来完成任务。但由于某种原因,h1 不是水平的,而是垂直对齐的。随着屏幕尺寸的减小,图像没有保持其纵横比。其余元素不会相互堆叠。

对于小屏幕,我希望元素按以下顺序堆叠在一起:

    img h1 p a a

等等……

【问题讨论】:

【参考方案1】:

我更改了结构以适应行和列流的交替模式。看起来你已经掌握了 flexbox 的基础知识。我担心的是缺少任何填充,并且给 main 的高度是 1000vh。这实际上是 10 个视口堆叠在一起。

main  background-color: Gainsboro; height: 1000vh; overflow-y: scroll; 

CODEPEN

【讨论】:

.frame 由于margin: 0 auto; 而居中,而max-width: 1000px; 作为frame 位于页面中心。但我无法在你的 codepen 上这样做 您可以使用 body class=col 而不是添加额外的 (div class=col) 元素。语义美=_- 不,先生。那是故意的。除非我从头开始构建布局并提前计划,否则我永远不会让 body 成为 flex 容器。在处理身体时,有一些特殊的考虑因素需要考虑。文档 :root () 和正文应该用作页面其余部分的基础和参考。被动影响不是主动控制。 由于.frame没有固定的宽度,给它分配这个样式:left:50%; transform: translateX (-50%); 顺便说一句,我故意把它做成了一个 div,它突出显示div.col 是布局第一层的弹性容器。请注意,我使用了 和 ,尽管我也应该将 下的 div.col 更改为 。
【参考方案2】:

我正在处理一个页面,我希望响应式img 与我的section flex 容器的左侧对齐,并且h1p 使用flexbox 在图像的右侧显示文本。

但由于某种原因,h1 不是水平的,而是垂直对齐的......并且其余元素不会相互堆叠。

您缺少的是嵌套的弹性容器

您可以使用display: flexdisplay: inline-flex 将元素转换为弹性容器。然后这个容器的所有子项都成为弹性项目并接受弹性属性。

但您也可以将弹性项目制作成弹性容器。

这使您可以在 html 结构的深处混合行和列。

我对你的 codepen 做了一些基本的修改,例如:http://codepen.io/anon/pen/xVamQQ?editors=1100

【讨论】:

以上是关于使用 flexbox(无浮动)或其他任何东西将元素包裹在图像周围的主要内容,如果未能解决你的问题,请参考以下文章

为啥 flexbox 不像 div 中的其他元素那样居中我的图像?

关于浮动的一些注意事项

深入了解 Flexbox 伸缩盒模型

使用 CSS Flexbox 的仪表板标题

无框网格定位/浮动样式

CSS学习8(浮动和定位)