Чистое решение CSS
Требуется одна дополнительная оболочка (протестировано в FireFox, IE8, IE7):
Улучшенный ответ
Возникла проблема с исходным ответом (ниже).Если изображение больше контейнера, в котором центрируется outer
с его автоматическими полями, оно обрезает изображение слева и создает чрезмерное пространство справа, , как показывает эта скрипка .
Мы можем решить эту проблему, поместив inner
вправо и затем отцентрировав от вправо.Это по-прежнему усекает img
со страницы слева, но делает это, явно толкая его таким образом, а затем центрируя его обратно, комбинация которого предотвращает горизонтальную прокрутку extra право. Теперь мы получаем столько правильной прокрутки, сколько нам нужно, чтобы увидеть правую часть изображения.
Пример скрипки (Границы в скрипке предназначены только для демонстрации.)
Essential CSS
div.outer {
width: 300px; /* some width amount needed */
margin: 0 auto;
overflow: visible;
}
div.inner {
position:relative;
float: right; /* this was added and display removed */
right: 50%;
}
div.inner img {
position: relative;
right:-50%; /* this was changed from "left" in original */
}
Если вы хотите нет прокрутка вправо для широких изображений
Затем, используя вышеизложенное, также установите любой элемент обертки outer
(, как body
или третий обертка ), чтобы иметь overflow: hidden
.
Оригинальная идея (для истории)
Пример скрипки (Границы в скрипке только для демонстрации.)
HTML
<div class="outer">
<div class="inner">
<img src="/yourimage.png">
</div>
</div>
CSS
div.outer {
width: 300px; /* some width amount needed */
margin: 0 auto;
overflow: visible;
}
div.inner {
display: inline-block;
position:relative;
right: -50%;
}
div.inner img {
position: relative;
left:-50%;
}