前提・実現したいこと
HTML,CSSのみでハンバーガーメニューの実現に取り組んでいます。
行いたいのはchekoxを押すと隠れていたナビゲーションが表示されるようにしたいです。
最終的にcheckboxをFontawsomeの三本線と重ね合わせてopacityで表示を消す予定です。
発生している問題・エラーメッセージ
768px以下の時に常に表示されているナビゲーションをハンバーガーメニューとしたいんですが、
その実現の為、input checkboxでボタンを作り、translateで表示を上部へ隠すことはできたのですが、チェックボタンを押してもナビゲーションが出てこない状態です。
ご教示お願い致します。
該当のソースコード
【HTML】
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Rock+Salt&display=swap" rel="stylesheet"> <link href="https://use.fontawesome.com/releases/v5.15.1/css/all.css" rel="stylesheet"> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <title>あいうえおく</title> </head> <body> <div class="wrap"> <header class=header></header> <main> <div class="back"></div></body> </html><nav class=nav> <ul> <li><a href=#info>info</a></li> <li><a href=#menu>menu</a></li> <li><a href=#access>access</a></li> <li><a href=#aboutus>aboutus</a></li> <li><a href=#goods>goods</a></li> </ul> </nav> <div class="logoback"></div> <div class="logo"> <img src="images/logo.png"> </div> <div class="logologo"> <img src="images/logo_left.png"> </div> <div class="icon"> <ul> <li><i class="fab fa-facebook-square facebook"></i></li> <li><i class="fab fa-twitter-square twitter"></i></li> <li><i class="fab fa-youtube-square youtube"></i></li> </ul> </div> <div class="message"> <h5>あいうえお</h5> <p> あいうえおあいうえお </p> </div> <div id="info"> </div> <div id="menu"> </div> <div id="access"> </div> <div id="aboutus"> </div> <div id="goods"> </div> <!--スマホ用バーガーメニュー--> <input type="checkbox" class="btn"> <div class="sphone"> <i class="fas fa-bars"></i> </div> </div> </main> </div> <script> $(function(){ $('a[href^="#"]').click(function(){ var speed = 500; var href= $(this).attr("href"); var target = $(href == "#" || href == "" ? 'html' : href); var position = target.offset().top; $("html, body").animate({scrollTop:position}, speed, "swing"); return false; }); }); </script>
---【CSS】---
*{
margin: 0;
padding: 0;
}
body{
font-family: "游ゴシック","YuGothic","MS Pゴシック","MS PGothic",Sans-Serif;
}
a{
color: #fff;
}
.back{
width: 100%;
height: 100vh;
background-image: url("images/top2.jpg");
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
}
.nav{
position:fixed;
top:100px;
left:30px;
height: 100%;
}
.nav li{
font-family: 'Rock Salt', cursive;
color: rgb(252, 252, 252);
font-size: 20px;
list-style: none;
padding-left: 30px;
}
.message{
position: absolute;
top:57%;
right:5%;
}
.message img{
width: 70%;
height: auto;
position: absolute;
top:-20%;
right:-40%;
}
.message P{
font-size: 19px;
}
.message p small{
font-size: 12px;
}
.messageback{
width:35%;
height: 45%;
opacity: 0.1;
background-color: black;
position: absolute;
top:55%;
right:2%;
}
.logoback{
width:100%;
height:50px;
background-color: white;
position: absolute;
top:0;
}
.logo{
position: absolute;
top:0%;
}
.logo img{
height: 14%;
width: 29%;
padding-left: 10%;
}
.logologo{
position: absolute;
top:-1%;
left:1%;
}
.logologo img{
width:23%;
}
.logoright{
position: absolute;
top:2%;
left:11%;
}
.icon{
width: 12%;
position: absolute;
top:2%;
right: 0%;
}
.icon li{
display: inline;
padding-left:5%;
font-size:1.5em;;
}
.facebook{
color:#315096;
}
.twitter{
color:#55acee;
}
.youtube{
color:#ff0000;
}
.message{
position: absolute;
top:60%;
}
.message p {
color: white;
}
#info{
background-image: url("images/back2.jpg");
width: 100%;
height: 100vh;
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
#menu{
background-image: url("images/menu2.jpg");
width: 100%;
height: 100vh;
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
#access{
background-image: url("images/access1.jpg");
width: 100%;
height: 100vh;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
}
#aboutus{
background-image: url("images/about.jpg");
width: 100%;
height: 100vh;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
background-position: 0% 70%;
}
#goods{
background-image: url("images/goods1.jpg");
width: 100%;
height: 100vh;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
background-position:0% 50%;
}
/スマホ用/
@media screen and (max-width:768px) {
.logo img{
margin-left: 50px;
padding-top:1%;
}
.logologo img{ margin-left: 56px; width:21px; } .icon{ width:30%; } .btn{ position: absolute; top:3%; left:5%; } .nav{ background-color: black; height: 91%; position: absolute; top: 50px; left:1px; transform: translateY(-100%); } .btn:checked ~ .nav{ transform: translateY(0%); } .nav ul{ width:100px; } .message{ width: 80%; position: absolute; top:70%; } .message p{ font-size: 85%; } .message h5{ background-color: blanchedalmond; font-size: 70%; } .nav li{ color: rgb(252, 252, 252); font-size: 15px; list-style: none; padding-left:15px; } .sphone{ position: absolute; top:3%; left:10%; }
}
試したこと
translateで表示を上部へ隠すことはできたのですが、チェックボタンを押しても
ナビゲーションが出てこない状態です。
.nav{
background-color: black;
height: 91%;
position: absolute;
top: 50px;
left:1px;
transform: translateY(-100%);
}
.btn:checked ~ .nav{ transform: translateY(0%); }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/07 16:48
2021/07/08 01:02