Если ваш HTML выглядит следующим образом:
<div id='wrapper'>
<img src="http://i.imgur.com/s0Gvf.png" />
</div>
Тогда вы можете центрировать изображение по вертикали и горизонтали внутри элемента #wrapper, используя следующий CSS:
html, body {
height:100%;
}
#wrapper {
position:relative;
width: 100%;
height: 100%;
overflow: hidden;
}
#wrapper img {
position:absolute;
left:50%;
top:50%;
margin-left:-1000px;
margin-top:-175px;
}
Это установит#wrapper для ширины и высоты окна браузера.overflow:hidden;
сделает что-то слишком большое внутри него скрытым.#wrapper img
устанавливает изображение для выравнивания по вертикали и горизонтали с родительским контейнером.
Это делается путем установки его top
и left
позиций на 50%
, а затем смещения этих позиций на половину ширины изображенийи высота.Итак, margin-left
- это - (image_width/2) px
и т. Д.
Редактировать:
Что касается галереи / слайдера, пожалуйста, проверьте обновленную версию вашего jsFiddle: http://jsfiddle.net/vMqxa/2/
Чтобы увидеть конечный результат, посетите эту страницу: http://jsfiddle.net/vMqxa/2/show/light/
Что именно здесь происходит ...
Для начала есть #wrapper_wrapper
(плохое имя, я знаю ..) который является дивиденцией ширины и высоты на 100%, поэтому он заполнит весь экран.
В пределах этого #wrapper
, который будет содержать все изображения.Это то, что будет прокручиваться влево и вправо для отображения правильного изображения, поэтому оно должно быть таким же широким, как и все изображения внутри него.Это означает, что если у нас есть 4 изображения, то ширина #wrapper
будет равна 4 * ширины экрана.Это рассчитывается в javascript с использованием:
$("#wrapper").width(window.innerWidth * $(".image_wrapper").length);
Далее идет .image_wrapper
, который является div, используемый для хранения каждого изображения.Ширина этого устанавливается на window.innerWidth
с использованием JavaScript.Он также имеет overflow:hidden
, поэтому все, что внутри него слишком большое, отображаться не будет.
Наконец, у нас есть изображения .image_wrapper img
, которые позиционируются с использованием absolute
позиционирования.Они установлены на left:50%; top:50%;
, а затем, используя javascript, мы вычисляем смещение, необходимое для их идеального центрирования.Это делается с помощью:
$(".image_wrapper img").each(function(){
$(this).css({
marginLeft: "-" + $(this).width()/2 + "px",
marginTop: "-" + $(this).height()/2 + "px"
});
});
Все это объединено в функцию, которая вызывается при загрузке страницы, а также при изменении размера окна.
Для прокрутки влево и вправо мы используем:
$("#next").click(function(){
var currentMargin = parseInt($(".image_wrapper").eq(0).css("marginLeft").replace("px","")),
newMargin = currentMargin - window.innerWidth;
$(".image_wrapper").eq(0).animate({
marginLeft: newMargin + "px"
});
});
$("#prev").click(function(){
var currentMargin = parseInt($(".image_wrapper").eq(0).css("marginLeft").replace("px","")),
newMargin = currentMargin + window.innerWidth;
$(".image_wrapper").eq(0).animate({
marginLeft: newMargin + "px"
});
});
Примечание: это не остановит прокрутку, если нет ничего влево или вправо.
Снова,посмотрите полный код на jsFiddle: http://jsfiddle.net/vMqxa/2/