您的 CSS 片段显示列数正在定义。根据您的描述,您不想在多列元素上指定column-count
或。width
我假设您正在询问如何删除column-count
并仍然获得您想要的视觉效果。那是对的吗?假设它是...
当多列元素试图确定它应该如何调整自身大小时,它的高度尚未定义。结果,它的大小好像没有高度限制,并且您得到一列文本。如果您height: 100%
在多列元素上指定并确保在调整大小时定义其容器的高度,您应该获得您正在寻找的视觉效果。
例如,假设您的 .detailFeed 元素是 -ms-grid-row-span: 3 (跨越所有行)。由于第三行使用的是小数单位,因此 Grid 需要预先定义其高度,以便知道第三行应该有多大。如果您希望 Grid 元素始终为窗口高度的 100%,您通常会指定height: 100%
并确保 Grid 的百分比值通过确保其具有非自动高度的祖先(例如设置height: 100%
在所有树上的元素)。另一种选择是使用视口高度单位(即height: 100vh
)
如果多列元素所在的网格行都是非自动和非分数的,则不需要预先定义网格的高度,因为网格单元格的高度仍然会被定义。
这是一些示例标记,显示了我所描述的内容。您可以在 IE 10 或应用程序中运行它。您会注意到,当您调整窗口大小时,列数也会随之调整。
<!doctype html>
<html>
<head>
<style>
html, body, .advisorDetail, section
{
height: 100%;
}
.advisorDetail section[role=main].detailSection {
-ms-grid-column: 4;
display: -ms-grid;
-ms-grid-rows: 24px 20px 1fr;
-ms-grid-columns: auto;
height: 100%;
}
.advisorDetail section[role=main].detailSection .detailFeed {
-ms-grid-row-span: 3;
column-width: 400px;
column-gap: 40px;
height: 100%;
}
</style>
</head>
<body>
<div class="advisorDetail">
<section role="main" class="detailSection">
<div class="detailFeed">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.
Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.
Aenean nec lorem. In porttitor. Donec laoreet nonummy augue.
Suspendisse dui purus, scelerisque at, vulputate vitae, pretium mattis, nunc. Mauris eget neque at sem venenatis eleifend. Ut nonummy.
Fusce aliquet pede non pede. Suspendisse dapibus lorem pellentesque magna. Integer nulla.
Donec blandit feugiat ligula. Donec hendrerit, felis et imperdiet euismod, purus ipsum pretium metus, in lacinia nulla nisl eget sapien. Donec ut est in lectus consequat consequat.
Etiam eget dui. Aliquam erat volutpat. Sed at lorem in nunc porta tristique.
Proin nec augue. Quisque aliquam tempor magna. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Nunc ac magna. Maecenas odio dolor, vulputate vel, auctor ac, accumsan id, felis. Pellentesque cursus sagittis felis.
Pellentesque porttitor, velit lacinia egestas auctor, diam eros tempus arcu, nec vulputate augue magna vel risus. Cras non magna vel ante adipiscing rhoncus. Vivamus a mi.
Morbi neque. Aliquam erat volutpat. Integer ultrices lobortis eros.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin semper, ante vitae sollicitudin posuere, metus quam iaculis nibh, vitae scelerisque nunc massa eget pede. Sed velit urna, interdum vel, ultricies vel, faucibus at, quam.
Donec elit est, consectetuer eget, consequat quis, tempus quis, wisi. In in nunc. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
Donec ullamcorper fringilla eros. Fusce in sapien eu purus dapibus commodo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Cras faucibus condimentum odio. Sed ac ligula. Aliquam at eros.
Etiam at ligula et tellus ullamcorper ultrices. In fermentum, lorem non cursus porttitor, diam urna accumsan lacus, sed interdum wisi nibh nec nisl. Ut tincidunt volutpat urna.
Mauris eleifend nulla eget mauris. Sed cursus quam id felis. Curabitur posuere quam vel nibh.
Cras dapibus dapibus nisl. Vestibulum quis dolor a felis congue vehicula. Maecenas pede purus, tristique ac, tempus eget, egestas quis, mauris.
Curabitur non eros. Nullam hendrerit bibendum justo. Fusce iaculis, est quis lacinia pretium, pede metus molestie lacus, at gravida wisi ante at libero.
Quisque ornare placerat risus. Ut molestie magna at mi. Integer aliquet mauris et nibh.
Ut mattis ligula posuere velit. Nunc sagittis. Curabitur varius fringilla nisl.
Duis pretium mi euismod erat. Maecenas id augue. Nam vulputate.
Duis a quam non neque lobortis malesuada. Praesent euismod. Donec nulla augue, venenatis scelerisque, dapibus a, consequat at, leo.
Pellentesque libero lectus, tristique ac, consectetuer sit amet, imperdiet ut, justo. Sed aliquam odio vitae tortor. Proin hendrerit tempus arcu.
In hac habitasse platea dictumst. Suspendisse potenti. Vivamus vitae massa adipiscing est lacinia sodales.
Donec metus massa, mollis vel, tempus placerat, vestibulum condimentum, ligula. Nunc lacus metus, posuere eget, lacinia eu, varius quis, libero. Aliquam nonummy adipiscing augue.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.
Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.
</div>
</div>
</div>
</body>
</html>
披露:我在从事 Microsoft 实施 CSS 网格的团队中。