Вы также можете использовать HTML5 replaceState, если хотите изменить URL-адрес, но не хотите добавлять запись в историю браузера:
if (window.history.replaceState) {/ / запрещает браузеру сохранять историю с каждым изменением: window.history.replaceState (указано, название, URL); }
Это сломает функциональность кнопки «Назад». Это может потребоваться в некоторых случаях, например, в галерее изображений (где вы хотите, чтобы обратная кнопка возвращалась обратно на индексную страницу галереи, вместо того чтобы перемещаться по каждому просматриваемому изображению), предоставляя каждому изображению свой собственный уникальный URL-адрес.
В этом случае ваши div
элементы были изменены с элементов уровня block
на элементы inline
. Типичной характеристикой элементов inline
является то, что они соблюдают пробелы в разметке. Это объясняет, почему между элементами создается промежуток пробела пространства. (пример)
Существует несколько решений, которые могут быть использованы для решения этой проблемы.
Пример 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>
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
.
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
автоматически разрешает белое пространство, как говорят все. Самое простое решение - просто добавить float: left; в контейнерную декларацию. Также вы не можете использовать два идентификатора на одной странице. Вместо этого используйте классы.
.container {
display: inline-block;
position: relative;
background: rgb(255, 100, 0);
margin: 0;
width: 40%;
height: 100px;
float: left;
}
Использование inline-block
позволяет использовать пробел в вашем HTML, обычно это эквивалентно .25em (или 4px).
Вы можете либо прокомментировать белое пространство, либо более общее решение, - установить родительский font-size
в 0 и вернуть его обратно к требуемому размеру элементов встроенного блока.
Вам нужно добавить
#container
{
display:inline-block;
position:relative;
background:rgb(255,100,0);
margin:0px;
width:40%;
height:100px;
margin-right:-4px;
}
, потому что всякий раз, когда вы пишете display:inline-block
, требуется дополнительный margin-right:4px
. Итак, вам нужно удалить его.
просто добавьте границу: 2px solid #e60000
; к вашему 2-му тегу div.
Определенно работает
#Div2Id {
border: 2px solid #e60000; --> color is your preference
}
Нашел решение, не связанное с 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;
}
word-spacing
также может быть «исправлена». это, хотя отрицательные интервалы между словами и отрицательная маржа являются недопустимыми решениями, поскольку интервал зависит от вашего браузера и размера шрифта (как показывает последний пример Джоша), так что это будет первое, что сломается, если вы внесете какие-либо изменения. – colllin 20 October 2014 в 03:26display: flex
- лучшее решение в наши дни. – Alan Shortis 13 November 2015 в 15:14