Конфликт между jQuery-ui и bootstrap 3 при изменении размера

Я работаю с bootstrap 3 и jQuery-ui вместе, и у меня возникают проблемы при изменении размеров диалогов.

Я использую сеточную систему bootstrap, а также несколько стилей, поэтому я не могу удалить библиотеку или использовать Jquery.noConflict().

С jquery-ui я создал диалог с Iframe внутри, который работает нормально без начальной загрузки, но при включении этого css после изменения размера диалога несколько раз увеличивается правое поле.

Я создал jsfiddle, который показывает проблема.

$('a#pop').on('click', function (e)
{
    e.preventDefault();
    var page = $(this).attr("href");
    var pagetitle = $(this).attr("title");
    var myDialog = $('<div></div>')
    .html('<iframe style="border: 0; " src="' + page + '" width="100%" height="100%"></iframe>')
    .dialog({
        autoOpen: false,
        modal: false,
        height: 500,
        width: 600,
        title: pagetitle,
        open: function (event, ui)
        {
            myDialog.css('overflow', 'hidden');
        }
     });
     myDialog.dialog('open');
});

http://jsfiddle.net/dani2688/6m4VN/

кто-нибудь знает как я могу это исправить, не удаляя ушко?

Я также нашел библиотеку jQuery-bootstrap, но проблема также возникает с помощью этого. https://github.com/addyosmani/jquery-ui-bootstrap

используя этот css, поля выглядят хорошо, но после изменения размера диалога несколько раз, его содержимое растет больше, чем рамка.

.ui-dialog .ui-dialog-content {
    -webkit-box-sizing: initial;
    -moz-box-sizing:initial;
     box-sizing: initial;`
 }

используя этот, проблема с правым полем исправлена, но не с нижним, и по какой-то странной причине использование #ui-id - * не устраняет проблему, мне нужно поставить конкретный идентификатор, который не хорош, потому что меняется каждый раз, когда я открываю новый диалог.

.ui-dialog *{
    box-sizing: border-box;
 }

#ui-id-1{
    width: 100% !important;
}

есть другие идеи о том, как это исправить?

наконец, я нашел решение этой проблемы: в файле css put:

ui-dialog-content {
    width: 100% !important;
    height: 100% !important;
}

iframe {
    height: 100% !important;
    padding-bottom:35px;
}

(.iframe-это класс, который я добавил в компоненте фрейма)

3 ответов


.ui-dialog,.ui-dialog-content {
    -webkit-box-sizing: content-box!important;
    -moz-box-sizing:content-box!important;
    box-sizing: content-box!important;
}

для меня этот CSS, кажется, устраняет проблему в вашем jsfiddle:

.ui-dialog *{
    box-sizing: border-box;
}

вы в основном установите размер коробки для всех элементов в .ui-dialog.

EDIT:

хорошо, теперь я понимаю... Добавьте это правило в свой CSS, и оно должно работать:

#ui-id-1{
    width: 100% !important;
}

существует проблема при подсчете ширины div (и, вероятно, высоты). Я не знаю, откуда берутся вычисления, но значение px неверно. Если у вас есть проблемы с высотой, а также, добавить height для вашего CSS, а также...


У меня была такая же проблема, я просто использовать

.ui-dialog {
    box-sizing:content-box;
}

и работает