防止bootstrap表比span更宽

时间:2013-05-25 18:24:20

标签: html css twitter-bootstrap

以下是通常动态生成的内容。在页面的主要部分有一个<div class="span6">。有时这个div中的表变得比div本身更宽(我检查了css,宽度设置为100%)。如果我只将短文放入表中,或者如果我将div放宽,一切都很好。 问题是:

  1. 为什么表格会比div class=spanX更宽?我一直认为,一个块元素占用其父元素的宽度?
  2. 表格的td中的字符/空格数可以变化。如何防止表格比div更广泛?当然,我可以动态检查ts中的字符数,但我该如何处理这些信息呢?
  3. http://jsfiddle.net/vNnc6/

    HTML:

    <!DOCTYPE html>
    <html lang="de">
    <head>
    <meta charset="utf-8">
    <title>MySite</title>
    <meta name="author" content="me"/>
    
    <link href="static/css/bootstrap.css" rel="stylesheet">
    <link href="static/css/bootstrap-responsive.css" rel="stylesheet">
    <link href="static/profhase.css" rel="stylesheet">
    
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="static/bootstrap/js/bootstrap.js"></script>
    
    
    <body>
      <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="navbar-inner">
          <div class="container">
        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </a>
    
        <ul class="nav">
          <li><a class="brand" href="profhase">MyBrand</a></li>
          <li><a href="#">Home</a></li>
          <li><a href="#about">About</a></li>
          <li><a href="#contact">Blog</a></li>
        </ul>
    
          <div class="nav pull-right collapse nav-collapse" style="hight: 0px">
            <ul class="nav collapse nav-collapse">
              <li><p class="navbar-text">Apps: </p></li>
              <li><a href="firstapp/">AppOne <i class="icon-lock"></i></a></li>
            </ul>
          </div>
          </div>
        </div>
      </div>
    
      <div class="container-fluid">
        <div class="row">
          <div class="span2">
        <p>
          My Wonderful sidebar
        </p>
          </div>
          <div class="span6" style="background:red;">
        <table class="table">
          <tbody>
            <tr>
              <th>Header1</th>
              <th>Header2</th>
              <th>Header3</th>
              <th>Header4</th>
              <th>Header5</th>
              <th>Header6</th>
            </tr>
    
            <tr>
              <td>My first Test</td>
              <td>My second Test</td>
              <td>My third Test</td>
              <td>My fifth Test</td>
              <td>My lalalalalong long lelong long long Test</td>
    
              <td>
            <div class="btn-group">
              <a class="btn dropdown-toggle" data-toggle="dropdown">
                Dropdown Choices <span class="caret"></span>
              </a>
    
              <ul class="dropdown-menu">
                <li><a id=1>First wonderful choice</a></li>
              </ul>
    
            </div>
              </td>
            </tr>
          </tbody>
        </table>
          </div>
        </div>
      </div>
    
    </body>
    

2 个答案:

答案 0 :(得分:64)

感谢FelipeAls的回答,这段代码做到了:

table {
    table-layout: fixed;
    word-wrap: break-word;
}

另一种可能性是不使用自动换行,而是使用类似的东西     ...

http://jsfiddle.net/zzmfA/

答案 1 :(得分:6)

  1. 我注意到span6的父级显示为table,但span6正在浮动。移除浮动并将span*设置为display: table-cell有效: fiddle
    注意:在TB中可能有一个比span*更合适的类,这个类已经有display: table-cell

  2. 其他解决方案,但可能不是您想要实现的目标:&#34;带有overflow: hidden;的元素以及浮动元素的技术&#34; Working fiddle
    对这种魔法的解释名为block formatting context (T. J. Koblentz' blog) - question on SO