2015-06-03 3 views
5

Demo: http://codepen.io/anon/pen/JdWrKX?editors=110Отзывчивая таблица делает макет выходит за рамками 100% шириной

Как вы можете видеть, что есть отзывчивая таблица внутри «.panel», который можно прокручивать по горизонтали. Отлично.

Но это делает всю страницу горизонтальной разверткой и не укладывается в окно. Попробуйте на маленьких экранах, чтобы увидеть ошибку.

HTML:

<div id="wrap"> 

    <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> 
    <div class="container-fluid"> 
     <div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> 
      <span class="sr-only">Toggle navigation</span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
     </button> 
     <a class="navbar-brand" href="">Logo</a> 
     </div> 
     <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
     <ul class="nav navbar-nav navbar-right"> 
      <li> 
      <a href="">Logout</a> 
      </li> 
     </ul> 
     </div> 
    </div> 
    </nav> 

    <div class="content content-primary content-sm"> 
    <div class="container-fluid"> 

     <div class="row"> 
     <div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3"> 
      <div class="panel panel-default"> 
      <div class="panel-body"> 
       <div class="table-responsive"> 
       <table class="table-bordered"> 
        <tr> 
        <td> 
         <div>a</div> 
        </td> 
        <td>b</td> 
        </tr> 
       </table> 
       </div> 
      </div> 
      </div> 
     </div> 
     </div> 

    </div> 
    </div> 

    <footer> 
    <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> 
     <div class="container-fluid"> 
     <div class="navbar-header"> 
      <a class="navbar-brand" href="">Copyright</a> 
     </div> 
     <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
      <ul class="nav navbar-nav navbar-right"> 
      <li> 
       <a href="">Logout</a> 
      </li> 
      </ul> 
     </div> 
     </div> 
    </nav> 
    </footer> 
</div> 

CSS:

html, 
body { 
    height: 100%; 
} 

#wrap { 
    height: 100%; 
    display: table; 
    width: 100%; 
} 

#wrap > nav, 
footer { 
    display: table-row; 
} 

nav.navbar { 
    margin-bottom: 0; 
} 

.content-sm { 
    padding: 15px 0; 
} 

.content-primary { 
    background: #337ab7; 
} 

.content { 
    display: table-cell; 
    height: 100%; 
} 

td { 
    text-wrap: no-warp; 
} 

td div { 
    width: 900px; 
} 
+0

Я думаю, что проблема 'td div {width: 900px;}'. Но вопрос в том, какое поведение вам нужно для небольших видовых экранов? –

+0

@FabianMebus - 900px предназначен для имитации td с большим количеством контента. У меня есть большие таблицы, которые вы можете прокручивать по горизонтали, что отлично работает. Но общая схема должна оставаться на 100% от окна, вместо того, чтобы идти дальше этого. – trs

+0

Вы используете .container-fluid, но разве вы не используете .row-fluid специально для своего дочернего ряда? –

ответ

4

Поскольку дочерние элементы .content, кажется, игнорируя значения% ширины, работа вокруг, которая работала для меня было:

.content > * { 
    width: 100vw; 
} 

Я также добавил класс .table для табличного элемента

<table class="table table-bordered"> 

Here is a Demo

ПРИМЕЧАНИЕ:Блокработает только в современных браузерах. Check support here

+1

WOW, фантастический. :) Большое спасибо! – trs

+1

'vw',' vh' и 'vmin' /' vm' - отличная единица. Но имейте в виду, что это решение для новых браузеров (IE10 +). – sharf

+0

@sharf Очень хорошая точка. Я добавил примечание к моему ответу. –

-1

Попробуйте изменить ширину ребенка DIV вашей ТД как этот

td div { 
     width: auto; 
    } 

Я надеюсь, что это помогает исправления ошибки.

+0

Нет - отзывчивый стол работает нормально. Проблема заключается в общем макете страницы. – trs

-1

Если размер окна меньше или равен 900px, то содержимое td выходит за рамки этого. Вы не должны фиксировать размер td div в px. Вместо этого используйте% (в процентах).

td div 
{ 
    width: 100%; 
} 
+0

Нет - отзывчивый стол работает нормально. Проблема заключается в общем макете страницы. – trs

+0

Размер таблицы вписывается в общий размер макета страницы? – cProg

0

Изменение кодовой таблицы, как это:

<div class="content content-primary content-sm"> 
    <div class="container-fluid"> 
     <div class="row"> 
     <div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3"> 
      <div class="panel panel-default"> 
      <div class="panel-body"> 
       <table class="table table-responsive table-bordered"> 
        <tr> 
        <td> 
         <div>a</div> 
        </td> 
        <td>b</td> 
        </tr> 
       </table> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 

и удалить это из вашего файла CSS

td div { 
    width: 900px; 
} 
0

Проблема заключается в том, что table s являются по своей природе не реагировать. Вы прибегали к использованию displaytable, table-row и table-cell, которые расширяются за пределы содержимого с контентом и создают нежелательные эффекты.

Как вы можете видеть в этом fiddle: если вы удалите элементы table, проблема с шириной исчезнет, ​​но тогда вы не получите липкий нижний колонтитул, который вы ищете.

изменить свой CSS на:

html, 
body { 
    height: 100%; 

} 

#wrap { 
    min-height: 100%; 
    background: #337ab7; 
} 

.page-wrap:after { 
    content: ""; 
    display: block; 
    height: 51px; 
} 

nav.navbar { 
    margin-bottom: 0; 
} 

.content-sm { 
    padding: 15px 0; 
} 

.box-content { 
    width: 9000px; 
    height: 5000px; 
    background: red; 
} 

.box-responsive { 
    width: 100%; 
    max-width: 100%; 
    overflow-x: scroll; 
    border: 1px solid green; 
} 

вы получите нужную ширину отзывчивый, а также полную высоту веб-страницу с липким сноске.

+0

Спасибо, но, к сожалению, содержание страницы имеет динамическую высоту, что означает, что она может расти выше. Попробуйте сделать контент супер высоким, например 5000px, и вы увидите, что «позиция: абсолютная» на нижнем колонтитуле больше не работает. – trs

+0

@murid обновлен. Посмотрите сейчас. – sharf

+0

- спасибо, но это не оригинальное поведение нижнего колонтитула. Нижний колонтитул должен опускаться с содержимым, а не фиксироваться. Если вы возьмете исходный код и сделаете контент супер высоким, вы увидите, как работает нижний колонтитул: он опускается, что является желаемым результатом. – trs

Смежные вопросы