Div не отображается правильно как подменю навигации - PullRequest
0 голосов
/ 07 декабря 2018

Теперь навигация не отображается так, как в этом примере, когда в полноэкранном режиме, но она отображается правильно, когда в режиме iPad на Chrome, поэтому для моих целей это будет работать.

Я полностью сделалПодменю, которое выскочило из верхней панели раньше, но по какой-либо причине это вызывает у меня тупость.

Сначала я хорошо подумал, а!Вам нужно поменять hoverableMenu{position:absolute};

и hoverable{position:relative};

и альт я бы сделал.Однако, независимо от того, что я делаю, он либо идет влево, когда у меня есть float:left;, и даже если бы я хотел, я мог бы жестко закодировать позицию, используя маржу, но это не элегантное решение, и я знаю, что, честно говоря, этопросто что-то, что летит над моей головой.

любая помощь приветствуется.

Ниже приведен мой минимальный проверяемый пример.

function myFunction() {
    var x = document.getElementById("myTopnav");
    if (x.className === "topnav") {
        x.className += " responsive";
    } else {
        x.className = "topnav";
    }
}
body{
margin: 0px;
background-color: lightblue;
height: 100%;
}
header{
    /*This is for the header picture background*/
    background-size: 100%;
    background-image: url(resources/chem3D.png);
    background-repeat: no-repeat;
    /* vh = viewheight. Used in place of percentages when percentages don't seem to work. This is basically 30% but not really
    https://stackoverflow.com/questions/31039979/css-units-what-is-the-difference-between-vh-vw-and */
    min-height: 100%; 
}
/*Seperate the header from the content*/
#seperator{
    height: 10px;
    background-color: black;
    margin:0;
    padding:0;
}

/*THe main content of the site. Where the Flex magic happens.*/
#content{
    display: flex;
    margin: auto;
    height: auto;
}

/*Navigation Stuffs*/
nav{
    width: 200px;
}


.topnav{
    overflow: hidden;
}


/*style of links in nav*/
/* ADDED FLOAT LEFT */
.topnav a{
    float: left;
    display: block;
    color: black;
    text-align: center;
    padding: 10px 5px 10px 15px;
    text-decoration: none;
    font-size: 1.2em;
    letter-spacing: 0.1em;
}

/* Drop down menu */
a.hoverable:focus + div.hoverableMenu{
display: block;
float: left;
}

a.hoverable:hover{
    color:black;
}
div.hoverableMenu{
    display: none;
    width: 70%;
    margin-left:auto;
    margin-right:10px;
}

div.hoverableMenu>a{
    letter-spacing: 0em;
}
div.hoverableMenu:focus{
    display: block;
}

/*Mobile views*/
 /*Tablet View*/
 @media screen and (max-width: 900px){
#seperator{
    display: none;
}
#content{
    height: 100%;
    display:flex;
    flex-wrap: wrap;
}

nav{
    width: 100%;
    flex-basis: 100%;
}
.topnav a{
    float: left;
}

main{
    width: 50%;
}

header{
    display:none;
}
}
<div id="seperator"></div>
<div id="content">
    <nav>
        <div class="topnav" id="myTopnav">

            <a href="index.html">Home</a>
            <a href="teaching.html">Teaching</a>

            <a class="hoverable" href="#">Research <i class="fa fa-caret-down"></i></a>
            <div class="hoverableMenu">
                <a href="research.html">Overview</a>
                <a href="publications.html">Publications</a>
            </div>

            <a class="hoverable" href="#">Students <i class="fa fa-caret-down"></i></a>
            <div class="hoverableMenu">
                <a href="studentawards.html">Awards</a>
                <a href="gallery.html">Gallery</a>
            </div>
            <a href="contact.html">Contact</a>
            <a href="javascript:void(0);" class="icon" onclick="myFunction()">
                <i class="fa fa-bars"></i>
            </a>
        </div>
    </nav>
</div>

JSFiddle

ресурсов, к которым я обращался:
https://jsfiddle.net/davidpauljunior/pdcAF/1/
Как заставить подменю плавать над div?
Не удается щелкнуть ссылки меню в выпадающем меню

РЕДАКТИРОВАТЬ Под моимМедиа-запрос я меняю следующее.

