简体   繁体   English

调整浏览器大小时实时更改

[英]Live change when browser resize

I have using this code for add div after 6 & 4 item in sequence according to screensize. 我已经根据屏幕尺寸使用此代码在6和4项之后依次添加div。 It is working fine on load, but it does not work on browser resize. 它在加载时工作正常,但在浏览器调整大小时不起作用。

$(document).ready(function () {
    $screensize = $(window).width();
    if ($screensize > 1024) {
        $('#menu .nav > li.categories_hor > div > .column:nth-child(6n)').after('<div class="clearfix visible-lg-block"></div>');
    }
});

$(function () {
    $screensize = $(window).width();
    if ($screensize < 1025) {
        $('#menu .nav > li.categories_hor > div > .column:nth-child(4n)').after('<div class="clearfix visible-lg-block visible-md-block"></div>');
    }
})
})


Updated: 更新:

Thanks for all answer. 感谢所有答案。 but, it is not work perfectly according to want I. When, I have change more than 1 time screensize so, it is every time call(add more than 1 div). 但是,根据我的要求,它并不能完美地工作。因此,我更改了超过1倍的屏幕大小,因此,每次调用(添加超过1格)。

It would look like this: 它看起来像这样:

if, device width is more than 1024. So, Counter will calculate 6(add clearfix div after 6 item). 如果设备宽度大于1024。那么,Counter将计算6(在6项之后添加clearfix div)。 & if device width is less than 1024 So. &如果设备宽度小于1024So。 Counter will calculate 4(add clearfix div after 4 item). 计数器将计算4(在4项之后添加clearfix div)。

if device width is > 1024 如果设备宽度> 1024

  <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="clearfix"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="clearfix"></div> <div class="item"></div> <div class="item"></div> 

if device width is < 1024 如果设备宽度小于1024

  <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="clearfix"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="clearfix"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="clearfix"></div> <div class="item"></div> <div class="item"></div> 

I hope, you can clearly understand my question. 希望您能清楚地理解我的问题。 Thanks. 谢谢。

To check when the user resize the browser use $.resize , like this: 要检查用户何时调整浏览器的大小,请使用$ .resize ,如下所示:

$( window ).resize(function() {
    $screensize = $(window).width();
    if ($screensize > 1024) {
        $(".clearfix.visible-lg-block").remove();
        $('#menu .nav > li.categories_hor > div > .column:nth-child(6n)').after('<div class="clearfix visible-lg-block"></div>');
    } 
    if ($screensize < 1024) {
        $(".clearfix.visible-lg-block").remove();
        $('#menu .nav > li.categories_hor > div > .column:nth-child(4n)').after('<div class="clearfix visible-lg-block visible-md-block"></div>');
    } 
});

NOTE: please conside if the width == 1024 what will happen. 注意:如果width == 1024 ,请考虑会发生什么。

Try using the resize event and use conditional statements inside the handler to manipulate your DOM: 尝试使用resize事件,并在处理程序中使用条件语句来操作DOM:

$(window).resize(function () {
    if ($(this).width() > 1024) {
        $('#menu .nav > li.categories_hor > div > .column:nth-child(6n)').after('<div class="clearfix visible-lg-block"></div>');
    } else {
        $('#menu .nav > li.categories_hor > div > .column:nth-child(4n)').after('<div class="clearfix visible-lg-block visible-md-block"></div>');
    }
});

To trigger this manually onload, do: 要手动触发此onload,请执行以下操作:

$(function() { $(window).resize() }); // trigger resize onload

Note that you might want to change your DOM manip logic to toggle classes and visibility using CSS instead, as it is now you will be adding multiple elements on resize. 请注意,您可能想更改DOM操作逻辑,以改用CSS切换类和可见性,因为现在您将在调整大小时添加多个元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM