пустой промежуток в IE занимает место - PullRequest
0 голосов
/ 29 июня 2011

при проверке элемента я заметил следующий пустой интервал

<span class="x-tree-node-indent"></span>

, чтобы он не занимал никакого места, я установил следующий стиль

span.x-tree-node-indent
{
    left:0px;
    width:0px;
    height:0px;
    margin:0px;
    padding:0px;
}

получил то, что хотел, даже без дополнительных стилей.Но в IE я все еще вижу блок пространства там.Какие-либо причины?и как это исправить?

Ответы [ 4 ]

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

Как уже отмечалось, display: none приведет к тому, что элемент полностью выйдет из макета.видимость: скрытой не будет;то есть, если бы у вас был блок 20 на 20 пикселей, этот блок пространства продолжал бы занимать пространство, даже если он скрыт.

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

Было бы полезно узнать еще несколько пунктов - для того, чтобы кто-нибудь мог ответить на этот вопрос не только на дисплее: ни один (это сработает, если все, что вы хотите сделать, это вынуть его из пространства).

  1. На какую версию IE вы ссылаетесь?Ни в коем случае не все одинаковые.
  2. Какова цель диапазона, если на самом деле вы не хотите, чтобы он был видимым?
  3. Какой тип документа является вашим HTML?В зависимости от того, для IE может быть задействован режим причуд, у вас может быть возможность использовать определенный метатег IE, указав ему отображать в режиме IE7 и т. Д.

Для номера два, если вы простожелая иметь отступ, как следует из названия, вы можете использовать текстовый отступ CSS: 10px (или любой другой).Если у вас есть другие причины для этого, есть такие параметры, как установка полей, заполнение области содержания.Другими словами, семантически, почему этот промежуток существует, когда нет видимости и так далее?Что приводит к тому, что вы пробовали другие элементы и т. Д.

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

Я испытал то, что вы описываете в IE6, 7 и 8.

Вы также должны установить line-height на ноль. Обычно это работает для встроенных элементов.

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

Я не могу воспроизвести это здесь.Вот мой код:

span.x-tree-node-indent
{    
    left: 0px;    
    width: 0px;    
    height: 0px;    
    margin: 0px;    
    padding: 0px;
}

<BODY>
<P>left<SPAN class="x-tree-node-indent"></SPAN>right</P>
</BODY>

Я вижу одно слово «влево» без пробела в моем IE9.атрибуты display:none и visibility:hidden.

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

Вы пробовали display:none?

span.x-tree-node-indent {
    display: none;
}

Это должно работать везде, но сейчас я не могу проверить IE, display:none:

Это значение приводит к тому, что элемент не появляется в структуре форматирования (т. Е. В визуальных средах элемент не создает блоков и не влияет на макет). Элементы-потомки также не генерируют никаких блоков; элемент и его содержимое полностью удаляются из структуры форматирования . Это поведение нельзя изменить, установив свойство display для потомков.

Обратите внимание, что отображение «none» не создает невидимое поле; он вообще не создает ящика . [...]

Акцент мой.

Вот краткий пример, если вы хотите проверить сами: http://jsfiddle.net/ambiguous/ZrzWz/

...