2015-03-10 2 views
0

Мне удалось создать этот код, чтобы div.full_width_no_padding полностью заполнил ширину браузера. Он отлично работает в настольных браузерах, но он не работает на мобильных устройствах, таких как iphone, nexus и т. Д.Улучшите код, чтобы сделать div, чтобы заполнить ширину браузера

Есть ли другой способ сделать это?

JS

(function ($) { 
    $(document).ready(function() { 

    $(".full_width_no_padding").width($(window).width()); 
    var marginLeft = ($(window).width() - $('#region-content').width())/2; 
    $(".full_width_no_padding").css("margin-left", -marginLeft); 

    $(window).on('resize', function(){ 
     $(".full_width_no_padding").width($(window).width()); 
     var marginLeft = ($(window).width() - $('#region-content').width())/2; 
     $(".full_width_no_padding").css("margin-left", -marginLeft); 
    }); 

    }); 
}(jQuery)); 

HTML

<div id="region-content" style="width:960px"> 
    <div class="full_width_no_padding" >content here</div> 
</div> 
+0

у вас отсутствует двойная кавычка для атрибута стиля '# region-content' – Brewal

+0

@Brewal thanks, была опечатка. – JPashs

+0

Вы пытались подключить свой телефон к компьютеру и отладить его? Мне очень нравится делать это с моей nexus 5 и google хром. Это похоже на отладку вкладки в браузере, и вы видите изменения в прямом эфире на вашем телефоне. – Brewal

ответ

0

Вы должны позволить этот код выполнить после того, как DOM будет готов, если вы не сделаете этого код может быть выполнен до DOM готова и то изменения не будут применяться, потому что ваш код не может найти элементы в DOM.

В JQuery легко, вы просто обернуть свой код в $(function() { <code here> }); блоке, так что вы получите:

$(function() { 

    $(".full_width_no_padding").width($(window).width()); 
    var marginLeft = ($(window).width() - $('#region-content').width())/2; 
    $(".full_width_no_padding").css("margin-left", -marginLeft); 
    $(window).on('resize', function(){ 
     $(".full_width_no_padding").width($(window).width()); 
     var marginLeft = ($(window).width() - $('#region-content').width())/2; 
     $(".full_width_no_padding").css("margin-left", -marginLeft); 
    }); 

}); 

Для получения дополнительной информации см: https://api.jquery.com/ready/

+0

Как он мог работать под настольными браузерами без него? – Brewal

+0

Это не относится к браузеру, это состояние гонки, иногда DOM готов до выполнения Javascript, иногда это не так. Возможно, браузер его настольного компьютера может загрузить DOM достаточно быстро. – rednaw

+0

Код выполнен после того, как DOM готов, я просто забыл включить его в мой вопрос. Я обновил его. – JPashs

-3

Я объясню это очень просто шаги:

1- Удалить, что Javascript.

2- Добавьте это в CSS:

body,html{padding:0;margin:0;} 

3- Убедитесь, что все это родители width:100%.
Как правило, вы можете предположить, что все элементы уровня блока имеют (по умолчанию) width:100%.

4- Прибыль!

+0

В этом вопросе ширина родительского кажется, является ограничением – Brewal

+0

Родитель имеет 960px, я не могу изменить это, если бы это было 100%, то в чем смысл использования js для этого? – JPashs

+0

@JPashs Вы сказали: «Мне удалось создать этот код, чтобы сделать div.full_width_no_padding, чтобы полностью заполнить ширину браузера. », и вы попросили улучшения. Вот оно. Улучшено и заполняется окно браузера. –