Как предотвратить наложение полос прокрутки на контент?

У меня есть блок предварительно отформатированного кода (<pre>), который переполняется по горизонтали, поэтому есть горизонтальная полоса прокрутки, позволяющая пользователю просматривать содержимое.

overflow: auto;

Однако в IE7 (возможно, в других версиях IE) полоса прокрутки перекрывает последнюю строку моего содержимого (что особенно раздражает, когда есть только одна строка содержимого).

Я пробовал решение, указанное в списке здесь, но оно не сработало.

Единственное решение, которое работает, - это использовать

overflow: scroll;

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

Примечание. Он отлично работает в Firefox 3 и Google Chrome.


Обновлять

Я нашел решение (см. Мой ответ), но если кто-то найдет способ избежать уродливого заполнения в каждом предварительно отформатированном разделе в IE7, это было бы идеально.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
13
0
14 473
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Оберните ваш PRE в DIV с некоторыми дополнительными полями.

Ответ принят как подходящий

Сразу после публикации вопроса я подумал о том, чтобы проверить, обработал ли stackoverflow это (что он делает).

Я взглянул на таблицу стилей и обнаружил следующее:

padding-bottom: 19px!ie7;

(ну, они используют 20 пикселей, но 19 выглядело лучше).

Он добавляет нижний отступ только для IE7, из-за чего все предварительно отформатированные разделы без полосы прокрутки выглядят немного странно из-за огромного заполнения, но, по крайней мере, я могу видеть содержимое (и это действительно выглядит странно в stackoverflow).

Извините, что задал вопрос слишком быстро.

Вы можете разместить padding-bottom в таблице стилей только для IE; эта страница считает '! ie7' взломом: css-tricks.com/how-to-create-an-ie-only-stylesheet

Jon Onstott 24.04.2013 22:36

Оберните ваш PRE в DIV и примените overflow: scroll; к DIV. Убедитесь, что вы используете либо <div style = "overflow: scroll; width='...'; height='...';">, либо назначьте класс для div, чтобы убедиться, что не все из них получают полосу прокрутки.

Например, в своем блоге я использую <div style = "overflow: scroll; width: 100%;"> для небольших фрагментов кода, чтобы люди могли прокручивать по горизонтали, а div увеличивался до нужной высоты. Для более длинных частей я также назначаю высоту, чтобы уменьшить длину всей статьи; люди также могут прокручивать по вертикали.

Вы также можете попробовать <div style = "overflow: scroll; overflow-y: hidden; width: 100%;">, чтобы получить только горизонтальную полосу прокрутки (а не обе, и одна из них отключена). Может быть, <div style = "overflow-x: scroll; width: 100%;"> тоже работает.

Это добавит полосу прокрутки к каждому DIV, о котором я упоминал, что мне не нужно.

mbillard 13.01.2009 19:36

Просто добавьте style = "overflow: scroll;" в div вместо того, чтобы указывать его в таблице стилей CSS для всех DIV.

Aaron Digulla 14.01.2009 14:08

добавьте padding-bottom: 20px к тегу pre

Это добавляет уродливые отступы в каждом браузере, мне просто нужно исправить для IE7.

mbillard 13.01.2009 21:25

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