Изображение внутри div имеет дополнительное пространство под изображением
Почему в следующем коде высота div
больше высоты img
? Между изображением есть пробел, но это не похоже на отступы.
Каков промежуток или дополнительное пространство под изображением?
#wrapper {
border: 1px solid red;
width:200px;
}
img {
width:200px;
}
<div id="wrapper">
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>
Ответы
Ответ 1
По умолчанию изображение отображается в строке, как буква.
Он сидит на той же линии, на которой сидят a, b, c и d.
Существует пробел ниже этой строки для descenders вы найдете на буквы, как f, j, p и q.
Вы можете отрегулировать vertical-align
изображения, чтобы поместить его в другом месте (например, в middle
) или изменить display
чтобы оно не было встроенным.
Ответ 2
Другой вариант, предложенный здесь, устанавливает стиль изображения как style="display: block;"
Ответ 3
Быстрое исправление:
Чтобы удалить пробел под изображением, вы можете:
- Задайте свойство vertical-align изображения
vertical-align: bottom;
vertical-align: top;
или vertical-align: middle;
- Задайте для свойства отображения изображения значение
display:block;
Для демонстрации в реальном времени см. следующий код:
#vAlign img {
vertical-align :bottom;
}
#block img{
display:block;
}
div {border: 1px solid red;width:100px;}
img {width:100px;}
<p>No fix:</p>
<div><img src="http://i.imgur.com/RECDV24.jpg" /></div>
<p>With vertical-align:bottom; on image:</p>
<div id="vAlign"><img src="http://i.imgur.com/RECDV24.jpg" /></div>
<p>With display:block; on image:</p>
<div id="block"><img src="http://i.imgur.com/RECDV24.jpg" /></div>
Ответ 4
Можно также аннулировать высоту родительской строки:
#wrapper {
line-height: 0;
}
Все исправления: http://jsfiddle.net/FaPFv/
Ответ 5
Все, что вам нужно сделать, это назначить это свойство:
img {
display: block;
}
Изображения по умолчанию имеют это свойство:
img {
display: inline;
}
Ответ 6
Вы можете использовать несколько методов для этой проблемы, например
-
Использование line-height
#wrapper { line-height: 0px; }
-
Используя display: flex
#wrapper { display: flex; }
#wrapper { display: inline-flex; }
-
Используя display:
block
, table
, flex
и inherit
#wrapper img { display: block; }
#wrapper img { display: table; }
#wrapper img { display: flex; }
#wrapper img { display: inherit; }
Ответ 7
Я нашел, что он отлично работает с использованием display: block; на изображении и вертикально-выровнять: верх; по тексту.
.imagebox {
width:200px;
float:left;
height:88px;
position:relative;
background-color: #999;
}
.container {
width:600px;
height:176px;
background-color: #666;
position:relative;
overflow:hidden;
}
.text {
color: #000;
font-size: 11px;
font-family: robotomeduim, sans-serif;
vertical-align:top;
}
.imagebox img{ display:block;}
<div class="container">
<div class="imagebox">
<img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
</div>
<div class="imagebox">
<img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
</div>
<div class="imagebox">
<img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
</div>
<div class="imagebox">
<img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
</div>
<div class="imagebox">
<img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
</div>
<div class="imagebox">
<img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
</div>
</div>
Ответ 8
Я использовал line-height:0
, и он отлично работает для меня.
Ответ 9
Его можно также зафиксировать, назначив высоту родительскому div img
и наследуя высоту для img
. Выполните следующие действия:
#wrapper {
border: 1px solid red;
width: 200px;
height: 140px;
}
img {
width:200px;
height: inherit;
}
Ответ 10
Добавьте атрибуты CSS в div
#wrapper {
line-height: 0;
}
Ответ 11
Я просто добавил float:left
в div, и он работал