Polymerで自作コンポーネントのレスポンシブ化

Designlab#3 2016/02/25

このエントリーをはてなブックマークに追加
Polymerに実際デザインをあてて
構成を理解してみました。

ストローバッグのWEBデザイナーの正木です。
今回は主にWEB制作者向けのコーディングの技術記事になります。
HTML/CSSを普段書いている立場でWEBコンポーネントのPolymerを理解するため、サイトのトップページサンプルを実際作成してみます。
Polymerではデフォルトのコンポーネントでレスポンシブ対応のものもありますが、理解を深めるため自作のコンポーネントを作ってレスポンシブ化します。

※今回の記事は、実際業務での利用を目的とした内容ではなくトライアルな内容になります。ソースを参考にする場合は自己責任にてお願いします。
※検証ブラウザは、GoogleChrome(バージョン 45.0.2454.93現時点 最新版)になります。

成果物

サンプルソースはこちらから
*jquery-1.11.3.min.js、jquery.slicknav.min.js、scroll.jsは本家サイトからDL下さい。

作成の流れ

・トップデザイン作成
・静的ページレスポンシブ化(グローバルナビはslicknav(jquery)を使用)
・sassをCSSにコンパイル
※上記制作手順は割愛させて頂きます。

・コンポーネント化
こちらを下記より説明致します。

Polymer(1.0)の準備

今回は自作コンポーネントですのでPolymer公式サイトからzipのDLで問題ありません。
※コンポーネントを今後DLするにはbowerの利用が便利です。
Polymer公式サイト 

構成ファイル

まず、できあがったファイルは以下になります。

・コンポーネント
app-article.html (各カード)
app-card-h.html(CardLayout見出し)
app-card.html(CardLayout)
app-circle.html(CircleArea)
app-footer.html(フッター)
app-hero.html(メインビジュアル)
app-menu.html(グローバルナビ)
app-pagetop.html(ページトップへボタン)
app-ring.html(各Circle)

・ページ
index.html(トップページ)

・DLしたzipのPolymer
bower_components/...

・CSS(共通で使うものとslicknav用)
css/...

・画像
images/...

・jqueryなどjavascript
jquery-1.11.3.min.js、jquery.slicknav.min.js、scroll.jsは本家サイトからDL下さい。
js/...

コンポーネント化手順

ざっくりとした手順は、静的HTMLを各パーツ(app-article.htmlなど)に分け、Polymerのルール(後述)に従い記述します。
次に、ページ(index.html)にて各コンポーネントを登録します。
※scriptタグでwebcomponents-lite.min.jsへリンクをします。

											

										    
										    
										    
											
											
											
											
											
											
										

そして、ページ(index.html)のbody内にコンポーネントをタグとして記述します。

											
										    
										    
										    
										    
										    
										    
										

コンポーネントの記述ルール

簡単な見出しパーツで説明します。






  

  


・最初のimportでpolymerを読み込みます。
・dom-moduleのidにタグ名(ファイル名)を書きます。
・templateタグに、cssと内容(ここではh1タグ)を記載します。:hostはコンポーネント(ここでは)自体を指します。
・最後にscriptにタグ名を記載します。

※サンプルはcssを基本構成がわかりやすいようにそれぞれコンポーネントに直接記述しています。
今回のレスポンシブ化ですが、従来使われているメデイアクエリーをコンポーネントに記述する方法をとりました。
今回トップページというベースの幅ありきで制作を進めましたが、完全にパーツ化するのだったらエレメントクエリーのような発想での設計が適しているのかもしれません。

感じたメリット

・htmlの段階でコンポーネント化でき、ヘッダ・フッタなど共通部分を使いまわせる。
・カード部分など繰り返しのパーツのコーディングが楽。
・ネットワークを通じてコンポーネントの利用・公開ができる。
・データバインディングによりデータの受け渡しがしやすい。

結び

従来のデザインを例にpolymerの構成にすることで、コンポーネントの理解の助けとなりましたら幸いです。

補足

jsよりもhtml/cssを書く機会の多い方はWEBコンポーネントの学習をriot.jsから始めるとスムーズです。
riot.jsはhtmlなどの基本的な理解があれば、1〜2日(サンプルのデザイン作成含めて)で基本的な学習ができると思います。

このエントリーをはてなブックマークに追加
0357943550

※調査内容・データにつきましては自己責任にてご利用ください。参考サイトについて掲載不可のものなどありましたらお手数ですがお問い合わせフォームよりお知らせください。