div.hoverable{
    display: relative;
}

div.hoverableMenu{
    float:right;
    display: absolute;
}

div.hoverable:focus > div.hoverableMenu{
    top:1em;
    left: 140px;
    z-index: 99;
}

после этого меню теперь всплывают по отношению к их родителям, но они заставляют элементы справа от них оборачиваться под остальными элементами нефа.Вместо подменю плавает над навигацией.(

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Изменить некоторые CSS

function myFunction() {
                var x = document.getElementById("myTopnav");
                if (x.className === "topnav") {
                    x.className += " responsive";
                } else {
                    x.className = "topnav";
                }
            }
body{
    margin: 0px;
    background-color: lightblue;
    height: 100%;
    }
    header{
        /*This is for the header picture background*/
        background-size: 100%;
        background-image: url(resources/chem3D.png);
        background-repeat: no-repeat;
        /* vh = viewheight. Used in place of percentages when percentages don't seem to work. This is basically 30% but not really
        https://stackoverflow.com/questions/31039979/css-units-what-is-the-difference-between-vh-vw-and */
        min-height: 100%; 
    }
    /*Seperate the header from the content*/
    #seperator{
        height: 10px;
        background-color: black;
        margin:0;
        padding:0;
    }

    /*THe main content of the site. Where the Flex magic happens.*/
    #content{
        display: flex;
        margin: auto;
        height: auto;
    }

    /*Navigation Stuffs*/
    nav{
        width: 200px;
    }


    .topnav{
        overflow: hidden;
    }


    /*style of links in nav*/
    /* ADDED FLOAT LEFT */
    .topnav a{
        float: left;
        display: block;
        color: black;
        text-align: center;
        padding: 10px 5px 10px 15px;
        text-decoration: none;
        font-size: 1.2em;
        letter-spacing: 0.1em;
    }

    /* Drop down menu */
    a.hoverable:focus + div.hoverableMenu{
    display: block;
    float: left;
    }

    a.hoverable:hover{
        color:black;
    }
    div.hoverableMenu{
        display: none;
        width: 70%;
        margin-left:auto;
        margin-right:10px;
    }

    div.hoverableMenu>a{
        letter-spacing: 0em;
    }
    div.hoverableMenu:focus{
        display: block;
    }
    
    


/*//////////*/

.topnav{
  overflow: visible;
}
.topnav > li {
    float: left;
    list-style-type: none;
}

.topnav li {
    list-style-type: none;
    padding: 0;
    position: relative;
}

.topnav > li > ul {
    display: none;
    margin: 0;
    position: absolute;
    left: 100%;
    padding: 0;
    top: 0px;
}

.topnav > li:hover > ul {
    display: block;
}

.topnav li {
}

.topnav:after {
    content: "";
    display: table;
    clear: both;
}


/*//////////*/



    /*Mobile views*/
/*Tablet View*/
@media screen and (max-width: 900px){
    #seperator{
        display: none;
    }
    #content{
        height: 100%;
        display:flex;
        flex-wrap: wrap;
    }

    nav{
        width: 100%;
        flex-basis: 100%;
    }
    .topnav a{
        float: left;
    }
