Следование не работает. Какую ошибку я делаю. <html> <head> <style> #over img {display: block; поле слева: авто; поле справа: авто; } </ style> </ head> <body> <div id = "over" style = "position: absolute; ширина: 100%; высота: 100%"> <img src = " img8a.flixcart.com/image/ таблетка / f / k / t /… "> </ div> </ body> </ html>
nizam.sp
1
Если мы не используем display: blockпо умолчанию, это в display: inlineсоответствии с w3schools.com/cssref/pr_class_display.asp . Почему мы должны использовать блок? Я работал на меня, но не уверен, почему блок будет центрировать IMG и встроенный не будет.
user3731622
потому что inline не перемещаются по линии, это действительно так. поэтому маржа авто неэффективна.
Очень короткое и простое решение, но, похоже, оно работает только с фиксированной, непроцентной шириной и высотой. Он работает с поплавками, хотя +1 для этого. - jsfiddle.net/2s2nY/2
магнетронни
1
но это только вертикальное выравнивание, а не горизонтальное право?
V-SHY
1
Это не будет работать, если ширина изображения больше ширины div.
Давуз
5
Если мы уберем display: table-cell; это работает идеально.
Ахесанали Сутар
103
Это также можно сделать с помощью макета Flexbox:
СТАТИЧЕСКИЙ РАЗМЕР
.parent {display: flex;height:300px;/* Or whatever */background-color:#000;}.child {width:100px;/* Or whatever */height:100px;/* Or whatever */margin: auto;/* Magic! */}
В статическом размере нет необходимости в ширине и высоте для ребенка (по крайней мере, в моей версии Firefox).
Родриго
91
Мне кажется, вы также хотели, чтобы это изображение было вертикально центрировано внутри контейнера. (Я не видел никакого ответа, который обеспечил бы это)
*{padding:0;margin:0;}#over
{position:absolute;width:100%;height:100%;text-align: center;/*handles the horizontal centering*/}/*handles the vertical centering*/.Centerer
{display: inline-block;height:100%;vertical-align: middle;}.Centered
{display: inline-block;vertical-align: middle;}
Примечание: это решение хорошо для выравнивания любого элемента внутри любого элемента. для IE7, при применении .Centeredкласса к элементам блока, вам придется использовать другой прием, чтобы получить inline-blockработу. (это потому, что IE6 / IE7 не очень хорошо работают со встроенным блоком на элементах блока)
@ deathlock это хорошо известно. но я предназначался для старых браузеров IE (которые не поддерживали псевдоэлементы).
Avrahamcool
1
Это не так, но HTML должен использоваться только для структуры, а не для представления. Эта работа оставлена для CSS, отсюда и псевдоэлемент.
Deathlock
1
Что вы имеете в виду "Не нарушая поток документов (без плавающих или абсолютного позиционирования)" ?? Что за #over { position:absolute; width:100%; height:100%;?
Родриго
1
@Rodrigo действительно, если вам не нужно ориентироваться на старые браузеры, этот flexbox - рекомендуемый подход.
Мне также пришлось добавить родительский CSS, но ваш код работал отлично! положение: относительное; ширина: 100%; плыть налево; переполнение: скрытое; минимальная высота: 189 пикселей;
user2593040 9.12.16
10
По сути, установка правого и левого полей на авто приведет к выравниванию изображения по центру.
действительно нет пробелов между ними (как видно здесь).
Просто базовый, чтобы избежать этих (присущих встроенному блоку) промежутков между ними. Эти пробелы можно увидеть между каждыми двумя словами, которые я пишу прямо сейчас! :-) Так что .. надеюсь, это поможет некоторым из вас.
Я перепробовал много подходов, но только этот работает для нескольких встроенных элементов внутри контейнера div. Вот код для выравнивания всего в div в середине.
CSS
.divContainer
{
vertical-align: middle;
text-align: center;<!--If you want horizontal center alignment -->}.divContainer >*{
vertical-align: middle;}
Люблю css3! Спасибо. Тем не менее, хорошо отметить, что это будет работать только в современных браузерах (кроме IE). Все остальные браузеры не будут иметь никакого эффекта.
Нил
2
многие ответы предлагают использовать, margin:0 autoно это работает только тогда, когда элемент, который вы пытаетесь сделать центрированным, не плавает слева или справа, то есть floatатрибут css не установлен. Для этого примените displayатрибут к, table-cellа затем примените поля слева и справа к авто, чтобы ваш стиль выглядел следующим образомstyle="display:table-cell;margin:0 auto;"
Это сработало для меня, когда вы должны выровнять изображение по центру, и ваш родительский div с изображением покрывает весь экран. т.е. высота: 100% и ширина: 100%
Отмеченный ответ для этого не выровняет изображение по вертикали. Подходящим решением для современных браузеров является flexbox. Гибкий контейнер можно настроить для выравнивания его элементов как по горизонтали, так и по вертикали.
Это решение отвечает на вопрос и работает, в отличие от отмеченного ответа. Возможно, избиратель мог детализировать свое решение понизить голос?
WDuffy
6
Из очереди просмотра : Могу ли я попросить вас добавить контекст вокруг вашего исходного кода. Ответы только на код трудно понять. Это поможет вам и будущим читателям, если вы сможете добавить больше информации в свой пост.
RBT
1
Это не оправдывает отрицание. Ответ технически правильный и поможет будущим читателям. Я обновил тело ответа, чтобы соблюдать правила внутреннего распорядка, но, возможно, основная команда должна реализовать более прямое решение, поскольку идентификация ответов только с помощью кода является тривиальной задачей.
Простой способ - создать отдельные стили как для div, так и для изображения, а затем расположить их независимо друг от друга. Скажем, если я хочу установить мое положение изображения на 50%, то у меня будет код, который выглядит следующим образом ...
Просто скажите мне, работает ли он со всеми видами браузеров, хотя это базовая вещь, которую должен поддерживать каждый браузер (в противном случае не называйте это браузером)
Ответы:
JSFiddle
источник
display: block;
была моя ловушка TnXdisplay: block
по умолчанию, это вdisplay: inline
соответствии с w3schools.com/cssref/pr_class_display.asp . Почему мы должны использовать блок? Я работал на меня, но не уверен, почему блок будет центрировать IMG и встроенный не будет.источник
Это также можно сделать с помощью макета Flexbox:
СТАТИЧЕСКИЙ РАЗМЕР
ДИНАМИЧЕСКИЙ РАЗМЕР
В этой статье я нашел пример , который отлично объясняет, как использовать макет.
источник
Мне кажется, вы также хотели, чтобы это изображение было вертикально центрировано внутри контейнера. (Я не видел никакого ответа, который обеспечил бы это)
Рабочая скрипка:
HTML
CSS
Примечание: это решение хорошо для выравнивания любого элемента внутри любого элемента. для IE7, при применении
.Centered
класса к элементам блока, вам придется использовать другой прием, чтобы получитьinline-block
работу. (это потому, что IE6 / IE7 не очень хорошо работают со встроенным блоком на элементах блока)источник
span
, чтобы иметь дополнительные , вы можете использовать псевдоэлемент:before
: jsfiddle.net/xaliber/cj6zhtp0#over { position:absolute; width:100%; height:100%;
?источник
Вы можете сделать это легко с помощью свойства display: flex css
источник
источник
У меня все еще были некоторые проблемы с другим решением, представленным здесь. Наконец это сработало лучше для меня:
CSS3:
Вы можете прочитать больше об этом подходе на этой странице .
источник
По сути, установка правого и левого полей на авто приведет к выравниванию изображения по центру.
источник
Это был бы более простой подход
источник
Ответ Daaawx работает, но я думаю, что было бы чище, если бы мы исключили встроенный CSS.
источник
установка img для отображения: inline-block, в то время как для улучшенного div установлено значение text-align: center тоже сделает эту работу
РЕДАКТИРОВАТЬ: для тех, кто играет с дисплеем: inline-block >>> не забывайте, что, например, два div как
действительно нет пробелов между ними (как видно здесь).
Просто базовый, чтобы избежать этих (присущих встроенному блоку) промежутков между ними. Эти пробелы можно увидеть между каждыми двумя словами, которые я пишу прямо сейчас! :-) Так что .. надеюсь, это поможет некоторым из вас.
источник
ПРОСТО. 2018. FlexBox. Чтобы проверить поддержку браузера - могу ли я использовать
минимальное решение:
Чтобы получить максимально широкую поддержку браузера:
источник
Я перепробовал много подходов, но только этот работает для нескольких встроенных элементов внутри контейнера div. Вот код для выравнивания всего в div в середине.
CSS
HTML
Пример кода здесь: https://jsfiddle.net/yogendrasinh/2vq0c68m/
источник
CSS-файл
источник
Попробуйте этот минимальный код:
И CSS:
источник
Ну, мы в 2016 году ... почему бы не использовать flexbox? Это также отзывчиво. Наслаждаться.
источник
многие ответы предлагают использовать,
margin:0 auto
но это работает только тогда, когда элемент, который вы пытаетесь сделать центрированным, не плавает слева или справа, то естьfloat
атрибут css не установлен. Для этого применитеdisplay
атрибут к,table-cell
а затем примените поля слева и справа к авто, чтобы ваш стиль выглядел следующим образомstyle="display:table-cell;margin:0 auto;"
источник
источник
HTML:
CSS:
источник
Для центра горизонтально Просто положите
Другой метод:
Для центра по вертикали Просто положите:
источник
Это сработало для меня:
источник
это помогло мне.
'Примечание: в этом случае нет класса CSS, связанного с' BrandImage '
CSS:
источник
Это сработало для меня, когда вы должны выровнять изображение по центру, и ваш родительский div с изображением покрывает весь экран. т.е. высота: 100% и ширина: 100%
источник
Используйте позиционирование. Следующее сработало для меня ...
С увеличением до центра изображения (изображение заполняет div):
Без увеличения до центра изображения (изображение не заполняет div):
источник
Отмеченный ответ для этого не выровняет изображение по вертикали. Подходящим решением для современных браузеров является flexbox. Гибкий контейнер можно настроить для выравнивания его элементов как по горизонтали, так и по вертикали.
источник
Вы можете взглянуть на это решение:
Центрирование изображения по горизонтали и вертикали
источник
Простой способ - создать отдельные стили как для div, так и для изображения, а затем расположить их независимо друг от друга. Скажем, если я хочу установить мое положение изображения на 50%, то у меня будет код, который выглядит следующим образом ...
источник
Измените значение высоты в соответствии с вашими потребностями.
источник
Это должно работать.
ВАЖНО ДЛЯ ТЕСТИРОВАНИЯ: Для запуска фрагмента кода нажмите левую кнопку Фрагмент кода RUN , а затем правую ссылку Полная страница
источник