Этот способ поможет, если требуется расширить элемент, который не вмещает в себя собственное содержимое (убрать полосу прокрутки):
jQuery(document).ready(function($) { var mypre = $('pre'); mypre.hover( function () { if(this.scrollWidth <= 764) { return } // console.log(this.offsetHeight); //with scrollbar // console.log(this.clientHeight); scrollbarHeight = this.offsetHeight - this.clientHeight; $(this) .css({ 'width': this.scrollWidth+'px', 'max-width': this.scrollWidth+'px', 'padding-bottom': '+='+scrollbarHeight }); $(this).closest('.primary').css('z-index', '111'); }, function () { if(this.scrollWidth <= 764) { return } $(this) .css({ 'width': 'auto', 'max-width': '100%', 'padding-bottom': '-='+scrollbarHeight }); $(this).closest('.primary').css('z-index', ''); }) });
В данном случае расширяется элемент PRE. Как это работает, можно посмотреть на странице - https://ardeya.ru/izmenenie-formy-zakaza-woocommerce/.
В данном примере я дополнительно вычисляю высоту скроллбара (scrollbarHeight = this.offsetHeight - this.clientHeight;
) и добавляю на эту высоту нижний отступ внутри элемента, для того, чтобы элемент не "уезжал" при раскрытии. Высота скроллбара вычисляется для того, чтобы покрыть разные браузеры, так как у каждого своя высота (хром - 15, файрфоркс - 12 и т.д.)
Дополнительно родительскому элементу придается область видимости (z-index), чтобы расширяющийся элемент PRE не "нырял" под боковую колонку. Для чего это нужно - можно почитать в статье о z-index (порядок наложения элементов)