.topnav > li > ul {
   
    left: 0%;
    padding: 0;
    top: 40px;
}
    main{
        width: 50%;
    }

    header{
        display:none;
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <header>
    </header>
    <div id="seperator"></div>
    <div id="content">
        <nav>
            
            <ul class="topnav" id="myTopnav">
                <li><a href="index.html">Home</a></li>
                <li><a href="teaching.html">Teaching</a></li>
                
                <li><a class="hoverable" href="#">Research <i class="fa fa-caret-down"></i></a>

<ul class="hoverableMenu" style="
">
                    <li><a href="research.html">Overview</a></li>
                    <li><a href="publications.html">Publications</a></li>
                </ul>
</li>
                
                
                <li><a class="hoverable" href="#">Students <i class="fa fa-caret-down"></i></a>

<ul class="hoverableMenu">
                    <li><a href="studentawards.html">Awards</a></li>
                    <li><a href="gallery.html">Gallery</a></li>
                </ul>

</li>
                
                <li><a href="contact.html">Contact</a></li>
                <li><a href="javascript:void(0);" class="icon" onclick="myFunction()">
                    <i class="fa fa-bars"></i>
                </a></li>
            </ul>
            
            
        </nav>
        <main>
        </main>
        <footer>
        </footer>
    </div>
</body>
</html>
0 голосов
/ 07 декабря 2018

Вы должны немного изменить свою структуру на ul li, оформите код ниже

            function myFunction() {
                var x = document.getElementById("myTopnav");
                if (x.className === "topnav") {
                    x.className += " responsive";
                } else {
                    x.className = "topnav";
                }
            }
body{
    margin: 0px;
    background-color: lightblue;
    height: 100%;
    }
    header{
        /*This is for the header picture background*/
        background-size: 100%;
        background-image: url(resources/chem3D.png);
        background-repeat: no-repeat;
        /* vh = viewheight. Used in place of percentages when percentages don't seem to work. This is basically 30% but not really
        https://stackoverflow.com/questions/31039979/css-units-what-is-the-difference-between-vh-vw-and */
        min-height: 100%; 
    }
    /*Seperate the header from the content*/
    #seperator{
        height: 10px;
        background-color: black;
        margin:0;
        padding:0;
    }

    /*THe main content of the site. Where the Flex magic happens.*/
    #content{
        display: flex;
        margin: auto;
        height: auto;
    }

    /*Navigation Stuffs*/
    nav{
        width: 200px;
    }


    .topnav{
        overflow: hidden;
    }


    /*style of links in nav*/
    /* ADDED FLOAT LEFT */
    .topnav a{
        float: left;
        display: block;
        color: black;
        text-align: center;
        padding: 10px 5px 10px 15px;
        text-decoration: none;
        font-size: 1.2em;
        letter-spacing: 0.1em;
    }

    /* Drop down menu */
    a.hoverable:focus + div.hoverableMenu{
    display: block;
    float: left;
    }

    a.hoverable:hover{
        color:black;
    }
    div.hoverableMenu{
        display: none;
        width: 70%;
        margin-left:auto;
        margin-right:10px;
    }

    div.hoverableMenu>a{
        letter-spacing: 0em;
    }
    div.hoverableMenu:focus{
        display: block;
    }
    
    


/*//////////*/

.topnav{
  overflow: visible;
}
.topnav > li {
    float: left;
    list-style-type: none;
}

.topnav li {
    list-style-type: none;
    padding: 0;
    position: relative;
}

.topnav > li > ul {
    display: none;
    margin: 0;
    position: absolute;
    left: 0;
    padding: 0;
    top: 40px;
}

.topnav > li:hover > ul {
    display: block;
}

.topnav li {
}

.topnav:after {
    content: "";
    display: table;
    clear: both;
}


/*//////////*/



    /*Mobile views*/
/*Tablet View*/
@media screen and (max-width: 900px){
    #seperator{
        display: none;
    }
    #content{
        height: 100%;
        display:flex;
        flex-wrap: wrap;
    }

    nav{
        width: 100%;
        flex-basis: 100%;
    }
    .topnav a{
        float: left;
    }

    main{
        width: 50%;
    }

    header{
        display:none;
    }
}	
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <header>
    </header>
    <div id="seperator"></div>
    <div id="content">
        <nav>
            
            <ul class="topnav" id="myTopnav">
                <li><a href="index.html">Home</a></li>
                <li><a href="teaching.html">Teaching</a></li>
                
                <li><a class="hoverable" href="#">Research <i class="fa fa-caret-down"></i></a>

<ul class="hoverableMenu" style="
">
                    <li><a href="research.html">Overview</a></li>
                    <li><a href="publications.html">Publications</a></li>
                </ul>
</li>
                
                
                <li><a class="hoverable" href="#">Students <i class="fa fa-caret-down"></i></a>

<ul class="hoverableMenu">
                    <li><a href="studentawards.html">Awards</a></li>
                    <li><a href="gallery.html">Gallery</a></li>
                </ul>

</li>
                
                <li><a href="contact.html">Contact</a></li>
                <li><a href="javascript:void(0);" class="icon" onclick="myFunction()">
                    <i class="fa fa-bars"></i>
                </a></li>
            </ul>
            
            
        </nav>
        <main>
        </main>
        <footer>
        </footer>
    </div>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...