多年,CSS浮子已经创建网站的布局一挑剔的,但必要时,组分。如果要求多列的设计,你变成了花车。这种方法的问题在于,尽管令人难以置信的创造力,网页设计/开发人员创建复杂的网站布局所示,CSS花车从未真正意味着以这种方式使用。
虽然花车和CSS定位肯定有网页设计的地方很多年来,新的布局技术,包括CSS网格和Flexbox的,现在给网页设计师新的方法来创建自己的网站布局。
另一个新的布局技术,显示大量的潜力是CSS多列。
CSS栏目已经出现几年了,但缺乏老的浏览器(主要是旧版本的Internet Explorer)的支持,更让许多网络专业人员在他们的生产工作中使用这些样式。随着对那些旧版本的IE支持的结束,一些网页设计师正在与包括新的CSS布局选项,CSS列试验,并发现他们有比他们做花车这些新方法这么多的控制。
CSS列的基本知识
顾名思义,CSS多列(也称为CSS3多栏布局),可以拆分内容转换成列的定数。你会使用最基本的CSS属性是:
- 列数
- 列隙
对于列数,指定要列数。列差距将是那些列之间的排水沟或间距。该浏览器将这些值并平分内容,存入您指定的列数。
在实践中CSS多列的一个常见的例子将是文本内容的块拆分成多列,类似于你会在报纸上一篇文章中看到。假设你有以下的HTML标记(注意,比如目的,我只是把一个段落的开始,而在实践中很可能会在这个标记内容的多个段落):
<pre><code><div class="content"> <h1>The heading of your article</h1> <p>Imagine lots of paragraphs of text here…</p> </div></code></pre>
然后,如果您写这些CSS样式:
<pre><code>.content { -moz-column-count: 3; -webkit-column-count: 3; column-count: 3; -moz-column-gap: 30px; -webkit-column-gap: 30px; column-gap: 30px; }</code></pre>
这CSS规则将拆分“内容”师分为3列与它们之间30像素的差距。如果你想,而不是3两列,您只需更改该值,浏览器会计算这些列的宽度新的内容各占一半。注意,我们首先使用供应商前缀的属性,接着非前缀声明。
那么容易,因为这是其使用这种方式是有问题的网站使用。是的,你可以拆分一堆内容为多列,但是这可能不是网络的最佳阅读体验,特别是如果这些列的高度低于屏幕的“折叠”起来。那么读者就必须以阅读完整内容上下滚动。不过,当你看到这里的CSS列的主要是容易的,它可以用来做这么多的不仅仅是分割一些段落的内容 – 它确实能用于布局。
布局使用CSS列
说你有,有一个内容区域的网页内容的3列。这是一个非常典型的网站布局,并实现这些3列,你通常会漂浮是在分裂。使用CSS多列,它是那么容易得多。
下面是一些示例HTML:
<pre><code><div class="content"> <div class="news”> <h2>Latest News</h2> <p>Content would go here…</p> <div> <div class="blog”> <h2>From Our Blog</h2> <p>Content would go here…</p> <div> <div class="events”> <h2>Upcoming Events</h2> <p>Content would go here…</p> <div> </div></code></pre>
使这个多列CSS开始以先前所看到的:
<pre><code>.content { -moz-column-count: 3; -webkit-column-count: 3; column-count: 3; -moz-column-gap: 30px; -webkit-column-gap: 30px; column-gap: 30px; }</code></pre>
现在,这里的挑战是,因为浏览器想要这内容平分,因此,如果这些划分的内容长度是不同的,该浏览器将实际分割单个分割的内容,添加了它的开始到一个列和然后继续到另一个(您可以使用此代码运行实验,并添加每个部门内部的内容不同长度查看)!这不是你想要的。你想每个部门创建一个独特的柱,无论多么大或小的个人分工的内容可能是,你永远不希望它分割。您可以通过添加CSS的这一个附加行实现这一点:
<pre><code> .content div { display: inline-block; }</code></pre>
这将迫使那些“内容”内部分歧仍然即使浏览器分成多列这完好无损。更妙的是,因为我们没有给任何东西在这里一个固定的宽度,这些列会自动调整为浏览器调整大小,使他们的理想应用网站的响应。有了这一“内联块”的风格,每个3师的将是内容的不同列。
使用列宽度
目前除了“列数”,您可以使用另一个属性,并根据您的布局的需要,它实际上可能是为您的网站是更好的选择。这就是“列宽”。使用相同的HTML标记如前所示,我们可以改为与我们的CSS做到这一点:
<pre><code>.content { -moz-column-width: 500px; -webkit-column-width: 500px; column-width: 500px; -moz-column-gap: 30px; -webkit-column-gap: 30px; column-gap: 30px; } .content div { display: inline-block; }</code></pre>
这个工作的方式是,浏览器使用这种“列宽”,该列的最大值。因此,如果浏览器寡妇小于500像素宽,这3个师将出现在一列,另一个上面之一。这是用于移动/小屏幕布局的典型布局。因为浏览器的宽度增大到足够大,以适应2列与指定的列的间隙沿时,浏览器将自动从一个单一的柱布局去两列。不断增加的屏幕宽度和最终你会得到一个3栏的设计,我们每一个在自己的列中显示3格。再次,这是一个伟大的方式获得一些敏感,多设备友好的布局,而你甚至都不需要使用媒体查询来改变布局样式!
其他列属性
除了这里所涉及的属性,也有对“列规则”,包括颜色,风格和宽度值,让你创建你列之间的规则属性。如果你想有一些行分离你的专栏,这些将被用来代替边界。
时间来试验
目前,CSS多列布局具有很好的支持。随着前缀,网络用户超过94%的人能够看到这些样式,而且不支持组真的只是更老版本的Internet Explorer,你可能不会再支持反正。有了这个级别的支持已经到位,没有理由不开始与CSS列试验和部署在生产准备网站的这些样式。您可以使用本文中介绍的HTML和CSS开始您的实验和玩不同的值,看看会有什么工作最适合你的站点的布局需要。