满口金牙 2022-05-20 17:56 采纳率: 91.1%
浏览 73
已结题

vue3 dom 元素 最侧的 下拉菜单跑外面去了,有什么合理的 解决办法?

弄了一个 顶部导航,hover 弹出的下拉菜单
在最侧边的 就跑到外面去了,单独调节位置也是可以的,但觉的很Low
以后也要用到 鼠标右键菜单,也不可能去一个个调节。
请教合理的解决办法。
这个 dom元素 一般是position aboslute , 可否有什么语句在css或 scss中, 判断是屏幕边上就搞整位置

另外 我用了这个方法,F12 提示是 建议不要用这个方法
  window.onresize = ()=>{ // 监听屏幕大小, 根据高度来调整 表格单页的高度
    currentHeight.value= window.innerHeight
  }

  • 写回答

3条回答 默认 最新

  • 关注
    <!doctype html>
    <html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
        <meta charset="UTF-8" />
    <style type="text/css">
    #menu,#menu ul {
        margin: 0;
        padding: 0;
        list-style-type: none;
        
    }
    #menu:after {
        content:"";
        display: block;
        clear: both;
    }
    #menu>li {
        position: relative;
        width: 300px;
        height: 20px;
        float: left;
        background-color: #9ff;
        transition: background-color 300ms;
    }
    #menu>li:hover {
        background-color: #9cf;
    }
    #menu>li>ul {
        position: absolute;
        top: 100%;
        left: 0;
        background-color: #cff;
        display: none;
    }
    #menu>li:hover>ul {
        display: block;
    }
    #menu>li li:hover {
        background-color: #99f;
    }
    </style>
    </head>
    <body>
    <ul id="menu">
        <li>菜单1
            <ul>
                <li>子菜单1-1</li>
                <li>子菜单1-2</li>
                <li>子菜单1-3</li>
                <li>子菜单1-3</li>
            </ul>
        </li>
        <li>菜单1
            <ul>
                <li>子菜单1-1</li>
                <li>子菜单1-2</li>
                <li>子菜单1-3</li>
                <li>子菜单1-3</li>
            </ul>
        </li>
        <li>菜单1
            <ul>
                <li>子菜单1-1</li>
                <li>子菜单1-2</li>
                <li>子菜单1-3</li>
                <li>子菜单1-3</li>
            </ul>
        </li>
        <li>菜单1
            <ul>
                <li>子菜单1-1</li>
                <li>子菜单1-2</li>
                <li>子菜单1-3</li>
                <li>子菜单1-3</li>
            </ul>
        </li>
        <li>菜单2
            <ul>
                <li>子菜单2-1</li>
                <li>子菜单2-2</li>
                <li>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg</li>
            </ul>
        </li>
        <li>菜单3
            <ul>
                <li>111111111111111111111111111111zbbbbbbzzzzzzzzzzza</li>
                <li>子菜单3-2</li>
                <li>子菜单3-3</li>
            </ul>
        </li>
    </ul>
    
    <script type="text/javascript">
    var dr = document.querySelectorAll("#menu>li");
    for (var i = 0; i < dr.length; i++) {
        dr[i].addEventListener("mouseenter", function (e) {
            var ul = this.querySelector("ul");
            ul.style.left = "0px";
            ul.style.right = "auto";
            var er = ul.getBoundingClientRect().right;
            var ww = window.innerWidth;
            if (er > ww) {
                ul.style.right = "0px";
                ul.style.left = "auto";
            }
        }, false);
    }
    </script>
    </body>
    </html>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 修改了问题 5月20日
  • 创建了问题 5月20日

悬赏问题

  • ¥15 python如何循环调取规律性名称的数据
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名机械工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统
  • ¥30 matlab appdesigner私有函数嵌套整合