javascript - 如何使用 jQuery/media 查询在窗口调整大小时重新排序列表项

标签 javascript jquery html css responsive-design

我正在尝试做一些响应式修复 - 目前我有一个列表,如下所示:

<ul>
  <li>666</li>
  <li>555</li>
  <li>444</li>
  <li>333</li>
  <li>222</li>
  <li>111</li>
</ul>

如果屏幕尺寸小于 767px,我喜欢这样改变顺序:

<ul>
  <li>111</li>
  <li>222</li>
  <li>333</li>
  <li>444</li>
  <li>555</li>
  <li>666</li>
</ul>

如果大小增加,将它们修复回当前状态。

我知道这不能通过 CSS 媒体查询来完成,我需要你帮助通过 jQuery 修复它。

提前感谢您的帮助。

最佳答案

您可以像这样反转 ul 元素中的元素:

$("ul").append(function(){
    return $(this).children().detach().toArray().reverse();
});

结合window.resize:

var resizeTimeout, sortedReverse = false;
$(window).resize(function () {
    // window.resize fires too rapidly for our liking
    // use clear-set timeout approach
    if (resizeTimeout) {
        window.clearTimeout(resizeTimeout);
    }
    resizeTimeout = window.setTimeout(function () {
        var windowWidth = $(window).width();
        // sortedReverse flag is used to ensure that
        // we do not reverse the list unnecessarily
        if ((windowWidth < 767 && !sortedReverse) || (windowWidth >= 767 && sortedReverse)) {
            $("ul").append(function () {
                return $(this).children().detach().toArray().reverse();
            });
            sortedReverse = !sortedReverse;
        }
    }, 100);
}).trigger("resize");

Demo here

关于javascript - 如何使用 jQuery/media 查询在窗口调整大小时重新排序列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21381468/

相关文章:

javascript - 使用 VueJS 动态编辑内联 CSS

javascript - 如何检测 WebGL 中的浮点精度?

html - IE7/8 中的 Colspan 不受尊重

php - 更改元素样式前需要刷新页面

html - CSS : z-index/stacking issue

html - 如何为 <tbody> 元素设置边框?

javascript - 标记来描述 html、css、javascript、jquery...?

javascript - Jquery 脚本看不到 2 个 div 之间的区别

javascript - 更改表单的 onsubmit 属性来提交是一个好习惯吗?

c# - 什么时候应该调用 Page.Header.DataBind?