【问题标题】:Disable mouse wheel inside of ul{position:fixed}在 ul{position:fixed} 内禁用鼠标滚轮
【发布时间】:2016-04-11 10:10:51
【问题描述】:

我正在使用 wordpress 网站。我在子菜单内创建了菜单栏,使用了position:fixed 元素。有人告诉我如何在该子菜单中禁用鼠标滚轮。这意味着我不想在该子菜单内滚动页面。

请任何人帮助我。

【问题讨论】:

  • 更好的解决方案子菜单打开,正文应用css位置:固定&溢出:隐藏
  • 根据限制条件,您始终可以使用 JavaScript 来实现这一点。

标签: html css wordpress


【解决方案1】:

您可以使用 CSS 属性 overflow: hidden; 指定如果内容溢出元素的框会发生什么。

使用overflow: hidden; 允许您不显示滚动条,因此根本不允许滚动,包括鼠标。

下面是一个非常通用的示例,请考虑在您的问题中添加您的真实标记,以修复您的真实应用代码。

https://jsfiddle.net/bxohL8tt/2/

#sub-menu{
  width:250px;
  height: 100px;
  background-color:red;
  overflow: hidden;
}

【讨论】:

    【解决方案2】:

    如果在鼠标滚轮事件上滚动的元素是主体,甚至是其他一些元素,您可以使用 JavaScript 来防止它在您的菜单具有“焦点”时滚动,如下所示:

    var menuBar = document.getElementById('menuBar');
    
    menuBar.onmouseover = function()
    {
        document.body.style.overflow = 'hidden';
    };
    
    menuBar.onmouseout = function()
    {
        document.body.style.overflow = 'auto';
    };
    

    在您的主要 HTML 源代码末尾的 <script> 元素中添加上述内容,它应该可以工作。

    【讨论】:

      【解决方案3】:

      您可以通过以下代码做到这一点:

      $("sub-menu-selector").bind("wheel mousewheel", function() {
          return false;
      });
      

      例如:(示例显示菜单上的禁用,但它是一样的)

      $(".menu").bind("wheel mousewheel", function() {
        return false;
      });
      body {
        margin:0;  
      }
      
      .menu {
        background:black;
        color:#fff;
        position:fixed;
        width:100%;
        padding:15px;
      }
      
      .content {
        height:1500px;
        background:red;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div class="menu">
        Menu
      </div>
      <div class="content"></div>

      【讨论】:

      • 但它只适用于chrome。我也想要firebox,safari,IE
      • 你是对的。我根据this answer 更新了我的答案,看来它正在工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多