Подтвердить что ты не робот

Как центрировать изображение, которое больше, чем окно браузера (а не фоновое изображение)

Как я могу центрировать большое изображение в окне браузера, чтобы, если он шире окна, он все равно будет центрирован?

Смотрите: http://carolineelisa.com/rob/

Я не хотел просто сделать изображение фоновым изображением, так как оно динамически изменяется на изображения разных размеров, и я хочу, чтобы прокручивать вниз, чтобы увидеть их на правильной высоте.

Однако я открыт для создания фонового изображения, если высота контейнера div может меняться в зависимости от высоты фонового изображения?

Я не против иметь горизонтальную полосу прокрутки, но предпочел бы не делать этого.

Спасибо!

4b9b3361

Ответ 1

<div style="background:url(/path/to/image.png) center top; width:100%; overflow:hidden">
  <img src="/path/to/image.png" style="visibility: hidden;">
</div>

Это... возможно, приведет вас туда, где вы хотите.

и пример: fiddle и источник

Изменить

исправлено: fiddle и источник

Ответ 2

Почти два года спустя у меня была аналогичная проблема и я решил решить ее только с помощью html/css (используя только javascript для изменения изображений).

Наконец, мне пришлось разрешить в общей сложности три элемента для достижения всегда центрированных изображений (изображения как меньше, так и больше, чем элемент страницы/обертки).

Конструкция html

<div class="container">
    <div class="align"><img src="http://thecustomizewindows.com/wp-content/uploads/2011/11/bulb-wallpaper.jpg" /></div>
</div>

css:

div.container
{
    position: relative;
    width: 100%;
    overflow: hidden;
}
div.container div.align
{
    position: relative;
    width: 10000px;
    left: 50%;
    margin: 0 0 0 -5000px;
    text-align: center;
}

В то время как мне не очень нравится работать с безумно растянутыми элементами, это кажется очень эффективным.

Здесь скрипка: http://jsfiddle.net/NjJ3G/3/

Ответ 3

Честно говоря, лучший способ сделать это - фоновое изображение. Поскольку вы собираетесь использовать javascript для изменения изображения, вы можете пойти дальше и добавить немного больше, чтобы изменить высоту. Для этого загрузите изображение в невидимый div (style="position:absolute; top:-3000px; left:-3000px;") в дополнение к установке его в качестве фонового изображения. Затем вы можете использовать javascript для получения высоты от тега img внутри невидимого div.

Ответ 4

Лучшее решение с тегом img неизвестных измерений:

.bg-fluid {
    position:absolute;
    left:-1000%;right:-1000%; // horizontal center
    top:-1000%; bottom:-1000%; // vertical center
    margin: auto;
}

вы также можете сделать его отзывчивым:

.bg-fluid-responsive {
    min-width: 100%;
    min-height: 100%;
}

и тег img:

<img class="bg-fluid bg-fluid-responsive" src"..."/>

нет необходимости в контейнерах.

Примечание: сохраняется соотношение сторон .