Вертикальная полоса прокрутки смещает строки таблицы HTML - программирование
Подтвердить что ты не робот

Вертикальная полоса прокрутки смещает строки таблицы HTML

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

Таблица отлично работает, но я не могу настроить или разместить позицию столбцов по столбцам таблицы из-за ширины полосы прокрутки. Когда полоса прокрутки видима (и она всегда должна быть видимой), строки таблицы смещаются и имена столбцов выглядят плохо.

Не могли бы вы дать мне несколько мыслей?

Есть ли способ изменить z-индекс полосы прокрутки или что-то, что позволяет избежать смещения поведения?

Вот jsFiddle: См. пример здесь

HTML:

     <div id="tablecontainer">
        <div id="topbar">
            <div class="colname cellwidth1">ABC</div>
            <div class="colname cellwidth2">ABC</div>
            <div class="colname cellwidth3">ABC</div>
            <div class="colname cellwidth4">ABC</div>
        </div>
        <div class="breakline"></div>
        <div id="expandtable">
            <div class="divrow">
                <div class="divcell cellwidth1">&nbsp;</div>
                <div class="divcell cellwidth2">&nbsp;</div>
                <div class="divcell cellwidth3">&nbsp;</div>
                <div class="divcell cellwidth4">&nbsp;</div>
            </div>
            <div class="divrow">
                <div class="divcell cellwidth1">&nbsp;</div>
                <div class="divcell cellwidth2">&nbsp;</div>
                <div class="divcell cellwidth3">&nbsp;</div>
                <div class="divcell cellwidth4">&nbsp;</div>
            </div>          
        </div>
        <div class="breakline"></div>
        <div id="topbar">
            <div class="colname cellwidth1">ABC</div>
            <div class="colname cellwidth2">ABC</div>
            <div class="colname cellwidth3">ABC</div>
            <div class="colname cellwidth4">ABC</div>
        </div>
    </div>

CSS

html, body, #expandtable, #tablecontainer 
{
    height:100%;
    margin: 0;
    padding: 0;
    border: none;
    overflow-y: hidden;
}

#tablecontainer 
{
    width: 100%;
    margin: 0 auto;
    padding-top: 50px;
    max-width: 900px;
}

#expandtable
{
    margin: 5px 0 0 0px;
    overflow-x: hidden;
    overflow-y: scroll;
    height: 60%;
    border-bottom: 0;
    background-color: #eee;
    margin: 0 auto;
}

.breakline { clear:both;}

.divcell 
{ 
    float:left; 
    border: 1px solid #999; 
    box-sizing: border-box; 
    min-height: 30px; 
}
.colname 
{ 
    float:left; 
    border: 1px solid #e5e5e5; 
    box-sizing: border-box;
}

.cellwidth1 { width:10%; }
.cellwidth2 { width:45%; }
.cellwidth3 { width:35%; }
.cellwidth4 { width:10%; }
4b9b3361

Ответ 1

Если вы хотите больше контролировать панель прокрутки, вы можете использовать плагин jQuery, например: http://www.yuiazu.net/perfect-scrollbar/

Однако, прежде чем вы начнете с этого, вы должны прочитать о правильном использовании <table>

Инструкции для этого можно найти здесь: http://www.w3schools.com/html/html_tables.asp

Ответ 2

Хорошо, что он работает в Chrome на Mac (по крайней мере, это начало. Полоса прокрутки зависает над содержимым, а не перемещает его).

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