#html #css #positioning #css-position
#HTML #css #позиционирование #css-позиция
Вопрос:
У меня возникли проблемы с абсолютным позиционированием изображения в относительном расположении div. Изображение должно быть центрировано внутри div. Для этого я использую следующий css
div
{
position: relative;
top: 0px;
left: 0px;
}
div img
{
margin-top: -10px; /*img width is 20px*/
position: absolute;
top: 50%;
}
Это отлично работает во всех браузерах, кроме Firefox.
Есть ли какое-либо обходное решение для этого? Потому что я уже много искал это, и я не могу что-то понять.
PS: Не говорите мне использовать высоту строки. Потому что рядом с изображением также есть текст. Так что этот вариант не будет работать для меня.
Ответ №1:
Для изображения, которое вы говорите top: 50%
. 50% от чего? Оно должно составлять 50% от родительского элемента. На что установлен родительский элемент? Если для него ничего не установлено, в этом и заключается проблема.
Комментарии:
1. О чем ты говоришь? 50% от родительского элемента, который является div!
2. @McTrafik — Да, но для этого div ничего не установлено. Итак, нет ссылки на 50% и, следовательно, вопрос, 50% от чего?
Ответ №2:
почему бы не сделать что-то вроде этого
div
{
position: relative;
top: 0;
left: 0;
}
div img
{
position: relative;
top:25%;
left:50%;
}
relative
Для изображения означает 25%
сверху div
и 50%
для левой стороны.
Комментарии:
1. Я пробовал это, но
top: 25%
ничего не делает. левый работает, но мне нужно особое позиционирование сверху2. Попробуйте указать
div
определенную высоту. Т.Е. Размер изображения отступ / поле должен работать
Ответ №3:
Попробуйте поместить его в качестве фонового изображения, если вы просто хотите, чтобы изображение было там.
div
{
background-image: url('image.jpg');
background-position: center;
background-repeat: no-repeat;
margin: 0px auto;
position: relative;
width: Xpx;
height: Xpx;
top: 0px;
left: 0px;
vertical-align: middle;
}
а для текста используйте div внутри и позиционируйте его, используя поля, отступы или что-то еще.
Ответ №4:
Как насчет автоматических полей:
div img
{
margin-top: -10px; /*img with is 20px*/
display: block;
position: relative;
margin-left: auto;
margin-right: auto;
}
Это работает для меня в firefox 7
Комментарии:
1. Для этого вам понадобятся display: block и position: absolute, но автоматические поля хороши для центрирования.
2. горизонтальное поле будет работать. Но мне нужно выровнять изображение по вертикали
3. Возможно, я неправильно понял, но для выравнивания изображения по вертикали вы можете использовать ‘margin-top: 25%;’ в дополнение к вышесказанному. Но вам придется установить номер вручную — авто, похоже, не работает.
Ответ №5:
Это хорошая статья на эту тему из CSS-Tricks:
http://css-tricks.com/snippets/css/absolute-center-vertical-horizontal-an-image/
Ответ №6:
Протестируйте это:
div {
position: relative;
top: 0px;
left: 0px;
background: red;
width:500px;
}
div img {
margin-top: -10px;
//position: absolute; /*get it out*/
display: block; /*Important*/
margin: auto; /*Important*/
top: 50%;
}