CSS+jQuery:ハンバーガーメニューを作る×コメディ

コント:別の世界線を描くギャル
※コードは下部へ

ねー聞いて、あい。 昨日AIに「タイムリープできるアプリ作って」って頼んだら、 出来た!
え?ま?


マジ
で、行ったん?


うん。ピカソに会った
えー?画家の?


なんか、「物は見る角度によって違う。それをどう表現したらいいか?」って言ってて
うん


「みんな一方から見たものしか描いてない。それは正しくない」とか言って
あーね


絵じゃなくても良くね?と思って 出来ますよー、って 折り紙見せた
えー


おばあちゃんに 昔教えてもろた鶴 折って
で、ピカソどした?


「彫刻でも絵でもない、新しい表現だ!」って、めっちゃハマっちゃって、 絵もいいけど 折り紙作家になりたいって ピカソ、なんかブチ上がってた
アゲ~


絵描くより折り紙の方が早くね?
説ある でも変えちゃったね、美術史 てか、ほんとに今歴史変わってる感じ?


いや、なんかー その時点で 別の世界線に分岐するらしくてさー
あーパラレルかぁ


そそ。だから大丈夫 記念に書きかけのをもらった
ええやん。なんて作品?


途中だったからー、 ピカソからもとって「ピカ中」
(ポケモンじゃん



あとゴッホにも会ってー
あー、生きてる時はぜんぜん認められんかったって言う ゴッホ?


そー。 なんか絵、売れないってめちゃ落ちててー ヤバそだったからー
うん?


スマホで一緒にセルフィー撮って、 新聞社に「この人の絵、めっちゃ評価されて日本の美術館にも飾られますよー」って 推して バズらせた
ええやん


最初はみんな スマホにビビってたけど 日本でもウケるってのは信じてくれた
なるー


弟さん、お兄さんの絵、売りさばくって 激アゲ
弟さん、やっぴー


だってさー、いなくなってから、 やっぱ良かった、とか言われても意味なくない?
それなー


男もさー、 別れてから「他の子と付き合ったけど、やっぱお前が良かったわ」って言われても、 もうその時は気持ちなくない?
わかるー、 元カレは不可逆的に今カレにはならん

(何で告られた話になってんだよ。 しかも言い方、物理科学じゃん


そんで子供の頃のバンクシーにも会った
えー


スケッチブックに落書きしてたから 「街中でスプレーで描いたらみんなに見てもらえるよー」って 言っといた
(リープして人助けしてんなー。 てか予言? いや、変えたからそうなってんのか??

コード解説編
変える、っていえばさー、 ハンバーガーメニューも三重線からバツに変えるのがキモよね

スマホサイトには欠かせない、メニューの多重線ーハンバーガーメニュー。これを作りたいなら、jQueryというJavaScriptのライブラリを使います。JSは動きの制御をするだけですので、表示-デザインに関してはCSSを使います。
まずjQueryをダウンロード
まずはjQueryをダウンロードして、HTMLに読み込ませましょう。

「ブラウザに無数のアルファベットが出てきた!」という人は
ブラウザの「ファイル」から「保存」してください。
ヘッダーの設計は、、、

実用面を考えて、ヘッダーの中央にロゴを配して、
右側にハンバーガーメニューを置くという設計にします。
ロゴは幅 112px、縦45pxのもの仮定とします。
HTMLはこちら
Headerのnavに開いた時に表示するgnavと開く前の横の多重線をnav__iconを設定します。
gnavはリスト表示。最初の行にはタイトルを書くようにしています。
nav__iconはspanで表記してCSSで線を描画します。
HTML
< header id=“header”>
< nav>
< figure class=“logo”> < img src=”logo.png” width=”112″ height=”45″ alt=“logo”/></figure>
< ul id=“gnav”>
< li class=“menuTitle”>MENU </li>
<li class=“menu”>< a href=“tm_menu.html”>メニュー</a> </li>
<li class=“menu”>< a href=“tm_menu.html”>メニュー</a> </li>
<li class=“menu”>< a href=“tm_menu.html”>メニュー</a> </li>
<li class=“menu”>< a href=“tm_menu.html”>メニュー</a> </li>
< div class=“nav__icon”>
< span> </span>
< span> </span>
< span> </span>
</div>
</nav>
<!–/Nav–>
</header>
CSSはちょっとややこしいですが
Headerの高さを85pxに背景は白にしています。
ロゴの配置はデバイスの中央に常にくるようにcalcで設定。中央値の50%からロゴ画像の半分を引いた値です。nav__iconでハンバーガーの全体のサイズや配置を設定し、spanで線の描画をします。
線を多重に見せるように、それぞれの高さを設定。
タップした時にX印になるようにactiveクラスで45度の回転を指定します。真ん中の線は非表示。最後にgnavを非表示にしておきます。
CSS
#header{
margin:0 auto 85px;
position: relative;
z-index: 10;
}
/* ハンバーガーメニュー */
nav {
background: #FFF;
width: 100%;
position: fixed;
top: 0;
display: -webkit-flex;
display: flex;
align-items: center;
}
.logo {
margin-top: 25px;
margin-left: calc(50% – 112px / 2);
margin-right: auto;
}
.nav__icon,
.nav__icon span {
transition: all .5s;
}
.nav__icon {
width: 38px;
height: 25px;
margin-right: 20px;
position: relative;
cursor: pointer;
}
.nav__icon span {
background: #000;
position: absolute;
left: 0;
width: 100%;
height: 2px;
}
.nav__icon span:nth-of-type(1) {
top: 0;
}
.nav__icon span:nth-of-type(2) {
top: 12px;
}
.nav__icon span:nth-of-type(3) {
bottom: 0;
}
.nav__icon.active span:nth-of-type(1) {
-webkit-transform: translateY(12px) rotate(-45deg);
transform: translateY(12px) rotate(-45deg);
}
.nav__icon.active span:nth-of-type(2) {
display: none;
}
.nav__icon.active span:nth-of-type(3) {
-webkit-transform: translateY(-12px) rotate(45deg);
transform: translateY(-12px) rotate(45deg);
}
#gnav {
position: absolute;
top: 3px;
left: 0;
width: 70%;
z-index: 10;
text-align: left;
height: auto;
}
.menu {
background: #FFF;
width:100%;
display:block;
height: 52px;
line-height:52px;
font-size:1.2rem;
}
.menuTitle {
padding-left:8%;
background: #FFF;
width:92%;
display:block;
font-weight: bold;
height: 40px;
line-height:40px;
letter-spacing: 0.05em;
color: #000;
}
.menu a {
padding-left:8%;
display: block;
border-top: 1px solid #ededed;
letter-spacing: 0.05em;
color: #000;
}
.menu a:hover {
color: #e55ebf;
}
#gnav {
display: none;
}
最後に肝心のハンバーガー用のスクリプトを記述
Jqueryを使いますので、必ずその下部にコードを配置してください。
slideToggleを使ってgnavを表示させる設定です。
クリックイベントでnav__iconにactiveクラスを付与します。
script
$(function(){
$(‘.nav__icon’).on(“click”, function() {
$(this).toggleClass(‘active’);
$(‘#gnav’).slideToggle();
});
});

javascriptとcssの役割を切り分ける
cssでも動きは作れますが、基本的にcssは書式設定。
動かすプログラムはjavascriptに任せる、と考えておくとコードの書き分けも理解しやすいと思います。

あー、あとソクラテスにも会った
(もうなんか すごいな

古代ギリシャじゃん。


「なぜ人は傲慢になるのか、なぜ全て分かった気になるのかー?」って悩んでたから 「自分が知らんって事を知る事が大事じゃない?」って言ったら、 それだ!って叫んでたわー
(あー無知の知だなー え、世界線、どうなってんの? 同じなの?!


「そなたは賢人だ」とか言われてさー、 一緒に知恵を極めようとか言われたけど
えーすご。 でどした?


服が鬼ダサかったから、嫌だなーって 断った。 だってペラペラの布なんよ
ソクラテス、フラれたかー


ウチ、結構この世界好きだからさー
えーエモ


かわちいキャミ着れん世界 マジ有り得ん
それなー


Share Me !