LoginSignup
1
1

More than 3 years have passed since last update.

ドロワーメニューを作ってみた2

Posted at

前回に引き続き、ドロワーメニューを作ってみました。
前回と違うのは、3本線と×印を画像にしていることです。
spanを使っていたのを、画像を使って実装してみました。

前回実装したドロワーメニューに興味があるなら、是非こちらのURLを見てください!
ドロワーメニューを作ってみた

ソース

ソースは前回のものをベースに、修正を加えています。
では、いつものようにソースを載せときますね。

drower_practice.html
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ドロワーメニュー 練習</title>
    <link rel="stylesheet" type="text/css" href="./css/slide.css">
    <script src="https://code.jquery.com/jquery-3.2.1.js"></script>
    <script src="./js/slide.js"></script>
</head>

<body>
    <div class="drower_menu">
        <img src="./img/drower_open.png" alt="drower_open" id="drower_open" class="flag_on">
        <img src="./img/drower_close.png" alt="drower_close" id="drower_close" class="flag_off">
        <nav id="drower_menu_list">
            <ul class="close">
                <li><a href="#">メニュー1</a></li>
                <li><a href="#">メニュー2</a></li>
                <li><a href="#">メニュー3</a></li>
                <li><a href="#">メニュー4</a></li>
                <li><a href="#">メニュー5</a></li>
            </ul>
        </nav>
    </div>
</body>

</html>
drower.css
.drower_menu img {
    position: fixed;
    top: 20px;
    right: 20px;
    display: inline-block;
    opacity: 1;
    transform: translateX(0);
    transition: all .5s;
}

.drower_menu img.flag_on {
    z-index: 100;
    opacity: 1;
}

.drower_menu img.flag_on:hover {
    cursor: pointer;
}

.drower_menu img.flag_off {
    z-index: 99;
    opacity: 0;
}

#drower_menu_list {
    height: 100%;
    width: 250px;
    position: fixed;
    top: 0;
    right: 0;
    z-index: 0;
    padding-top: 100px;
    background-color: rgb(16, 69, 153, 0.8);
    transform: translateX(250px);
    transition: all .5s;
}

#drower_menu_list ul {
    list-style: none;
}

#drower_menu_list li {
    text-align: center;
    padding: 10px 0;
    list-style: none;
}

#drower_menu_list a {
    color: white;
    text-decoration: none;
}

#drower_menu_list.open {
    transform: translateX(0)
}
drower.js
$(function ($) {

    $('#drower_open').on('click', function() {
        if($(this).hasClass('flag_on')) {
            $(this).removeClass('flag_on');
            $(this).addClass('flag_off');
            $('#drower_close').removeClass('flag_off');
            $('#drower_close').addClass('flag_on');
            $('#drower_menu_list').removeClass('close');
            $('#drower_menu_list').addClass('open');
        }
    });

    $('#drower_close').on('click', function() {
        if($(this).hasClass('flag_on')) {
            $(this).removeClass('flag_on');
            $(this).addClass('flag_off');
            $('#drower_open').removeClass('flag_off');
            $('#drower_open').addClass('flag_on');
            $('#drower_menu_list').removeClass('open');
            $('#drower_menu_list').addClass('close');
        }
    });

});

画像

画像は自分で作ってみました。
汚いですが、もしドロワーメニューで画像を使いたい場合は、是非使ってください!

drower_open.png

drower_close.png

解説

基本的にやっていることは、前回と変わらないです。
jQueryremoveClassaddClassCSStransformtransitionを使って、メニューのスライドを実装しています。

参考資料

【jQuery】ドロワーメニュー 横からスライド表示するメニュー
たった10行でできる!ドロワーメニューの作り方

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1