【问题标题】:Vertically align the text of each cell垂直对齐每个单元格的文本
【发布时间】:2018-04-27 06:55:45
【问题描述】:

我想知道是否存在使文本设置在同一行或同一级别的技术,因为我所做的是为我的前两个块添加行高,但如果我添加一行-其他人的身高还是有差距的。它会产生一种奇怪的外观,因为我的标题在每个单元格中都不相同。

$(document).ready(function() {
  $(".toggler").click(function(e) {
    e.preventDefault();

    $(this).closest('table').find('[class^="cat"]').toggle();
  });
});
a {
  color: #002642;
}

.center {
  text-align: center;
}

.toggler,
.cat1 {
  font-family: 'Varela Round';
  color: white;
}

td {
  display: block;
  width: auto;
  border: 1px dotted #c4a77d;
  background-color: #c4a77d;
  color: white;
  margin-bottom: 10px;
}

@media only screen and (min-width: 70em) {
  td {
    display: table-cell;
    border: 1px dotted #c4a77d;
    background-color: #c4a77d;
    color: white;
    margin-bottom: 0px;
  }
}

p {
  font-family: 'Varela Round';
  font-weight: bold;
  text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="table-layout: fixed; width:100%" width="100%" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td>
        <table width="100%" class="center">
          <tr>
            <td style="line-height:100px;">
              <p style="vertical-align:middle;">SOCIÉTÉS: 230</p>
            </td>
          </tr>
          <tr>
            <td><a href="#" class="toggler" data-prod-cat="1">+ En savoir plus</a></td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part CAC 40 : 90</td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part Filiales +100M€: 120</td>
          </tr>
        </table>
      </td>
      <td>
        <table width="100%" class="center">
          <tr>
            <td style="line-height:100px;">
              <p style="vertical-align:middle;">CONTACTS : 16 700</p>
            </td>
          </tr>
          <tr>
            <td><a href="#" class="toggler" data-prod-cat="1">+ En savoir plus</a></td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part CAC 40 : 10 000 </td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part Filiales +100M€: 6 700</td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>% contacts IT: 21%</td>
          </tr>
        </table>
      </td>
      <td>
        <p>EMAIL NOMINATIFS: 16 700</p>
      </td>
      <td>
        <p>OPT OUT: 3%</p>
      </td>
      <td>
        <p>LIGNES DIRECTES: 35%</p>
      </td>
    </tr>
  </tbody>
</table>

【问题讨论】:

  • 在 chrome 中运行你的代码 sn-p 似乎没有错位,除非我误解了你的问题。现在通常不赞成在表格中使用表格进行布局。您是否考虑过使用 bootstrap 之类的东西来进行造型?
  • 嗨。如果您使用的是表格,您是否尝试在 上直接应用一些 valign="middle" ?
  • @Chaaampy vertical-align: middle 是 td 元素的默认值。
  • @MrLister 我的错,这不是一个完整的评论。我的意思是,添加这个并在 上设置一些填充,而不是 100px 行高。也许它可以解决问题。

标签: css html-table alignment vertical-alignment


【解决方案1】:

您需要的只是表格单元格上的vertical-align:baseline。 td 元素默认有vertical-align:middle

$(document).ready(function() {
  $(".toggler").click(function(e) {
    e.preventDefault();

    $(this).closest('table').find('[class^="cat"]').toggle();
  });
});
a {
  color: #002642;
}

.center {
  text-align: center;
}

.toggler,
.cat1 {
  font-family: 'Varela Round';
  color: white;
}

td {
  display: block;
  width: auto;
  border: 1px dotted #c4a77d;
  background-color: #c4a77d;
  color: white;
  margin-bottom: 10px;
  vertical-align:baseline;
}

@media only screen and (min-width: 70em) {
  td {
    display: table-cell;
    border: 1px dotted #c4a77d;
    background-color: #c4a77d;
    color: white;
    margin-bottom: 0px;
  }
}

p {
  font-family: 'Varela Round';
  font-weight: bold;
  text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="table-layout: fixed; width:100%" width="100%" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td>
        <table width="100%" class="center">
          <tr>
            <td style="line-height:100px;">
              <p style="vertical-align:middle;">SOCIÉTÉS: 230</p>
            </td>
          </tr>
          <tr>
            <td><a href="#" class="toggler" data-prod-cat="1">+ En savoir plus</a></td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part CAC 40 : 90</td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part Filiales +100M€: 120</td>
          </tr>
        </table>
      </td>
      <td>
        <table width="100%" class="center">
          <tr>
            <td style="line-height:100px;">
              <p style="vertical-align:middle;">CONTACTS : 16 700</p>
            </td>
          </tr>
          <tr>
            <td><a href="#" class="toggler" data-prod-cat="1">+ En savoir plus</a></td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part CAC 40 : 10 000 </td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>Part Filiales +100M€: 6 700</td>
          </tr>
          <tr class="cat1" style="display:none">
            <td>% contacts IT: 21%</td>
          </tr>
        </table>
      </td>
      <td>
        <p>EMAIL NOMINATIFS: 16 700</p>
      </td>
      <td>
        <p>OPT OUT: 3%</p>
      </td>
      <td>
        <p>LIGNES DIRECTES: 35%</p>
      </td>
    </tr>
  </tbody>
</table>

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签