javascript - 在小屏幕上折叠 div,在大屏幕上展开 -javascript

标签 javascript

如何制作一个简单的脚本,根据加载时的屏幕尺寸和屏幕调整大小来扩展/缩小 div?我是java脚本新手,这是我当前的代码。它是平板电脑和手机上默认折叠的菜单,可单击以展开其内容。但在台式机和笔记本电脑上,它已经默认扩展。

if ( $(window).width() > 600) {     
        $(function(){
  $('.header').click(function(){
    $(this).closest('.container').toggleClass('collapsed');
  });
});
 //container is expanded on large screen resize or load
}
else {
//container is collapsed on load or screen resize or load
}
.container{
  width:300px;
  background:#ccc;
  margin:10px;
  float:left;
}

.header{
  background:url('http://cdn1.iconfinder.com/data/icons/vaga/arrow_up.png') no-repeat;
  background-position:right 0px;
  cursor:pointer;
}

.collapsed .header{
  background-image:url('http://cdn2.iconfinder.com/data/icons/vaga/arrow_down.png');
}

.content{
  height:auto;
  min-height:100px;
  overflow:hidden;
  transition:all 0.3s linear;
  -webkit-transition:all 0.3s linear;
  -moz-transition:all 0.3s linear;
  -ms-transition:all 0.3s linear;
  -o-transition:all 0.3s linear;
}
.collapsed .content{
  min-height:0px;
  height:0px;
}
<div class="container">
  <div class="header">Bla blah</div>
  <div class="content">
    <p> Some content here </p>
  </div>
</div>

http://jsfiddle.net/AMzfe/1002/

最佳答案

您可以通过使用调整窗口大小时触发的 jquery resize 事件来实现这一点。 只需添加监听调整大小事件的代码,测量新的窗口大小,然后根据窗口的新大小折叠或展开 div。

var setDivsState=function(){
    if ( $(window).width() < 600) {
        $(function(){
            $('.header').click(function(){
                $(this).closest('.container').addClass('collapsed');
            });
        });
        //container is expanded on large screen resize or load
    }
    else {
        $(function(){
            $('.header').click(function(){
                $(this).closest('.container').removeClass('collapsed');
            });
        });
        //container is collapsed on load or screen resize
    }
}
$(window).resize(setDivsState); 

您还应该在窗口首次加载时调用 setDivsState 函数。

这里有更多关于调整大小事件的文档 jquery docs还有这个stackoverflow question这里有更多详细信息

关于javascript - 在小屏幕上折叠 div,在大屏幕上展开 -javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506392/

相关文章:

javascript - 在 jQuery 中获取下拉更改值的事件

javascript - 为什么 Angular js 中的 $watch 会导致 console.log 输出两次?

javascript - 带有下拉选择器的 jquery 选项卡式选择器,下拉菜单与选项卡开关不匹配

javascript - 从 JavaScript 中的箭头函数返回数组

javascript - 如何包含另一个页面的 div?

javascript - TinyMCE 集成 - 插件不会显示

Javascript OOP方法返回 "is not a function"

javascript - AngularJS 范围定义的函数为 null

javascript - 使用变量更改 CSS 和 JS

javascript - 使用 append() 对列表进行排序