3

我正在使用从我的 HTML 菜单创建侧边菜单的 www.berriart.com/sidr/ jQuery 脚本。它工作得很好,但我想在大于 480 像素的分辨率上显示“标准”菜单,在低于 480 像素的分辨率上显示侧面菜单。

我触发它:

<script>
$(document).ready(function() {
  $('#simple-menu').sidr();
});
</script>

我想知道如何限制这个脚本只在屏幕低于 480 像素时运行?

抱歉,这里是 JS 新手 :)

4

4 回答 4

1

你可以使用

$(window).width() $(window).height()

获取屏幕的宽度和高度并相应地使用它。

<script>
$(document).ready(function() {
  var width = $(window).width();
   if (width<=480) {
     $('#simple-menu').sidr();
   }
  else
  {
     // you could call the other version of the slider.
   }
});
</script>
于 2015-04-17T12:50:50.167 回答
1

如果您想要一个适用于页面加载和页面调整大小或移动方向更改的解决方案,其他解决方案仅在页面加载时工作一次。使用这个。

var state = 'undefined';
$('#responsive-menu-button').sidr({
  name: 'sidr-main',
  source: '#navigation'
});

$('#responsive-menu-button').off('click').click(function(e){
  e.preventDefault();
  if(state == 'close'){
    $.sidr('open','sidr-main', function(){ state = 'open'; });
  } else {
    $.sidr('close','sidr-main', function(){ state = 'close'; });
  }
});

var deviceWidth = $(window).width();
var breakWidth = 480;
if(state == 'undefined'){
  if(deviceWidth <= breakWidth) {
    state = 'close';
  } else {
    setTimeout(function(){
      $.sidr('open','sidr-main', function(){ state = 'open'; });
    }, 100);
  }
}

$(window).off('resize').bind('resize', function () {
    deviceWidth = $(window).width();
    if(deviceWidth > breakWidth && state == 'close') {
      $.sidr('open','sidr-main', function(){ state = 'open'; });
    }
    if(deviceWidth <= breakWidth && state == 'open') {
      $.sidr('close','sidr-main', function(){ state = 'close'; });
    }
});
于 2016-07-07T20:29:11.703 回答
0

请检查我使用的 CSS 片段。

最初,对于宽度>768px,#mobile-header设置为display:none.

否则,#mobile-headerdisplay:block

<style>
#mobile-header { display: none; }
@media only screen and (max-width: 768px){
#mobile-header { display: block;}
#nav-wrapper { display: none; }
}
</style>
于 2015-04-17T19:44:49.557 回答
0

从 Sidr 的文档/示例页面中查看以下示例:http: //berriart.com/sidr/#documentation在标题“响应式菜单”部分中。它利用媒体查询仅在屏幕尺寸低于 767 像素时显示移动标题,否则不显示。您可以修改此示例以达到您想要的效果。

<style>
#mobile-header {
    display: none;
}
@media only screen and (max-width: 767px){
    #mobile-header {
        display: block;
    }

    #navigation {
        display: none;
    }
}
</style>

<div id="mobile-header">
    <a id="responsive-menu-button" href="#sidr-main">Menu</a>
</div>

<div id="navigation">
    <nav class="nav">
        <ul>
            <li><a href="#download">Download</a></li>
            <li><a href="#getstarted">Get started</a></li>
            <li><a href="#usage">Demos &amp; Usage</a></li>
            <li><a href="#documentation">Documentation</a></li>
            <li><a href="#themes">Themes</a></li>
            <li><a href="#support">Support</a></li>
        </ul>
    </nav>
</div>

<script>
    $('#responsive-menu-button').sidr({
      name: 'sidr-main',
      source: '#navigation'
    });
</script>
于 2015-04-17T12:48:33.150 回答