Я правильно сделал стек divs, но дети не центрированы. В частности, я работаю с холстом и другим div, который функционирует как мой входной слой. У меня есть слой ввода поверх холста и занимает весь экран, в то время как я хочу, чтобы холст был центрирован (слой ввода также может быть центрирован, но он занимает весь экран, так что он не должен сильно меняться. вероятно, полезно отметить, что причина, по которой я не знаю высот и ширины, заключается в том, что это отзывчивый сайт. Прямой javascript jquery, css3, html5 будет действительным решением, если оно будет сосредоточено в конце.
TL;DR: div container → (div input && canvas) parent → (child && child) делает холст неизвестной высоты и ширины на странице
EDIT: я хочу, чтобы синеватовое поле (холст) было сосредоточено на странице. http://jsfiddle.net/t2fL9/4/ code block to let me put jsfiddle link?
Обновите JS следующим образом:
var $wrapper = $('#wrapper'),
$canvas = $('#canvas'),
canvas_width = $canvas.width(),
canvas_height = $canvas.height(),
$window = $(window);
$window.resize(function(){
$wrapper.css({
width: $window.innerWidth(),
height: $window.innerHeight()
});
$canvas.css({
marginLeft: -canvas_width/2,
marginTop: -canvas_height/2
})
}).trigger('resize');
Если вы можете жить только с поддержкой IE9+, вы можете использовать преобразование CSS3 для достижения этого:
position:absolute;
top: 50%;
left: 50%;
-ms-transform: translate(-50%,-50%);
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
Кредит для этого ИМО довольно изящный трюк идет по адресу: http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
Обновленная скрипка: http://jsfiddle.net/t2fL9/5/
Изменение размера скрипта: http://jsfiddle.net/t2fL9/11/
Обратите внимание, что количество javascript, необходимое для достижения центрирования, значительно меньше, чем в принятом ответе.
Это должно сделать это за вас. используя холст в качестве примера.
CSS
#canvas{
position: absolute;
top:50%;
left:50%;
}
Javascript:
var canvas = document.getElementById('canvas'),
canWidth = canvas.width,
canHeight = canvas.height;
canvas.style.marginLeft = canWidth/2*-1;+"px"
canvas.style.marginTop = canHeight/2*-1+"px";