2015-09-26 25 views
1

我正在调查CSS网格,我遇到了一些奇怪的事情。我想要3列:1和3是150px宽,其余2。这应该是可能的,我想,但没有奏效:CSS网格自动(休息)大小不适用于我

grid-template-columns: 150px auto 150px; 

所以我想这一点,并没有工作,但傻:

grid-template-columns: 150px calc(100% - 300px) 150px; 

然后我碰到这个例子来:http://gridbyexample.com/examples/code/layout1.html它采用这个方法,使内容列自动调整大小:

grid-template-columns: 200px 40px auto 40px 200px; 

这就是我做到了!他们的例子工作,而我的不!

我的例子小提琴:http://jsfiddle.net/rudiedirkx/w5xho67w/3/(3列触发如果屏幕> = 700px)。

我必须做一些愚蠢的事,但我不能找到差异...

不会吧:

  • 因为bodygrid
  • 因为它是一个iframe
  • 由于包装(body)不是固定宽度(既不100%也不900px作品)
+0

你没有任何外部资源调用网格模板? – Levi

+0

@Levi外部资源?阙? – Rudie

回答

1

您在寻找的是分数单位 - 设置中间列为1fr,这意味着当占其他两列时占用剩余空间的1/1。它的工作原理(基本上)就像一个带有flex basis: 0的flexbox flex单元。

grid-template-columns: 150px 1fr 150px; 

相比之下,auto值将根据内容的大小,所以空的中间列(例如)不会占用任何空间。

我已经开始编写关于网格布局模块如何工作的系列,其中有一个part on sizing grid tracks(这可能有帮助)。 :-)

+0

你可以结合'fr'和'px'?奇怪......任何想法为什么其他网站使用'auto'?它似乎做我想做的事,我想怎么做。用'1fr'代替'auto'不会改变一件事。为什么我的'auto'不工作? '自动'更有意义... – Rudie

+0

'1fr'诀窍:http://jsfiddle.net/rudiedirkx/w5xho67w/4/谢谢! – Rudie

+0

是的,中间col的1fr表示“分配2个非柔性轨道的总尺寸后留下的所有空间”,即除了尺寸为fr的轨道以外的任何其他空间。所以你可以混合和匹配fr,px,em,百分比,自动...我现在在手机上,无法检查其他例子,但可能它的内容将宽度推出。 Rachel还有其他一些在该网站上使用灵活单元的例子,请检查一下。 :) – Emil

相关问题