table-单元格内容大小不同

table-cell content is different sizes

我在 table 中显示了多个带有页脚文本的圆圈。在所有浏览器上,圆形图像的大小相同,IE11 和 edge 除外。

这就是我目前拥有的(对于大型 css 转储感到抱歉 - 我真的不知道是什么导致了这个问题):

.circle-container {
  display: table;
}

.circle {
  display: table-cell;
  table-layout: fixed;
  padding: 40px 20px;
  vertical-align: top;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -moz-osx-font-smoothing: grayscale;
  cursor: pointer;
}

.circle>p {
  display: block;
  width: 100%;
  text-align: center;
  margin: 40px 0 0;
}

.circle>div {
  position: relative;
}

.circle>div:before {
  content: '';
  position: absolute;
  border: #54314E solid 4px;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: top, right, bottom, left;
  transition-property: top, right, bottom, left;
  border-radius: 50%;
  z-index: 1;
}

.circle>div>img {
  border-radius: 50%;
  width: 100%;
  height: auto;
}

.circle:hover>div:before,
.circle:focus>div:before,
.circle:active>div:before,
.circle.active>div:before {
  top: -15px;
  right: -15px;
  bottom: -15px;
  left: -15px;
}
<div class="circle-container">
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>Corporate &amp; <br>Institutional <br>Banking</b></p>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>Global <br>Transactional <br>Solutions &amp; <br>Client Experience</b></p>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>Financial Markets</b></p>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>International</b></p>
  </div>
</div>

我注意到当我删除圆圈下的文本时问题并不明显:

.circle-container {
  display: table;
}

.circle {
  display: table-cell;
  table-layout: fixed;
  padding: 40px 20px;
  vertical-align: top;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -moz-osx-font-smoothing: grayscale;
  cursor: pointer;
}

.circle>p {
  display: block;
  width: 100%;
  text-align: center;
  margin: 40px 0 0;
}

.circle>div {
  position: relative;
}

.circle>div:before {
  content: '';
  position: absolute;
  border: #54314E solid 4px;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: top, right, bottom, left;
  transition-property: top, right, bottom, left;
  border-radius: 50%;
  z-index: 1;
}

.circle>div>img {
  border-radius: 50%;
  width: 100%;
  height: auto;
}

.circle:hover>div:before,
.circle:focus>div:before,
.circle:active>div:before,
.circle.active>div:before {
  top: -15px;
  right: -15px;
  bottom: -15px;
  left: -15px;
}
<div class="circle-container">
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
  </div>
</div>

我需要保留当前的功能和布局。

注意:不知道会生成多少个带有文本的圆圈,但是p.length == .circle.length.这就是为什么我首先选择使用 table-cell 的原因,因为我认为它会减少手动设置宽度 "run time".

table-layout:fixed 仅适用于 display:table 而不是 table-cell,然后添加 width:100%

注意:最新的 Firefox 出现了这个问题

.circle-container {
  display: table;
  table-layout: fixed;
  width:100%
}

.circle {
  display: table-cell;
  padding: 40px 20px;
  vertical-align: top;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -moz-osx-font-smoothing: grayscale;
  cursor: pointer;
}

.circle>p {
  display: block;
  width: 100%;
  text-align: center;
  margin: 40px 0 0;
}

.circle>div {
  position: relative;
}

.circle>div:before {
  content: '';
  position: absolute;
  border: #54314E solid 4px;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: top, right, bottom, left;
  transition-property: top, right, bottom, left;
  border-radius: 50%;
  z-index: 1;
}

.circle>div>img {
  border-radius: 50%;
  width: 100%;
  height: auto;
}

.circle:hover>div:before,
.circle:focus>div:before,
.circle:active>div:before,
.circle.active>div:before {
  top: -15px;
  right: -15px;
  bottom: -15px;
  left: -15px;
}
<div class="circle-container">
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>Corporate &amp; <br>Institutional <br>Banking</b></p>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>Global <br>Transactional <br>Solutions &amp; <br>Client Experience</b></p>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>Financial Markets</b></p>
  </div>
  <div class="circle">
    <div>
      <img src="http://placehold.it/350x350">
    </div>
    <p><b>International</b></p>
  </div>
</div>