前提・実現したいこと
FontAwesomeを使用しています。
ハンバーガーメニューを表示・非表示させるアイコンを、メニューの状態によって変更したいです。
jQueryでアイコンのhtmlを書き換えたい(上書きしたい)のですが、
######元からあったアイコンの下に疑似要素::before で新しいアイコンが表示されてしまいます。
どうすれば、直せるか教えていただきたいです。
また、足りない情報等ございましたら追記しますので、よろしくお願い致します。
発生しているエラーメッセージはありません。
該当のソースコード
heml
1<body> 2 <header> 3 <div class="header"> 4 <h1>Ryou</h1> 5 <ul> 6 <li><i id="menu-icon" class="fas fa-bars fa-fw"></i></li> 7 </ul> 8 </div> 9 </header> 10 <nav id="slide-menu"> 11 <ul> 12 <li><a href="#profile-btn">Profile</a></li> 13 <li><a href="#skill-btn">Skill</a></li> 14 <li><a href="#works-btn">Works</a></li> 15 <li><a href="#service-btn">Service</a></li> 16 <li><a href="#contact-btn" class="contact-btn">お問い合わせ</a></li> 17 <ol> 18 <li><i class="fab fa-twitter fa-fw"></i></li> 19 <li><i class="fab fa-pinterest-p fa-fw"></i></li> 20 </ol> 21 </ul> 22 </nav> 23</body>
css
1 2/*ヘッダー*/ 3header { 4 width: 100%; 5 height: 70px; 6 position: fixed; 7 top: 0; 8 left: 0; 9 background-color: LightSkyBlue; 10 z-index: 10; 11} 12 13.header { 14 width: 95%; 15 max-width: 1480px; 16 margin: 0 auto; 17 display: flex; 18 justify-content: space-between; 19} 20 21.header h1, .header a { 22 color: #fafafa; 23 line-height: 70px; 24} 25 26.header h1 { 27 letter-spacing: 0.075em; 28 font-size: 35px; 29 font-family: 'Dosis', sans-serif; 30 font-weight: bold: 31 cursor: pointer; 32} 33 34.header h1::before { 35 font-family: "Font Awesome 5 Free"; 36 content: '\f1b0'; 37 font-weight: 900; 38 margin-right: 0.3em; 39} 40 41.header li i { 42 display: block; 43 padding: 0 1em; 44 font-size: 1.2rem; 45 color: #fafafa; 46 line-height: 70px; 47 } 48 49 50/*スライドメニュー*/ 51#slide-menu { 52 width: 300px; 53 height: calc(100vh - 70px); 54 position: fixed; 55 top: 70px; 56 right: 0; 57 z-index: 10; 58 background-color: #fafafa; 59 60 display: block; 61 transform: translateX(100%); 62 transition: transform 1s; 63} 64 65#slide-menu.active{ 66 transform: translateX(0); 67 } 68 69#slide-menu li { 70 line-height: 2rem; 71 margin: 1rem 0; 72 text-align: center; 73} 74 75#slide-menu li a { 76 position: relative; 77 display: inline-block; 78 font-size: 1.25rem; 79 letter-spacing: 0.075em; 80 color: LightSkyBlue; 81}
JavaScript
1$('#menu-icon').click(function(){ 2 $('#slide-menu').toggleClass('active'); 3 if($('#slide-menu').hasClass('active')) { 4 // ハンバーガーアイコンを管理する 5 $('#menu-icon').html('<i class="fas fa-times fas-fw"></i>'); 6 } 7 });
HTML
1アイコンクリック後(chrome検証機能より) 2<li> 3 <i id="menu-icon" class="fas fa-bars fa-fw"> 4 ::before 5 <i class="fas fa-times fas-fw"> 6 ::before 7 </i> 8 </i> 9</li>
試したこと
htmlだけでなく、CSSも変更するように記述しましたが、できませんでした。
補足情報(FW/ツールのバージョンなど)
html5・CSS3・FontAwesome5.11.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/02 07:06