多列布局是一种非常常见的布局方式,适用于内容丰富的页面,如新闻网站、杂志或博客。
CSS多列布局允许我们将内容分成多个垂直列,使页面布局更加灵活和多样化。多列布局的主要属性包括 column-count
、column-width
和 column-gap
,这些属性可以单独或结合使用,以实现所需的列布局效果。
column-count
:指定列的数量。例如,column-count: 3;
表示将内容分为三列。column-width
:指定列的最小宽度。浏览器会根据这个宽度自动调整列数,以适应容器的宽度。column-gap
:指定列与列之间的间距。可以使用像素(px)、百分比(%)等单位。让我们从一个简单的三列布局示例开始。假设我们有一个包含大量文本的容器,我们希望将这些文本分成三列显示。
三列布局示例
在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。
现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。
作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。
示例中我们使用 column-count
属性将容器的内容分为三列,使用 column-gap
属性设置列与列之间的间距为20px。你可以看到,文本会自动分成三列,并在列之间留有间距。
除了基本的列设置,我们还可以通过CSS为多列布局添加更多样式,使布局更具吸引力。
我们可以为每列添加不同的背景色和边框,使布局更加生动有趣。
样式化的三列布局示例
在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。
现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。
作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。
此示例我们为每个段落添加了边框、背景色和圆角边框,并使用 nth-child
选择器为奇数和偶数的段落分别设置不同的背景色。这样可以使每列的内容更加突出。
在实际应用中,我们可能希望控制列内的内容如何折断,以确保布局的整洁性。CSS提供了 break-inside
属性来处理列与内容的折断问题。
break-inside
属性break-inside
属性用于控制元素在多列布局中的折断行为。常见的值包括:
auto
:默认值,允许内容在列中折断。avoid
:尽量避免在列之间折断,适用于较大的块元素,如图片或广告。avoid-page
:尽量避免在页面之间折断,通常用于分页内容。
避免折断示例
在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。
现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。
作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。
break-inside: avoid;
确保段落不会被分割到不同的列中。注意,break-inside
的效果可能会因浏览器支持情况而有所不同。
在响应式设计中,我们可以使用媒体查询来调整多列布局,以适应不同的屏幕尺寸。
响应式三列布局示例
在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。
现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。
作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。
示例中使用媒体查询来根据屏幕宽度调整列数。当屏幕宽度小于800px时,列数变为2列;当屏幕宽度小于500px时,列数变为1列。这样可以确保布局在不同设备上都能良好展示。
在某些复杂布局中,我们可能需要将多列布局与浮动元素结合使用。例如,将一个多列布局的容器与浮动的图片结合使用。
多列布局与浮动元素示例
在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。
现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。
作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。
将图片设置为浮动,图片会在多列布局中和文本内容混排。浮动的图片不会影响列布局的结构,但会在列内呈现。