Почему добавляется переполнение: скрытый, вызывающий сжатие элемента - PullRequest
0 голосов
/ 29 июня 2010

Я использую пользовательский интерфейс jQuery и создал панель инструментов (элемент div) с группами кнопок (элемент span), каждая из которых содержит кнопки, радио и т. Д.

На некоторых переключателях я создал сложные метки для имитации кнопок в стиле MS Word 2007. Существует iframe с предварительным просмотром стиля и элемент p с именем кнопки.

например.

<label ... >
   <iframe ... ></iframe>
   <p>Button Name</p>
</label>

Некоторые имена кнопок могут быть очень длинными, поэтому я дал классу p «overflow: hidden». Это исправило переполнение, но в Firefox метка немного уменьшилась в высоте, а в IE8 нормальные кнопки отображаются выше. Chrome отображает именно то, что я ожидаю, версии IE ниже 8 не важны.

Вот скриншот, показывающий проблему: http://img155.imageshack.us/img155/1504/layoutissue.jpg

Реальная страница довольно сложна и сгенерирована с помощью JS, поэтому я не могу скопировать / вставить ее здесь. Я не знаю, какой другой CSS написать, чтобы дать людям идею, но если кому-то интересно, я отправлю вам свой IP, чтобы вы могли посмотреть.

Буду благодарен за любые предложения.

Ответы [ 6 ]

1 голос
/ 29 июня 2010

Удаляя недопустимый HTML, я могу продублировать проблему, так что это явно означает, что недопустимый HTML не является причиной:)

Кажется, это проблема с элементами в стиле inline-block с переполнением, установленным вничего, кроме видимого.Посмотрите на этот простой пример:

<html>
<head>
<style>
span
{
    display: inline-block;
    border: 1px solid red;
    margin: 0;
    padding: 0;
    width: 50px;
}
#b
{
    overflow-x: hidden;
}

</style>
</head>

<body>
<span id="a">test</span>

<span id="b">test2test2test2test2test2test2test2test2test2test2test2test2test2</span>
</body>

</html>

Второй диапазон показывает, как вы описываете.Однако, если вы измените эти промежутки на display: block и поместите их, они будут выровнены вертикально.

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

0 голосов
/ 23 июня 2013

bugzilla уже знает об этой ошибке, чтобы исправить ее, просто установите vertical-align: top; к пролетам или дивам, с уважением

0 голосов
/ 29 июня 2010

Если вы дадите абзацу стиль overflow-x: hidden, то есть на ширину влияет переполнение?

0 голосов
/ 29 июня 2010

Ну, даже без примера HTML / CSS, который повторяет проблему, будет очень трудно решить эту проблему, но одна проблема, которая может быть проблемой, заключается в том, что ваш HTML здесь недопустим.A <label> не допускает элементов уровня блока внутри него, как <iframe>, так и <p>.Различные браузеры могут не иметь согласованной обработки этой ситуации, потому что они не должны соответствовать спецификации.

0 голосов
/ 29 июня 2010

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

вам необходимо проверить поля, отступы, высоту строки и размеры шрифтов.Ошибка очень полезна в этих случаях, чтобы увидеть, что происходит и откуда появляется дополнительное пространство, так как вы можете включать / выключать свойства CSS.

Надеюсь, это поможет.PS вы можете прислать мне IP, я посмотрю ...

0 голосов
/ 29 июня 2010

Скорее всего, размер метки или какого-либо другого элемента меньше, чем общий размер элементов внутри нее, а добавление overflow: hidden предотвращает растяжение, чтобы вместить его более крупные дочерние элементы, а скорее остается на заранее определенном размере. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...