【问题标题】:table-cell content is different sizes表格单元格内容大小不同
【发布时间】:2017-04-28 08:20:47
【问题描述】:

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

这是我目前拥有的(对于大型 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,因为我认为它可以减轻在“运行时”手动设置宽度。

【问题讨论】:

    标签: html css internet-explorer internet-explorer-11


    【解决方案1】:

    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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多