Отключить вертикальное переполнение в HTML / CSS

#css #html

#css #HTML

Вопрос:

В настоящее время я изучаю HTML / CSS, я хочу создать блог в стиле Windows 8 (стиль metro). Но у меня проблема с отключением переполнения. Я использую таблицу в <body> формате html с фиксированным размером данных каждой таблицы. Но всякий раз, когда я добавляю ячейку в строку в таблице, если строка переполняется в направлении x, эта ячейка автоматически прыгает вниз.

Есть ли способ избежать этого?

это часть моего кода:

CSS:

 /***Creating the dashboard in metro style***/
.dashboard {
    position: fixed;
    top: 10.5em;
    left: 0;
    padding-top: 1em;
    padding-left: 1em;
    padding-bottom: 1em;
    border: 5px solid white;
    overflow-x: scroll;
    overflow-y:hidden;
}

td {
    border: 3px solid yellow;
    float: left;
    margin: 0;
    color: black;
    width: 300px;
    font-size: 1.5em;
    cursor: pointer;
    position: relative;
    background-color: white;
}

.tile-1{
    background-color: #56d9c9;
    color: white;
}
  

HTML:

 <div class="dashboard">
            <table style="border: 1px solid red">
                <tr>
                    <td><p>I just got you babe 1</p></td>
                    <td><p>I just got you babe 2</p></td>
                    <td><p>I just got you babe 3</p></td>
                    <td><p>I just got you babe 4</p></td>
                    <td><p>I just got you babe 5</p></td>
                    <td><p>I just got you babe 6</p></td>
                </tr>

                <tr>
                    <td><p>I just got you babe 7</p></td>
                    <td><p>I just got you babe 8</p></td>
                    <td><p>I just got you babe 9</p></td>
                    <td><p>I just got you babe 10</p></td>
                    <td><p>I just got you babe 11</p></td>
                    <td><p>I just got you babe 12</p></td>
                </tr>

                <tr>
                    <td><p>I just got you babe 13</p></td>
                    <td><p>I just got you babe 14</p></td>
                    <td><p>I just got you babe 15</p></td>
                    <td><p>I just got you babe 16</p></td>
                    <td><p>I just got you babe 17</p></td>
                    <td><p>I just got you babe 18</p></td>
                    <td><p>I just got you babe 19</p></td>
                    <td><p>I just got you babe 20</p></td>
                </tr>
            </table>
        </div>
  

Комментарии:

1. В каждой строке должно быть одинаковое количество столбцов. Если вы не хотите столько же, сколько вы должны использовать colspan на них.

2. Что вам нужно, так это макет таблицы , а не table .

3. Это неподходящее использование для таблицы, таблица и связанные с ней элементы предназначены для отображения табличных данных. Вы также неправильно понимаете механику компоновки таблиц (что достаточно справедливо, это может немного сбивать с толку).

4. Вы НЕ МОЖЕТЕ запретить автоматическое изменение размера таблицы в соответствии с ее содержимым. Это свойство таблиц, иногда удобное, иногда не очень.. Я думаю, вам придется заменить вашу таблицу пользовательской div-сеткой или чем-то в этом роде

Ответ №1:

Вам нужен табличный макет, а не таблицы. Таблицы используются для табличных данных, а не для макетов.

Сказав это, вы можете легко добавлять больше блоков, не прерывая горизонтальную прокрутку, не внося особых изменений в свой мысленный макет. Вот пример:

Демонстрация: http://jsfiddle.net/abhitalks/HSE4e/2 /

HTML:

Остается похожим на ваш макет, с той лишь разницей, что вместо таблиц, строк и ячеек у вас есть div s.

 <div class="wrap">                      <!-- wrapper to contain the layout -->
    <div class="table">                 <!-- this holds your blocks and scrolls -->
        <div class="row">               <!-- this allows you multiple rows -->
            <div class="content"></div> <!-- actual content -->
            <div class="content"></div>
        </div>
        <div class="row">
            <div class="content"></div> <!-- by having rows, -->
            <div class="content"></div> <!-- you can have differing number of.. -->
            <div class="content"></div> <!-- ..content blocks in each row -->
        </div>
        ...
    </div>
</div>
  

CSS:

 * {
    margin: 0; padding: 0; box-sizing: border-box; /* reset */
}
html, body {
    overflow: hidden; 
    width: 100%; /* restrict the page width to viewport */
}
.wrap {
    width: 100%; height: 200px; /* restrict width to viewport */
    overflow-y: hidden; /* hide vertical scrollbar */
    overflow-x: scroll; /* show only horizontal scrollbar */
}
.table {
    width: 1000px; /* arbitrarily high width to allow scroll */
    height: 100%; /* restrict height to the container */
}
.row {
    margin: 8px 8px; /* visually separate rows */
}
.content {
    display: inline-block; /* make content blocks flow inline */
    width: 100px; height: 50px; /* any height/width you want */
    margin: 0px 8px; /* visually separate content blocks */
}
  

Итак, используя ту же ментальную модель, что и у вас, просто подумайте о CSS, а не о таблицах.

При таком расположении у вас может быть разное количество блоков содержимого в каждой строке. У вас может быть столько строк, сколько вы можете разместить на доступной высоте.

Используя Javascript, вы также можете управлять колесом мыши для прокрутки по горизонтали.

Ответ №2:

вы должны установить width и height для вашего table !

я изменил ваш код!

Смотрите это на Jsfiddle


CSS:

 .dashboard {
    position: fixed;
    top: 10.5em;
    left: 0;
    max-height:180px;
    width:500px;
    padding-top: 1em;
    padding-left: 1em;
    padding-bottom: 1em;
    border: 5px solid white;
    overflow-x:scroll;
}
table{
    height:200px;
    width:10000px;
}
td {
    border: 3px solid yellow;
    margin: 0;
    color: black;
    width: 300px;
    font-size: 1.5em;
    cursor: pointer;
    margin:2px;
    display:inline-block;
    background-color: white;
}
.tile-1{
    background-color: #56d9c9;
    color: white;
}
  

Ответ №3:

Вам нужно переосмыслить весь свой подход к проблеме, поскольку, как указано выше, использование таблицы семантически и концептуально неверно. К счастью, есть много информации о создании сайтов с горизонтальной прокруткой, например, ознакомьтесь http://css-tricks.com/how-to-create-a-horizontally-scrolling-site /.