css3 – 在元素的居中网格中的左对齐的最后一行

前端之家收集整理的这篇文章主要介绍了css3 – 在元素的居中网格中的左对齐的最后一行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一堆相同大小的块设置显示:inline-block在一个div中有text-align:center设置为对齐块。
|        _____   _____   _____   _____       |
|       |     | |     | |     | |     |      |
|       |  1  | |  2  | |  3  | |  4  |      |
|       |_____| |_____| |_____| |_____|      |
|        _____   _____   _____   _____       |
|       |     | |     | |     | |     |      |
|       |  5  | |  6  | |  7  | |  8  |      |
|       |_____| |_____| |_____| |_____|      |
|                                            |

这些块水平填充div,当浏览器窗口缩小时,一些块会分成新行,从而创建更多的行和更少的列。我想要一切仍然保持中心,最后一行对齐齐齐向左,像这样:

|        _____   _____   _____        |
|       |     | |     | |     |       |
|       |  1  | |  2  | |  3  |       |
|       |_____| |_____| |_____|       |
|        _____   _____   _____        |
|       |     | |     | |     |       |
|       |  4  | |  5  | |  6  |       |
|       |_____| |_____| |_____|       |
|        _____   _____                |
|       |     | |     |               |
|       |  7  | |  8  |               |
|       |_____| |_____|               |
|                                     |

目前发生的是这样:

|        _____   _____   _____        |
|       |     | |     | |     |       |
|       |  1  | |  2  | |  3  |       |
|       |_____| |_____| |_____|       |
|        _____   _____   _____        |
|       |     | |     | |     |       |
|       |  4  | |  5  | |  6  |       |
|       |_____| |_____| |_____|       |
|            _____   _____            |
|           |     | |     |           |
|           |  7  | |  8  |           |
|           |_____| |_____|           |
|                                     |

我不能添加额外的填充div像一个建议,因为可以有任何数量的块,行和列的数量将取决于浏览器宽度。我也不能直接样式块7,出于同样的原因。无论多少列,块都必须始终保持居中。

这里是一支笔,更好地展示:

http://codepen.io/anon/pen/IDsxn

这可能吗?我觉得肯定应该。我宁愿不使用flexBox,因为它只有ie10,我想ie9。我真的想要一个纯CSS解决方案,但如果你告诉我JS是唯一的方式,我很想看到在行动。

供参考 – 类似问题,虽然没有彻底解释:

How to align left last row/line in multiple line flexbox

CSS – Left align the last row of images in a centered div

Fix centering last line of elements in fluid container grid to be left aligned while container stays centered

Center multiple inline blocks with CSS and align the last row to the left

解决方法

这里有一个非常简单的JavaScript(和您的CSS中的一些小改动)解决方案:

http://jsfiddle.net/ha68t/

它工作正常对我来说。

CSS:

.container {
  margin: 0 auto;
  max-width:960px;
  background-color: gold;
}

.block {
  background-color: #ddd;
  border:1px solid #999;
  display: block;
  float: left;
  height: 100px;
  margin: 4px 2px;
  width: 100px;
}

JavaScript:

$(document).ready(function(){
    setContainerWidth();
});

$(window).resize(function(){
   setContainerWidth();
});

function setContainerWidth()
{
    $('.container').css('width','auto'); //reset
    var windowWidth = $(document).width();
    var blockWidth = $('.block').outerWidth(true);
    var maxBoxPerRow = Math.floor(windowWidth / blockWidth);
    $('.container').width(maxBoxPerRow * blockWidth);
}

jQuery是必需的:)

原文链接:https://www.f2er.com/css/221979.html

猜你在找的CSS相关文章