首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用文本居中对齐表格

问用文本居中对齐表格
EN

Stack Overflow用户
提问于 2017-09-15 11:44:50
回答 3查看 6.9K关注 0票数 2

我想居中放置一个表格,但尽管它在技术上居中,但td内容的不同长度使表格在右侧有一个空白空间。

​

代码语言:javascript
复制
.wrap {
  background: pink;
  padding: 0 50px;
}

table {
  margin: 0 auto;
  text-align: center;
  width: 100%;
  tr {
    td {
      padding: 10px;
      text-align: left;
    }
  }
}
代码语言:javascript
复制
<div class="wrap">
  <table>
    <tbody>
      <tr>
        <td>something here</td>
        <td>row 1 col 2 my </td>
      </tr>
      <tr>
        <td>row 2 col 1 hello world</td>
        <td>react.js</td>
      </tr>
    </tbody>
  </table>
</div>

​

我可以使table和td居中对齐,但td内容的不同长度使其看起来不均匀。

​

代码语言:javascript
复制
.wrap {
  background: pink;
  padding: 0 50px;
}

table {
  margin: 0 auto;
  text-align: center;
  width: 100%;
  tr {
    td {
      padding: 10px;
    }
  }
}
代码语言:javascript
复制
<div class="wrap">
  <table>
    <tbody>
      <tr>
        <td>something here</td>
        <td>row 1 col 2 my </td>
      </tr>
      <tr>
        <td>row 2 col 1 hello world</td>
        <td>react.js</td>
      </tr>
    </tbody>
  </table>
</div>

​

我想要的是td的内容应该左对齐并在包装器中居中,就像这个图像上的标签(即Cam 1,Cam 2等):

​

​

EN

回答 3

Stack Overflow用户

发布于 2017-09-15 11:51:10

您可以将width: 50%赋给<td>以使其具有相同的宽度,例如:

代码语言:javascript
复制
tr td {
  text-align: left;
  width: 50%;
}

​

代码语言:javascript
复制
.wrap {
  background: pink;
  padding: 0 50px;
}

table {
  width: 100%;
  text-align: center;
}

tr td {
  text-align: left;
  width: 50%;
}
代码语言:javascript
复制
<div class="wrap">
  <table>
    <tbody>
      <tr>
        <td>something here</td>
        <td>row 1 col 2 my </td>
      </tr>
      <tr>
        <td>row 2 col 1 hello world</td>
        <td>react.js</td>
      </tr>
    </tbody>
  </table>
</div>

​

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2017-09-15 11:51:37

我想我已经知道你想要什么了..。您希望文本左对齐,但文本列居中。

您不能仅使用HTML和CSS来实现这一点,因为为了找到居中的宽度,每一列都不会被视为一个单元。

对于纯HTML & CSS解决方案,您必须重新构造表格,以便它将每一列的内容作为一个整体对待。您可以将其显示为<ul>、<p>,甚至另一个表,例如

工作片段:

​

代码语言:javascript
复制
.wrap {
    background: pink;
    padding: 0 50px;
}

table {
    margin: 0 auto;
    text-align: center;
    width: 100%;
    table-layout: fixed;
    tr{
        td {
            padding: 10px;
            text-align: center;
            width: 50%;
        }
    }
}

.cellcontainer {
    width: auto;
    display: inline-block;
    text-align: left;
}

td { border: 1px solid #555555; }
代码语言:javascript
复制
<div class="wrap">
<table>
    <tbody>
        <tr>
            <td>
                <div class="cellcontainer">
                        <p>something here</p>
                        <p>row 2 col 1 hello world</p>
                </div>
            </td>
             <td>
                <div class="cellcontainer">
                        <p>row 1 col 2 my</p>
                        <p>react.js</p>
                </div>
            </td>
        </tr>
    </tbody>
</table>
</div>

​

我为表列添加了一个边框,这样您就可以看到左对齐的内容在列中居中。

如果无法更改HTML的结构,则需要使用javascript之类的工具来实现。

票数 0
EN

Stack Overflow用户

发布于 2017-09-15 11:58:51

您需要使用javascript/jquery计算表的宽度,以便对其进行更好的控制。检查this示例。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
  <style>

    table {
      margin : 0 auto;
      background-color:#DDDDDD;
    }
    table tr td {
      padding : 10px;
      text-align:left;

    }

  </style>
</head>
<body>

  <table id="myTable">
    <tr>
      <td> * Sample content</td>
      <td> * Sample content</td>
    </tr>
     <tr>
      <td> * Sample content</td>
      <td> * Sample content</td>
    </tr>   
  </table>
  <script>

      $(document).ready( function() {

        $('#myTable').css({
          width: $('#myTable').outerWidth() + 'px'
        });

      });

  </script>

</body>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46231359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档