KendoUI Splitter ломает стили начальной загрузки

У меня есть некоторый HTML, который я добавляю в контейнер KendoUI Splitter, и ему назначен загрузочный css. Стили прекрасно работают, когда HTML находится вне сплиттера, но они ломаются, когда находятся внутри сплиттера.

Как я могу решить это?

Вот простая скрипка, которая демонстрирует проблему: http://jsfiddle.net/codeowl/9Ag3X/17/

Вот код:

<div class="spacer"></div>

<div id="StandardDiv">    
</div>

<div class="spacer"></div>

<div id="splitter" 
    data-role="splitter"
    data-panes="[
        { collapsible: false, size: '30px' },
        { collapsible: false }
    ]">
    <div id="LeftPane"></div>
    <div id="RightPane"></div>    
</div>


<script id="TestTemplate">
    <div class="panel panel-default">
        <div class="panel-heading ma-panel-heading">Edit User Details:</div>
        <div class="panel-body">
            <table class="form-uiview-add_edit">
                <tr>
                    <td>
                        <label >Username:</label>
                        <input type="text" class="form-control"  />
                    </td>
                    <td>
                        <label >Password:</label>
                        <input type="password" class="form-control"  />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label >First Name:</label>
                        <input type="text" class="form-control" />
                    </td>
                    <td>
                        <label >Last Name:</label>
                        <input type="text" class="form-control" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label >Email:</label>
                        <input type="text" class="form-control" />
                    </td>
                    <td>
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" value="1" />
                                Account is Active
                            </label>
                        </div>
                    </td>
                </tr>
            </table>
            <div class="pull-right">
                <button class="btn btn-default" >
                    Cancel
                </button> 
                <button class="btn btn-default" >
                    Save
                </button>
            </div>
        </div>
    </div>   
</script>

Вот Javascript:

$(document).ready(function() {
    var eTestTemplate = $('#TestTemplate');
    $('#StandardDiv').append(eTestTemplate.html());
    kendo.bind($('#splitter'), {});
    $('#RightPane').append(eTestTemplate.html());
});

Вот CSS:

table.form-uiview-add_edit {
    width:100%;
}
.form-uiview-add_edit td {
    padding:5px;
}
.spacer {
    height:20px;
}

Используя инструменты разработчика Chrome, я обнаружил, что после рендеринга панели разделителя div присваивается класс k-widget. Если я отредактирую div в инструменте dev и удаляю класс k-widget, форма отображается так, как и должно быть, с отступом 5px в ячейках таблицы, помещая пространство между текстовыми вводами.

Но я еще не сузил, что именно в классе k-widget нарушает стили начальной загрузки.

Спасибо за ваше время,

С Уважением,

Скотт

1 ответ

Решение

Хорошо, я решил проблему!

Класс k-widget назначает следующий CSS:

.k-widget, .k-widget * {
    -moz-box-sizing: content-box; 
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
}

Эти стили нарушают отступы в таблице и стили начальной загрузки.

Я решил это с помощью следующего CSS в моей форме:

.form-uiview-add_edit * {
    -moz-box-sizing: border-box !important; 
    -webkit-box-sizing: border-box !important; 
    box-sizing: border-box !important;
}

Вот обновленная скрипка: http://jsfiddle.net/codeowl/YV8Jx/4/

Надеюсь, это сэкономит кому-то еще время.

С Уважением,

Скотт

Другие вопросы по тегам