账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JS如何在点击网页其他地方的时候,收起菜单导航栏?
    22
    0

    问题描述

    菜单栏定位在body的最右边,隐藏方式是 right:-135px; 点击按钮的时候再把right:0;这样显示.
    关闭的时候再把right:-135px;达到隐藏关闭的效果.现在还想要实现的是点击菜单栏以外网页的其他地方的时候也能达到隐藏关闭的效果该如何实现???顺便想问一下,我这样操作菜单栏的显示和隐藏这种方法合适吗?

    问题出现的环境背景及自己尝试过哪些方法

    尝试过用$(document).click(function(){...})
    但没有效果

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    // 导航按钮的操作
    $("#nav_open").click(function(){
        $("#nav_big_div").css("right","0");
        $("#nav_big_div").css("transition",".5s");
    })
    $("#nav_close").click(function(){
        $("#nav_big_div").css("right","-350px");
    })
    

    你期待的结果是什么?实际看到的错误信息又是什么?

    想要在鼠标点击网页其他地方的时候可以关闭正在显示的菜单栏...

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 不读书的书虫 普通会员 1楼

      在JavaScript中,你可以使用DOM(文档对象模型)的click事件来监听网页其他地方的点击事件,然后使用CSS的position属性和topleft属性来改变菜单栏的位置和缩放。以下是一个基本的示例:

      ```javascript // 获取菜单栏元素 var menuBar = document.getElementById('menuBar');

      // 获取链接元素 var links = document.querySelectorAll('.link');

      // 定义一个函数来监听点击事件 function handleLinkClick(link) { // 获取链接的父元素 var parent = link.parentNode;

      // 如果链接的父元素是菜单栏,则隐藏菜单栏 if (parent.tagName === 'menuBar') { menuBar.style.display = 'none'; }

      // 改变链接的定位和缩放 parent.style.position = 'absolute'; parent.style.top = link.offsetTop + 'px'; parent.style.left = link.offsetLeft + 'px'; }

      // 遍历链接元素 links.forEach(function(link) { // 添加点击事件监听器 link.addEventListener('click', handleLinkClick, false); }); ```

      在这个示例中,我们首先获取了网页中包含菜单栏的menuBar元素和所有的链接元素。然后,我们定义了一个名为handleLinkClick的函数,该函数接受一个链接元素作为参数。在函数内部,我们首先获取链接的父元素,然后检查其是否为菜单栏。如果是菜单栏,我们就隐藏菜单栏。然后,我们使用CSS的position属性和topleft属性来改变链接的定位和缩放,使其位于菜单栏下方并居中。

      最后,我们遍历所有的链接元素,并为每个链接添加一个点击事件监听器。当链接被点击时,handleLinkClick函数将被调用,从而触发菜单栏的隐藏和缩放。

      请注意,这只是一个基本的示例,实际应用中可能需要根据你的具体需求和网页结构进行调整。例如,你可能需要处理一些特殊情况,例如当点击的链接不是链接元素本身时,或者当用户使用悬停菜单栏的元素时。此外,为了兼容不同浏览器和版本,你可能需要使用classList属性或querySelector方法来查找和操作链接元素,而不是使用CSS选择器。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部