ここから本文です

rel属性について

daxxuさん

2012/1/302:26:54

rel属性について

lightboxを使用して気になることがあります。
relを"lightbox"として属性を与えるのはかまいませんがなぜこれが可能なのですか?

http://www.mitsue.co.jp/glossary/html/attribute/rel.html

ここのリンク先で説明しているような属性名が予約されているのにそれ以外の属性名を使うことはどう理解したらいいのですか?
調べたところlightboxのソースコード内で、メソッドを使い"lightbix"rel属性のタグを探し出してlightbox機能を適応させているのはわかりましたが、結果それで機能するのことが可能というのはかまいませんが、やはり上記リンク先のような属性名以外を使用するという考え方がわかりません。これは推奨された使い方なのでしょうか?
一応プログラマの基本的な知識はあるので一般的な専門用語はわかります。

誰か詳しい方がいればどうぞよろしくお願いします。

閲覧数:
1,421
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

rishorusさん

2012/1/303:32:14

まず、リンクタイプについて簡単に説明します。

A → B とリンクを張った場合、HTML ではリンクの「意味」を rel 属性で示すことができます。例えば、rel="help" なら「A の補助情報は B である」となります。このとき UA は、補助情報 B をどのようにユーザに提示するか選択することができます。例えばポップアップ表示や、サイドバーへの表示など、A の文脈の流れを止めない補助的な表現が良いでしょう。

このように、「リンクの意味」と「UA の振る舞い」を分離する仕組みがリンクタイプです。HTML 文書の論理構造とスタイルシートを分離すれば便利なように、リンクの意味と UA の振る舞いを分離しておけば、後で役に立つんじゃないかな、というものです。
※ XLink ではさらに「リンクの目的」を分けます。

---
原則として、HTML の要素を勝手に拡張できないのと同じように、リンクタイプも勝手に拡張することはできません。HTML 4.01 で使えるリンクタイプと、XHTML で使えるリンクタイプは、それぞれ次に載っています。

http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/types.html#type...
http://www.w3.org/1999/xhtml/vocab/

これら以外のリンクタイプを用いるときはプロファイルを作る必要があります。このことは上記リンク先に書かれています。

しかしながら、リンクタイプが長らく蔑ろにされてきたのも事実です。IE を考えれば rel="stylesheet" ぐらいしかマトモに使えなかったでしょう。まあ、ブラウザを限るならば、例えば Mozilla/Firefox や iCab などはナビゲーションバーを作ってくれてはいましたし、最近では AutoPagerize が rel="next" を拾ってページをつなげてはくれるのですが。

HTML/HTML5 ではリンプタイプのプロファイル制を廃止し、登録制にしました。その方が UA でサポートされる可能性が高いからです。

http://www.whatwg.org/specs/web-apps/current-work/multipage/links.h...
http://microformats.org/wiki/existing-rel-values

---
lightbox が出た当初、rel 属性をマトモに使えるブラウザがありませんでした(今でもそんなに変わりませんが)。また、どうせ未知な値は無視されるでしょう。だから、lightbox は rel 属性をスクリプト起動の目印にしたわけです。

もちろん、これは好ましい方法ではありませんでした。しかし、現在は上記の登録リストの中にに rel="lightbox" が載っています。ですから、HTML/HTML5 文書であれば、rel="lightbox" を書いても大丈夫です。


---
余談ながら、ご覧の通り、HTML5 ではリンクタイプというより、もはやコマンド化しています。HTML 要素で言えば center とか font と言った物理要素の追加に等しいわけで、これまた決して好ましくない、と私個人は思います。

しかし今、望まれているのはこういうものなのでしょう。必要ならば、将来的にリンクタイプとリンクの振る舞いが分離されていくかもしれませんし、気長に考えることにします。

また、ここでは詳しく触れませんが、(X)HTML+RDFa を使うときもリンクタイプを拡張できます。この場合は xmlns 属性、または prefix 属性を使って、手軽に拡張できます。

質問した人からのコメント

2012/1/3 05:40:21

詳しい説明ありがとうございました。十分参考になりました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。