いままでぼくがネットの海であさってきた『ハンバーガーメニュー』のコードは、どれも一長一短で、思うに任せぬものが多く、ひとさまの叡智をむさぼっておきながら文句ばかり垂れていた。
それがこのほど、ChatGPTがきわめてシンプルな『ハンバーガーメニュー』のコードを吐き出したので、それを公開しよう。
以下の3つのファイルは、HTMLコードと同階層にCSSとJSのファイルがそのまんま並んでいる状況を想定してつくられている。うまいことあしらってくれ。
◆HTMLコード
- <!DOCTYPE html>
- <html lang="ja">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Hamburger Menu</title>
- <link rel="stylesheet" href="styles.css">
- </head>
- <body>
- <header>
- <div class="menu-btn" id="menu-btn">
- <div class="menu-btn__burger"></div>
- </div>
- <nav class="nav" id="nav">
- <ul class="nav__list">
- <li class="nav__item"><a href="#" class="nav__link">ホーム</a></li>
- <li class="nav__item"><a href="#" class="nav__link">サービス</a></li>
- <li class="nav__item"><a href="#" class="nav__link">会社概要</a></li>
- <li class="nav__item"><a href="#" class="nav__link">お問い合わせ</a></li>
- </ul>
- </nav>
- </header>
- <script src="script.js"></script>
- ふがふが
- </body>
- </html>
- body {
- font-family: Arial, sans-serif;
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- }
- header {
- position: relative;
- }
- .menu-btn {
- position: fixed;
- top: 15px;
- right: 15px;
- width: 30px;
- height: 25px;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- z-index: 1000;
- }
- .menu-btn__burger {
- width: 100%;
- height: 3px;
- background-color: #333;
- border-radius: 5px;
- transition: all 0.3s ease;
- }
- .menu-btn.open .menu-btn__burger {
- background-color: #fff;
- transform: rotate(45deg);
- }
- .menu-btn.open .menu-btn__burger::before {
- background-color: #fff;
- transform: rotate(90deg);
- top: 0;
- }
- .menu-btn.open .menu-btn__burger::after {
- background-color: #fff;
- opacity: 0;
- }
- .menu-btn__burger::before,
- .menu-btn__burger::after {
- content: '';
- position: absolute;
- width: 100%;
- height: 3px;
- background-color: #333;
- border-radius: 5px;
- transition: all 0.3s ease;
- }
- .menu-btn__burger::before {
- transform: translateY(-10px);
- }
- .menu-btn__burger::after {
- transform: translateY(10px);
- }
- .nav {
- position: absolute;
- top: 0;
- left: 0;
- height: 100vh;
- width: 100%;
- background-color: rgba(0, 0, 0, 0.5);
- display: flex;
- align-items: center;
- justify-content: center;
- transform: translateX(-100%);
- transition: transform 0.3s ease-in-out;
- z-index: 999;
- }
- .nav.open {
- transform: translateX(0);
- }
- .nav__list {
- list-style: none;
- text-align: center;
- }
- .nav__item {
- margin: 20px 0;
- }
- .nav__link {
- color: #fff;
- text-decoration: none;
- font-size: 1.5rem;
- transition: color 0.3s ease;
- }
- .nav__link:hover {
- color: #ff6347;
- }
- const menuBtn = document.getElementById('menu-btn');
- const nav = document.getElementById('nav');
- menuBtn.addEventListener('click', () => {
- menuBtn.classList.toggle('open');
- nav.classList.toggle('open');
- });
うまくできなくても当局では一切関知しない。先述のとおり、AIが吐き出したコード一式だ。ぼくにはよく分からんのである。そこんところよろしく。