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

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日

悬赏问题

  • ¥30 vmware exsi重置后的密码
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面