2012-06-04 3 views
0

Я пытаюсь получить размеры видового экрана, а затем заполнить его квадратами, чтобы они идеально охватывали весь видовой экран. Должен быть лучший способ, чем мой текущий код (ниже). Возможно, есть способ найти легко делимое число для знаменателя этой строки var boxWidthHeight = wrapperArea/30000;?Заполнить видовое окно с квадратами

$(document).ready(function() { 
    var wrapperWidth = $(window).width(); 
    var wrapperHeight = $(window).height(); 
    $('.wrapper').css('width', wrapperWidth); 
    $('.wrapper').css('height', wrapperHeight); 
    var wrapperArea = wrapperWidth * wrapperHeight; 
    var boxWidthHeight = wrapperArea/30000; 
    var boxWidthHeight = parseInt(boxWidthHeight); 
    var boxArea = boxWidthHeight * boxWidthHeight; 
    var boxCount = wrapperArea/boxArea; 
    for(var i = 0; i < boxCount; i++) { 
     $('.wrapper').append('<div class="box"></div>'); 
    } 
    $(".box").css({ width: boxWidthHeight, height: boxWidthHeight }); 
}); 
+0

Что должно произойти, когда пользователь изменяет размер браузера? –

+0

Какими размерами должны быть боксы. 1px на 1px? – iambriansreed

+0

@iambriansreed Нет, больше. 40px by 40px – 585connor

ответ

1

http://jsfiddle.net/iambriansreed/nwPy5/

JavaScript

$(function() { 

    var box_size = 20, 
     wrapper = $('.wrapper'), 
     x = Math.round(wrapper.width()/box_size) + 
     (wrapper.width()%box_size ? 1 : 0), 
     y = Math.round(wrapper.height()/box_size) + 
     (wrapper.height()%box_size ? 1 : 0), 
     html = ''; 

    for(var i = 0; i <= x*y; i++) 
     html += '<div class="box"></div>'; 

    wrapper.hide().html('<div class="inner">'+html+'</div>'); 

    $('.inner', wrapper).css({'width' : x*box_size , 'height' : y*box_size , 'overflow': 'visible'}); 

    $('.box', wrapper).css({ 
     'background': '#ccc', 
     'width': box_size - 2, 
     'height': box_size - 2, 
     'border': '#fff solid 1px', 
     'float':'left', 
     'clear': 'none' 
    }); 

    wrapper.show(); 

});​ 

HTML

<div class="wrapper"></div>​ 

CSS

.wrapper { 
    position: absolute; 
    top: 0; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    background: #333; 
    overflow: hidden; 
} 
+0

, который очень хорошо покрывает область просмотра, но в моем случае использования щелчок на каждом из них .box исчезает, что .box прочь, чтобы открыть полноэкранное фоновое изображение. С вашим решением это фоновое изображение больше не видно. Спасибо хоть! – 585connor

+0

@ 585connor Ничто в вашем вопросе не упоминает о событии на каждой коробке. Вы просили альтернативы кодирования. Я предоставил один. – iambriansreed

+0

Я знаю, я спрашиваю больше о том, что происходит с фоновым изображением. – 585connor

Смежные вопросы