Jadeで作るカスタムタグ入門
この記事は「Web Componentsとかに興味はあるけど、SEOも大事なんだよなー」という方向けの内容です。
rating
タグを作る
例えば、下のように表示されるrating
タグを作りたい場合。
HTMLには<input type="rating" />
も<ratings />
タグも無いので、Jadeで自作します。
まず先にJadeの記法について軽く触れておくと、
a(href="/" target="_blank") Home
のように書くと、コンパイル後に次のようなHTMLが出てきます。
<a href="/" target="_blank">Home</a>
img
タグのような空要素の場合はこう書きます。
img(src="logo.png" alt="ロゴ")
どことなくJavaScriptの関数の呼び出しに似ています。
実際にこういうこともできます。
+say(hello="world")
先頭に+
をつけると関数(mixin)の呼び出しになります。
なので、事前にsay
を定義しておきましょう。
mixin say
if (attributes.hello && attributes.hello !== "")
p Hello, #{attributes.hello}
JavaScriptにそっくりですが、ブラウザ上で実行されるわけではありません。静的なHTMLを出力します。
この場合のコンパイル結果はこうです。
<p>Hello, world</p>
hello
属性を持ったカスタムタグsay
の完成です。
rating
タグの仕様を決める
実装に入る前に、rating
タグとはどうあって欲しいかを明確にします。
-
value
をセットできてsubmit
できるようにしたい -
readonly
属性で読み取り専用にできるようにしたい -
stars
属性で5段階評価から変更できるようにしたい -
max
属性でvalue
の最大値を設定したい -
max
属性がある場合は、stars
との割合でvalue
を表示したい - 星の表示精度は0.5刻み、入力精度は1刻みにしたい
- 入力はタップで行いたい
つまり、
+rating(value="3")
や、
+rating(value="50" max="100")
のようになるイメージです。
rating
タグの完成
長くなりそうなので、先に完成品をご覧ください。
動作の仕組み
CSSを無効にして見ると分かりますが、各星がinput(type="radio")
で実装されています。value
が"0"
の場合もあり得るので、デフォルトのradio
の数は6です。
後はCSSで頑張るのと、JSをちょっとだけ書きました。「星の表示精度は0.5刻み」という仕様がなければ、JSがなくてもちゃんと動きます。
詳しいソースはこちら
rating
タグは少し複雑なので、最初はもう少し簡単なカスタムタグから始めた方がいいかもしれません。
以上です。
Have a nice SEO!
Author And Source
この問題について(Jadeで作るカスタムタグ入門), 我々は、より多くの情報をここで見つけました https://qiita.com/BYODKM/items/53eee7fcac7c0a80bce8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .