Почему существует необъяснимый разрыв между этими элементами div встроенного блока?
у меня есть два встроенных блока div
элементы, которые являются одинаковыми, расположены рядом друг с другом. Однако, похоже, между двумя дивами есть таинственное пространство в 4 пикселя, несмотря на то, что поле установлено в 0. Нет родительских дивов, воздействующих на них - что происходит?
CSS
#container
{
display:inline-block;
position:relative;
background:rgb(255,100,0);
margin:0px;
width:40%;
height:100px;
}
вот как я хочу, чтобы это выглядело:
6 ответов:
в таком случае
div
элементы были изменены сblock
элементы уровняinline
элементы. Типичная характеристикаinline
элементы-это то, что они уважают пробелы в разметке. Это объясняет, почему пробел пространства между элементами. (пример)есть несколько решений, которые могут быть использованы для решения этой.
метод 1-Удалите пробелы из разметка
Пример 1 - прокомментируйте пробелы:(пример)
<div>text</div><!-- --><div>text</div><!-- --><div>text</div><!-- --><div>text</div><!-- --><div>text</div>
Пример 2 - удалить разрывы строк: (пример)
<div>text</div><div>text</div><div>text</div><div>text</div><div>text</div>
Пример 3 - закрыть часть тега на следующей строке (пример)
<div>text</div ><div>text</div ><div>text</div ><div>text</div ><div>text</div>
Пример 4 - закрыть весь тег на следующий линия:(пример)
<div>text </div><div>text </div><div>text </div><div>text </div><div>text </div>
Метод 2-сброс
font-size
так как пробелы между
inline
элементы определяетсяfont-size
, вы можете просто сброситьfont-size
до0
, и таким образом удалить пространство между элементами.просто набор
font-size: 0
на родительских элементах, а затем объявить новыйfont-size
для дочерних элементов. Это работает, как показано ниже (пример)#parent { font-size: 0; } #child { font-size: 16px; }
этот метод работает довольно хорошо, так как он не требует изменения разметки; однако он не работает, если дочерний элемент
font-size
объявляется с помощьюem
единицы. Поэтому я бы рекомендовал удалить пробелы из разметки, или альтернативно плавающие элементы и, таким образом, избегая пространства создается с помощьюinline
элементы.Метод 3-установить родителя элемент
display: flex
в некоторых случаях вы также можете установить
display
родительского элементаflex
. (пример)это эффективно удаляет пробелы между элементами поддерживаемые браузеры. Не забудьте добавить соответствующие префиксы поставщиков для дополнительной поддержки.
.parent { display: flex; } .parent > div { display: inline-block; padding: 1em; border: 2px solid #f00; }
.parent { display: flex; } .parent > div { display: inline-block; padding: 1em; border: 2px solid #f00; }
<div class="parent"> <div>text</div> <div>text</div> <div>text</div> <div>text</div> <div>text</div> </div>
стороны Примечания:
это невероятно ненадежно использовать отрицательные поля для удаления пробела между
inline
элементы. Пожалуйста, не используйте отрицательные поля, если есть другие, более оптимальные решения.
используя
inline-block
позволяет использовать пробел в вашем HTML, это обычно приравнивается .25em (или 4px).вы можете либо прокомментировать пробел, либо, более общее решение, установить родительский
font-size
до 0 и сброс его обратно до требуемого размера на элементах встроенного блока.
inline-block
автоматически устанавливает значение по умолчаниюwhite-space
как все говорят. (Это связано с элементами "встроенных" свойств, так же, как расстояние между словами в строке текста в вашемHTML
разметки. Вот почему удалениеwhite-space
в разметке тоже работает.) Самое простое исправление-это простоfloat
контейнер. (напр.float: left;
) на другой ноте, в каждомid
должно быть уникальным, то есть вы не можете использовать то же самоеid
дважды в одном и том жеHTML
документ. Вместо этого вы должны использовать классы, где вы можете использовать то же самоеclass
для нескольких элементов..container { display: inline-block; position: relative; background: rgb(255, 100, 0); margin: 0; width: 40%; height: 100px; float: left; }
найдено решение, не включающее Flex, потому что Flex не работает в старых браузерах. Пример:
.container { display:block; position:relative; height:150px; width:1024px; margin:0 auto; padding:0px; border:0px; background:#ececec; margin-bottom:10px; text-align:justify; box-sizing:border-box; white-space:nowrap; font-size:0pt; letter-spacing:-1em; } .cols { display:inline-block; position:relative; width:32%; height:100%; margin:0 auto; margin-right:2%; border:0px; background:lightgreen; box-sizing:border-box; padding:10px; font-size:10pt; letter-spacing:normal; } .cols:last-child { margin-right:0; }