【发布时间】:2018-09-12 14:51:01
【问题描述】:
我有一个列表 (<ul />),我尝试将其显示为网格。 单元格具有固定宽度(比如说 100 像素):列数和行数取决于屏幕分辨率。
屏幕宽大时,列多行少:
______________________________________________________________
| ___________ ___________ ___________ ___________ |
| | | | | | | | | |
| | #1 | | #2 | | #3 | | #4 | |
| |<- 100px ->| |<- 100px ->| |<- 100px ->| |<- 100px ->| |
| | | | | | | | | |
| |___________| |___________| |___________| |___________| |
| ___________ |
| | | |
| | #5 | |
| |<- 100px ->| |
| | | |
| |___________| |
|______________________________________________________________|
当屏幕宽度较小时,列少行多:
________________________________
| ___________ ___________ |
| | | | | |
| | #1 | | #2 | |
| |<- 100px ->| |<- 100px ->| |
| | | | | |
| |___________| |___________| |
| ___________ ___________ |
| | | | | |
| | #3 | | #4 | |
| |<- 100px ->| |<- 100px ->| |
| | | | | |
| |___________| |___________| |
| ___________ |
| | | |
| | #5 | |
| |<- 100px ->| |
| | | |
| |___________| |
|________________________________|
这实际上几乎可以工作:请参阅fiddle。
几乎,因为您可以注意到,当您拉伸宽度时,网格右侧可能会出现一个空白区域。这是因为float: left CSS 属性,是可以理解的。
但是,有没有办法在 cells 之间分配这个空白空间,即自动增加 cells 之间的边距,直到出现有足够的空间容纳一个新的单元格吗?
换句话说,目前有 15px 的固定边距,我正在寻找一种 15px 的 min-margin,它会在 拉伸宽度的同时自动增长,一旦新的 cell 适合第一行,就会回到 15px。
为了说明,而不是:
___________________________________________________________________
| ___________ ___________ ___________ ___________ |
| | | | | | | | | |
| | #1 | | #2 | | #3 | | #4 | BLANK |
| |<- 100px ->| |<- 100px ->| |<- 100px ->| |<- 100px ->| SPACE |
| | | | | | | | | |
| |___________| |___________| |___________| |___________| |
| ___________ |
| | | |
| | #5 | |
| |<- 100px ->| |
| | | |
| |___________| |
|___________________________________________________________________|
有类似的东西:
___________________________________________________________________
| ___________ ___________ ___________ ___________ |
| | | | | | | | | |
| | #1 | | #2 | | #3 | | #4 | |
| |<- 100px ->| |<- 100px ->| |<- 100px ->| |<- 100px ->| |
| | | | | | | | | |
| |___________| |___________| |___________| |___________| |
| ___________ |
| | | |
| | #5 | |
| |<- 100px ->| |
| | | |
| |___________| |
|___________________________________________________________________|
看,第二张图的边距更大,所以没有空格了。
有什么解决办法吗?
请注意#5 单元格 也必须左对齐,即align-center CSS 属性不适合我的需要(据我所知)。
此外,我将使用 jQuery 1.10 和 Bootstrap 3,因此也欢迎使用其中一个(或多个)库的任何解决方案;)
【问题讨论】:
-
这就是你想要的:jsfiddle.net/j08691/ANyYL/4?
-
@j08691
text-align: justify;的用法非常有趣! -
我认为 j08691 的解决方案与纯 CSS 一样接近。所以我认为你需要 javascript (/jQuery)。
-
使用 CSS 的方法非常好,问题是你不能保留第二行的结构。
-
@j08691 嗯,你有一个非常好的主意!但是当第一行有 3 个 cells 而第二行有 2 个时,第二行的布局就很混乱了,因为
#5与#2不一致...
标签: html css css-float margin grid-layout