CSS Изменение размера вопроса меню - PullRequest
0 голосов
/ 26 апреля 2020

Привет, у меня небольшая проблема с изменением размера:

Веб-сайт: Thelazylife.nl <Рабочий сайт с проблемой </p>

HTML

<body>
<div class="headerContainer">
<div id="nav" class="nav">
    <div class="logo">Logo</div>
    <span onclick="abc()"><i class="fa fa-bars"></i></span>
    <ul id="toggle">
        <li>Home</li>
        <li>Over</li>
        <li>Contact</li>
        <li>Locatie</li>
    </ul>
</div>
<div class="box1">
    Box 1
</div>

<div class="box2">
    Box 2
</div>

<div class="box3">
    Box 3
</div>
</div>
</body>

CSS

body{
 padding:0;   
 margin:0;

}

.headerContainer{
    height:100vh;
    display:grid;
    position: relative;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 50px 1fr 1fr;
    grid-template-areas: 
    "navigation navigation"
    "box1 box2"
    "box3 box3"
    ;
}

.nav{
    grid-area:navigation;

display: flex;
align-items: center;
justify-content: space-around;
background-color: red;




}

.nav ul li:hover{
    background-color:orange;
}

.nav ul{
    display:flex;
    list-style-type: none;

}

.nav ul li {
    padding:20px;
    background-color: green;
    margin-left:20px;
}

i.fa{
    display:none;
    font-size:22px;
}

.logo{
    font-size:22px;
}

.box1{
    grid-area:box1;
    background:blue;

}

.box2{
    grid-area:box2;
    background:green;
}

.box3{
    grid-area:box3;
    background:yellow;
}




@media screen and(max-width: 600px) {

body{
    margin:0;
    padding:0;
}



.nav ul {
    display:none;
    position: absolute;
    flex-direction:column;

 top:25px;
 right:0;
 width:300px;

}

.nav ul li:hover{
    background-color:orange;
}

i.fa{
    display:block;
}

}

JS

function abc(){
    var x = document.getElementById("toggle");
    if(x.style.display == 'block')
    x.style.display = 'none';
 else
    x.style.display = 'block';
}

Только что началось это выглядит некрасиво, но проблема в меню. Действия для воссоздания проблемы: измените размер браузера до 600 пикселей, затем снова измените размер браузера до вида рабочего стола. Меню исчезает тогда. Кроме того, при изменении размера в мобильном представлении, а затем открытии меню и последующем изменении размера браузер сохраняет меню в режиме столбца.

Как я могу решить эту проблему?

С уважением и благодарностью за помощь заранее!

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

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

Другой способ заключается в том, что вы можете просто создать два навигационных меню, одно для настольного компьютера и одно для мобильных устройств, и просто использовать CSS медиазапросы для отображения одного по размеру окна. Это легко решит вашу задачу.

0 голосов
/ 26 апреля 2020

Вместо JS кода вы можете просто использовать свойство hover элемента для желаемого размера экрана.

As per your need simply remove your JS code and add the following line of css:

span:hover + ul {
    display: flex;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...