"display: table" 和 "float:left" 不尊重边距

"display: table" and "float:left" not respecting margins

我有一堆排成一行的按钮,内容在里面垂直居中:

.button {
  width: 18%;
  margin: 0 1%;
  height: 160px;
  padding: 10px;
  display: table;
  float: left;
}

.button-inner {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}

但出于某种原因,在移动浏览器(Safari 8 和 iOS 8.3 上的 Chrome 41)上查看时,按钮不考虑边距。

如果我将 display: table 更改为 display: inline-block 那么边距就可以了,但是我失去了通过在 .button-inner 上使用 display: table-cell 实现的垂直居中。

(我可以使用 position: absolute 垂直居中 .button-inner,但它需要对媒体查询进行一些调整以确保它很好地居中。)

知道为什么会出现这个保证金问题吗?

:) 另外不要忘记添加供应商前缀。

.button {
  width: 18%;
  margin: 0 1%;
  height: 160px;
  padding: 10px;
  display: flex;
  align-items: center;
  float: left;
}

.button-inner {
  text-align: center;
}