• TOP
  • ブログ
  • プロフィール
  • お問い合わせ
  • ドロップダウンメニュー(レスポンシブ)を実装してみた

    ドロップダウンメニュー(レスポンシブ)を実装してみた

    ナビゲーションにホバーすると、下層のナビゲーションが出てくる、いわゆるドロップダウンメニューを作ってみました。
    調子に乗ってレスポンシブで、スマホのときはアコーディオンメニューにしようとか考えて、結構苦労しました・・・。

    デモはこちらから
    DEMO

    以下、コードです。
    HTML

    liの中にulを入れる入れ子構造です。普通に打つとかなりめんどくさいですね。何かしら楽をする方法を使う方がいいでしょう。私の場合はemmetでやりました。

    CSS

    動きに関わる部分は特にありません。ほぼ見た目を整えるために使ってます。「>」は子要素を指定するセレクタです。今回みたいな入れ子構造のものは子要素のみを指定してあげればclass・idなしでも実装できます。(メンテナンス性とかの良し悪しはさておき・・・)

    jQuery

    画面サイズによってイベントを切り替えています。700pxより大きい場合はhoverイベントが、小さい場合はclickイベントが動作します。さらに700px以下の時はmenuというボタンが現れ、ナビゲーションが格納されます。これは読み込み時と画面サイズが変わったときに読み込むようにしています。

    ちなみに.on(‘load resize’)の中にクリックやホバーのイベントを入れると正常に動作しません。
    jQueryのonイベントは入れ子にすると、外側のイベントの読み込みを内側のイベントに継承してしまいます。つまり、.on(‘load resize’)の関数の中に.on(‘click’)を入れると、リサイズが起こった回数だけクリックされたという判断がされてしまい、アコーディオンが何度も開いたり閉じたりしてしまうのです。
    なので、イベントごとにウィンドウサイズを判断して、サイズによる出しわけをしています。

    openerという変数は他のアコーディオンが開いているかどうかを判断しています。どのアコーディオンも閉じているときは、クリックしてすぐ開きますが、どれかのアコーディオンが開いているときは、閉じ終わってから開くようになっています。

    =>・・・この記号はES2015から実装されたアロー関数というものです。setTImeoutなどの通常thisを継承できない場合でも、thisを継承してくれるというものです。(このあたり説明すると長いので、また別の機会にでも。)ちなみにES2015の仕様は、サポートしてないブラウザも結構あるので(iPhone5sではうごきませんでした)、使用時は注意が必要です。

    今回は、イベントが重なるとだめなところとか、アロー関数とか、実際に試すことができたので面白かったです。
    以下参考にしたサイトと書籍。大変勉強になりました。

    参考サイト:
    jQuery.on()は追加式なのでイベントの重複登録に注意しよう

    416番地 setTimeoutの話

    参考書籍:
    『フロントエンドエンジニアのための現在とこれからの必須知識』(マイナビ出版)

    yori3

    2016年2月22日
    【Web】いろいろ試してみた話
    コーディング
  • タブ切り替えメニューの実装

    みなさん、お久しぶりです。気が付けば最後の更新から1か月半。だいぶ更新してないと思い、こないだ仕事で実装したタブ切り替えメニューをご紹介します。

    まずはDEMOから。
    DEMO①

    mainArea内のdivの中身はご自由にどうぞ。

    HTML

    CSS

    jQuery

    ○コード解説
    メニューと下の表示エリアのid名の数字をいっしょにすることで、for文で操作しやすくしています。
    表示しているメニューをクリックしてもフェードアニメーションが発生したので、currentというクラス名をつけて、条件分岐させています。slideとかにしてもおもしろい動きになるかも。

    次回はドロップダウンメニューの予定。いつになることやら・・・。

    yori3

    2016年2月6日
    【Web】いろいろ試してみた話
    コーディング
  • まにまにフェスティバル参加レポート(?)

    昨日、まにまにフェスティバルに参加してきました。

    まにまにフェスティバル(まにフェス)P4

    まにまにフェスティバルとは、Web系・IT系セミナー、展示会で今年で4回目になるそうです。Webデザイナーやエンジニア、クリエイターなど様々なIT業界の方が登壇し、ご講演をしていただきました。
    3階が展示とステージ、4階はチケットが必要な大きなステージで、私はほとんど4階のステージでの講演を聴かせていただいていました。
    たくさん魅力的な内容の講演があったのですが、その中でも特に個人的に気になったこと・感想としては
    ①WebデザイナーはWebに特化する。
    ②ウェラブルコンピュータに注目。
    ③Edgeはこれから期待できる。
    ということです。

    ①あれこれ手を出すより、WebならWebで深く身につける方がよいというお話がありました。これからある程度のことは機械による自動化が進むと考えられる中で、必要とされるのは機械ができない深い部分、細かい部分ができる人材ということでした。なので何か1つ、より深い部分を身につけようと思いました。

    ②ウェラブルコンピュータはAppleWatchやドローンなど、かなり現実味のある話だと思いました。将来、Webデザイナーがそういった操作系のデザインをすることになるのではということで、そのあたりにも関わっていけるようにがんばりたいと思います。

    ③そして、Edgeです。IEに代わりwindows10に搭載されたブラウザですが、これがかなり良さそうでした。レンダリングシステムはwebkitに近いという話。さらにchromeやsafariの拡張機能も使える予定だったり、標準で、絵や字を書き込んでキャプチャーを撮れる機能があったりと、かなり期待させてくれました。近々windowsをアップデートして使ってみたいと思います。
    あと、1月13日でIE8以前のIEがサポート終了というのも大きなお話でしたね。Microsoftの人が「IE用の記述もベンダープレフィックスもいらない」と断言されていたので、聴いていてかなりテンションが上がりました。

    他にもいい話がいっぱいあったのですが、私の力不足でまとめきれず、すみません。ご講演いただいた方々、貴重なお話を本当にありがとうございました。

    yori3

    2015年12月20日
    イベント参加した話
    セミナーレポート
  • 同じ方向にスライドし続けられるカルーセル

    みなさん、お疲れ様です。

    今回は同じ方向にスライドし続けることができるカルーセルを作成したので、ご紹介します。

    2017年1月8日更新
    コードを直して挙動がだいぶましになったものをあげましたので、こちらからどうぞ

    同じ方向にスライドし続けられるカルーセル第2弾

    5秒ごとに要素が切り替わっていきます。左右のボタンでも切り替えられます。スライドで切り替わるものは以前にも作ったのですが、今回はずっと同じ方向にスライドするようにしました。

    DEMO①

    HTML

    CSS

    jQuery

    liをposition:absoluteにして、動かしています。一回のスライドごとに左からの位置を取得し、それにli要素一つ分の幅を足したり、引いたりすることでスライドさせています。li要素の幅と高さでwrapperの大きさやボタンの位置を制御しているので、CSSはそこだけ変えれば好きな大きさで使うことができます。フリックもつけています。仕組みは以前のものと同じです。

    ○今回使ったjQueryのいろいろ
    ・.stop():jQueryのアニメーションの処理を制御します。今回は時間で動くタイミングとボタンを押すタイミングが被ったときにきちんと処理できるように引数を(true,true)にしています。
    詳しくはこちらをご覧ください。
    【jQuery】stopメソッドを理解する

    ・.offset().left:要素がページの左から何pxの位置かを取得します。

    見たいところに飛べるボタンもつけたかったのですが、実装できませんでした。いつか挑戦したいと思います。あと、早く動かすと処理が追いつかないのも何とかしたいと思います。

    それでは!

    yori3

    2015年12月13日
    【Web】いろいろ試してみた話
    コーディング
  • 私のchrome拡張機能

    みなさん、お疲れ様です。

    突然ですが、ブラウザは何をお使いですか?
    私は専らchromeを使っています。理由はいろいろありますが、何よりも拡張機能がいろいろ便利だからです。

    今回は私がよく使っている拡張機能をご紹介したいと思います。
    Web制作で役立つものから普段使いで便利なものまでいろいろありますので、参考までにどうぞ。

    1.Appspector
    この拡張機能は、サイトを開くだけで使用しているCMSやアプリケーションなどの情報がわかるというものです。導入していると、アドレスバーの右端にアイコンでいろいろ表示されます。私は主にWordPressで作られたサイトを探すときに使っています。

    2.ColorPick Eyedropper
    こちらはサイトから色を抽出できるエクステンションです。16進数の表示はもちろん、RGBやHSLも表示してくれます。サイトの色を参考にしたいときに使えます。

    3.Page Ruler
    こちらは要素の大きさを測ることができるエクステンションです。幅と高さだけでなく上下左右からの位置、さらに選択範囲を動かすこともでき、ただ測るだけでなくいろいろな使い方ができます。

    4.Fire Shot
    こちらはサイトのキャプチャーを撮ることができます。ページ全体・見えている範囲・選択した範囲の3通り選べます。プレゼンとかデザインの一部を持って来たりするときに使えます。

    5.Pushbullet
    こちらはサイトのURLを共有できるエクステンションです。他の人とも共有できますし、スマホでアプリをダウンロードすれば、そのままスマホにURLを送ることもできます。共有できるアプリはいろいろあると思いますが、これは1クリックでできるところが魅力的です。

    6.OneTab
    こちらは開いているタブを1つにまとめることができます。タブを開きすぎると動作が重くなる。かといって閉じたくないというときに使うとよいです。ブラウザを閉じたり、PCをシャットダウンしても残っているので、一時的なブックマークとしても使えます。

    7.Google Mail Checker
    Googleメールのエクステンション。未読メールの数を表示してくれるので、作業しながらメールの受信を確認できます。スマホのアプリでええやんとか言わないで・・・。

    8.Incredible StartPage – Productive Start Page
    これを入れると、新しくタブを開いたときブックマークや履歴を表示してくれるようになります。個人的にchromeのブックマークは使いづらい印象があるので、結構重宝しています。

    9.Googleマップ™のツール
    エクステンションのページにこういう名前で載ってるのです(笑)。ただ単にGoogleマップが開くだけですが、1クリックで開けるようになるので、少し手間が減る気がしています。

    10.Auto Replay for YouTube
    その名のとおり、YouTubeでリピート再生ができるようになります。作業用にBGMを流すときに使えます。

    他にもいろいろ入れてますが、よく使うのはこんな感じです。皆さんはどんなの入れてますか?
    おすすめのものとかあったら教えてください。

    yori3

    2015年12月6日
    【Web】いろいろ試してみた話
    その他
  • CSSのお話 第5話【「先生、レスポンシブがしたいです。」】

    CSSのお話 第5話【「先生、レスポンシブがしたいです。」】

    (※これから紹介するのはほんの一例であり、私の個人的見解を含みます。これが絶対ということはないですし、もっと良いやり方があったり、コンテンツの内容によって違ってきたりするということは理解しておいてください。)

    生徒「レスポンシブって難しい・・・。」
    先生「どうしました?」
    生徒「先生、レスポンシブがうまくできないんです。」
    先生「レスポンシブとはどういうことを言うか、わかりますか?」
    生徒「PCでもスマホでもサイトが見られるということですよね?」
    先生「そうですね。もう少し詳しく言えば、一つのHTMLソースをデバイスや画面サイズに応じて適切に表示できるようにすることですね。なのでただ画面サイズに対して縮めただけというようなレイアウトではレスポンシブと呼べるかは微妙なところですね。」
    生徒「そうなんですね。」

    先生「簡単なコードを例にレスポンシブのやり方について見ていきましょう。まず、用意したHTMLはこちらです。」



    「そしてそれに対してこのようにスタイルを設定します。」



    「その見栄えがこちら」
    DEMO①

    「まずはPC用に固定値でレイアウトを決めました。次にこれを画面サイズに応じて最適なものにしていくのですが、このとき幅や余白などの数値はbodyに対して相対的に設定したいので、%にします。
    ということで%にしたものがこちらです。今回は幅のみ%指定です。」



    DEMO②

    「これで画面を縮めても表示されてるでしょう。どこまでも伸びていくと気持ち悪いので、max-widthを指定しています。」
    生徒「でも、先生。縮めていくとリストやコンテンツが狭くなりすぎる気がするのですが。」
    先生「そうですね。同じレイアウトのまま画面サイズが小さくなれば見づらくなります。そこでブレークポイントを指定しましょう。」
    生徒「ブレークポイント?」
    先生「ブレークポイントとは画面サイズが変化したときにスタイルが変わる画面幅のことです。メディアクエリー(@media screen snd …)でブレークポイントを指定した、その画面サイズまでの間でのみ違うスタイルを適用させることができます。(※デバイスサイズや向きによっても分けられます。詳しくはこちら
    デバイスに合わせてCSSを振り分ける「Media Queries」)
    メディアクエリーで画面サイズ600xp以下の時のスタイルを指定したものがこちらです。(@media以外は②と一緒です)」



    DEMO③

    「これだと画面サイズが小さくなってもある程度見やすさを維持できていると思います。」

    生徒「そうですね、コンテンツの幅もあるし、ナビのボタンもタップしやすいです。」
    先生「実際にはこれにコンテンツの内容が入ってくるので、これだけでレスポンシブ完成というわけにはいきませんが、基本的な考え方はこんなかんじです。」
    生徒「そうなんですね。先生、もう一度レスポンシブに挑戦してみます。」

    参考サイト
    必読!5分でわかるレスポンシブWebデザインまとめ
    レスポンシブWebデザインの作り方(簡単設定方法)

    yori3

    2015年11月29日
    【Web】いろいろ試してみた話
    コーディング
前のページ
1 … 6 7 8 9 10 11
次のページ

©️ 2024 yori3 All rights reserved.