满口金牙 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日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分