Не удалось добавить переход в меню

#html #css

#HTML #css

Вопрос:

Я не могу добавить какой-либо эффект перехода в мое выпадающее меню (на мобильном устройстве) и на значок моей панели. Куда я должен поместить код с переходом? С другой стороны, переходы, такие как изменение цвета шрифта при наведении курсора мыши, успешно меняются. Я думаю, что это может быть что-то не так со структурой моего кода, но я ничего не вижу.

 $(document).ready(function() {
    $('.menu-toggle').click(function() {
        $(this).toggleClass('active');
        $('nav').toggleClass('active');
    });
});  
 body {
    margin: 0;
    padding: 0;
    font-family: Lato, sans-serif;
    background-color: #333;
    height: 200vh;
}

a {
    text-decoration: none;
}

.clearfix {
    clear: both;
}

header {
    position: fixed;
    width: 100%;
    padding: 1vh 15vw;
    min-height: 100px;
    box-sizing: border-box;
    background-color: #fff;
}

.logo {
    color: #417475;
    text-transform: uppercase;
    font-weight: bold;
    font-size: 35px;
    height: 100px;
    line-height: 100px;
    float: left;
}

nav {
    float: right;
}

nav ul {
    display: flex;
}

nav ul li {
    list-style: none;
}

nav ul li a {
    display: block;
    margin: 10px 0;
    padding: 10px 20px;
}

nav ul li a:hover {
    color: #417475;
}

.menu-toggle {
    display: none;
    float: right;
    margin-top: 35px;
    font-size: 30px;
    cursor: pointer;
}

.menu-toggle:before {
    content: 'f0c9';
    font-family: fontAwesome;
    height: 30px;
}

.menu-toggle.active:before {
    content: 'f00d';
}

@media screen and (max-width: 768px) {
    .menu-toggle {
        display: block;
    }

    nav {
        display: none;
    }

    nav.active {
        display: block;
        width: 100%;
    }

    nav.active ul {
        display: block;
    }

    nav.active ul li a {
        margin: 0;
        text-align: center;
    }
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!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>Portfolio 1</title>
    <link rel="stylesheet" href="style.css">
    <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
    <header>
        <a href="#" class="logo">Logo</a>
        <div class="menu-toggle"></div>
        <nav>
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">Offer</a></li>
                <li><a href="#">Portfolio</a></li>
                <li><a href="#">About</a></li>
                <li><a href="#">Contact</a></li>
            </ul>
        </nav>
        <div class="clearfix"></div>
    </header>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="script.js"></script>
</body>
</html>  

Комментарии:

1. если вы также хотите анимировать <nav> , вы можете использовать для этого раскрывающийся список bootstrap

Ответ №1:

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

 .menu-toggle.active {
  transition: 3s;
 transform: rotate(-180deg);
  

}

Надеюсь, это даст больше разъяснений.

Ответ №2:

На самом деле вы переключаете display of <nav> между none и block . Который просто заставляет <nav> появляться и исчезать. Если вы хотите создать анимацию, вы можете создать фактический выпадающий список, используя классы начальной загрузки для него следующим образом;

 $(document).ready(function(){
    $('.menu-toggle').on('click',function(){
        $('.menu-toggle').toggleClass('active');
    });
});  
 <!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>Portfolio 1</title>
    <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <script src="adding_transition.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM B07jRM" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<style>
body {
    margin: 0;
    padding: 0;
    font-family: Lato, sans-serif;
    background-color: #333;
    height: 200vh;
    /* transition: all 0.3s; */
}

a {
    text-decoration: none;
}

.clearfix {
    clear: both;
}

header {
    position: fixed;
    width: 100%;
    padding: 1vh 15vw;
    min-height: 100px;
    box-sizing: border-box;
    background-color: #fff;
    
}

.logo {
    color: #417475;
    text-transform: uppercase;
    font-weight: bold;
    font-size: 35px;
    height: 100px;
    line-height: 100px;
    float: left;
    /* transition: all 0.3s ease; */
}

nav {
    float: right;
    transition: all 0.3s;
}

nav ul {
    display: flex;
}

nav ul li {
    list-style: none;
}

nav ul li a {
    display: block;
    margin: 10px 0;
    padding: 10px 20px;
}

nav ul li a:hover {
    color: #417475;
}

.menu-toggle {
    display: none;
    float: right;
    margin-top: 35px;
    font-size: 30px;
    cursor: pointer;
}

.menu-toggle:before {
    content: 'f0c9';
    font-family: fontAwesome;
    height: 30px;
}

.menu-toggle.active:before {
    content: 'f00d';
}
.animate
{
    transition: all 0.3s;
}

@media screen and (max-width: 768px) {
    .menu-toggle {
        display: block;
    }

    nav {
        display: block;
        width: 100%;
    }

    nav ul {
        display: block;
    }

    nav ul li a {
        margin: 0;
        text-align: center;
    }
}
</style>
</head>
<body>
    <header>
        <a href="#" class="logo">Logo</a>
        <a  href="#list_drop" data-toggle="collapse" aria-expanded="false" ><div class="menu-toggle"></div></a>
        <nav>
            <ul id="list_drop" class="collapse list-unstyled">
                <li><a href="#">Home</a></li>
                <li><a href="#">Offer</a></li>
                <li><a href="#">Portfolio</a></li>
                <li><a href="#">About</a></li>
                <li><a href="#">Contact</a></li>
            </ul>
        </nav>
        <div class="clearfix"></div>
    </header>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="script.js"></script>
</body>
</html>  

Внимание: CSS, который вы связываете с html, должен быть после bootstrap CDN, иначе CSS, который вы применили к .clearfox , не будет работать.

Вот почему я использую встроенный (в html-документ) CSS.