Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将菜单标记移出标题并将其插入HTML中的其他位置?_Javascript_Html_Css_Markup - Fatal编程技术网

Javascript 如何将菜单标记移出标题并将其插入HTML中的其他位置?

Javascript 如何将菜单标记移出标题并将其插入HTML中的其他位置?,javascript,html,css,markup,Javascript,Html,Css,Markup,所以,我有一个汉堡包菜单移动内的标题。在桌面上,情况会发生变化,菜单位于主内容左侧标题下方。是否有一种(JavaScript)方法可以使用现有标记,即将导航标记及其内容移动到#overlay之外,并将其放在aside标记中?还是复制菜单标记是唯一的方法 <header> <div id="overlay"> <nav id="navbar"> <

所以,我有一个汉堡包菜单移动内的标题。在桌面上,情况会发生变化,菜单位于主内容左侧标题下方。是否有一种(JavaScript)方法可以使用现有标记,即将导航标记及其内容移动到#overlay之外,并将其放在aside标记中?还是复制菜单标记是唯一的方法

<header>
   <div id="overlay">
        <nav id="navbar">
            
            <ul class="menu">
                <li class="item-group">
                    <a href="index.html">The Story.</a>
                </li>

                <li class="item-group">
                    <a href="everyday-life.html">Everyday Life</a>
                </li>
   </div>
</header>

<aside> Side menu on desktop </aside>

  • 代码的工作原理

    正文中添加了一个函数,用于侦听调整屏幕宽度的大小
    onresize=“navigationFunc()”

    当我们重新加载页面时要显示在正确的位置,添加了
    onload=“navigationFunc()”

    当宽度小于1000px时(您可以在代码中对此进行更改)。使用ID
    #mobile

    
    文件
    Lorem ipsum dolor sit amet
    var nav=document.getElementById('navigation');
    var dsk=document.getElementById('desktop');
    var mob=document.getElementById('mobile');
    函数navigationFunc(){
    var w=窗宽、外径;
    如果(w<1000){
    //mob.appendChild(nav);//最后添加
    mob.insertBefore(nav,mob.childNodes[0]);//首先添加
    }否则{
    //dsk.appendChild(nav);//最后添加
    dsk.insertBefore(nav,dsk.childNodes[0]);//首先添加
    }
    }
    
    您可以通过选择父元素然后获取其子元素来完成此操作。下一步是将子元素附加到另一个将成为父元素的元素,然后从当前父元素中删除子元素

    是父元素,
    是其子元素
    您可以声明另一个父元素,即

    然后获取
    元素及其内容
    然后使用
    appendChild()

    将其附加到父元素-
    #app
    使用
    removeChild()

    请参阅下面的代码片段

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="app"></div>
        <div id="overlay">
            <nav>
                <ul>
                    <li>hello</li>
                    <li>yo</li>
                </ul>
            </nav>
        </div>
    
    
        <script>
            const app = document.querySelector('#app')
            const overlay = document.querySelector('#overlay')  
            const el = overlay.firstElementChild    // gets the elements inside the element with an id of overlay
    
            app.appendChild(el)
            overlay.removeChild()
    
        </script>
    </body>
    </html>
    
    
    文件
    
    • 你好
    const app=document.querySelector(“#app”) const overlay=document.querySelector(“#overlay”) const el=overlay.firstElementChild//获取元素中id为overlay的元素 附件二(el) overlay.removeChild()

    你可以打开chrome开发工具,进入“元素”选项卡。您将看到
    nav
    现在被包装在
    #app
    中,但在您的代码中,
    nav
    被包装在
    覆盖层中

    谢谢!工作起来很有魅力。:)我做了你想要的改变!:)谢谢很高兴知道这个选项。:)记得flexbox,所以我只是更改了订单。