aタグの中にdivタグを入れる場合に付いて質問です。
html5の仕様書を読むと、
(http://www.w3.org/TR/html5/text-level-semantics. …)
aタグはフローコンテンツということになっておりますが、
フローコンテンツの子孫要素にdivを使用することは(仕様書的に)許されていますか?
あわせて、↑の回答の根拠となる仕様書の部分(URLなど)を記載していただくと助かります。
No.1
- 回答日時:
「フローコンテンツの子孫要素にdivを使用することは(仕様書的に)許されていますか?」という質問そのものが無意味だと思う.
「子要素として何を使えるか」ということについてはコンテントモデルを見る必要があるはず. 「当該要素がフローコンテントなのかフレージングコンテントなのか (はたまた別の何かなのか)」は考えてもしょうがないのでは?
参考URL:http://www.w3.org/TR/html5/content-models.html
No.2
- 回答日時:
a要素の内容モデルは Flow content ですから、a要素はdiv要素 (Flow content) を子孫に持つことが可能です。
http://www.w3.org/TR/html5/text-level-semantics. …
http://www.w3.org/TR/html5/grouping-content.html …
No.4
- 回答日時:
はて, 第三者が「何を」理解できない, と思われているのですか?
それは, あらゆる「第三者」が理解しなければならないものなのですか?
この回答への補足
すみません。理解しにくかったですね。
>調べればわかる
↑というのは仕様書のどこに書いてあるのかを、
説明して下さいという意味です。
あなたにはわかることが、
私にはわからないから質問させて頂いているのです。
最初から書けばよかったのですが、私は、実は英語を読解できません。
日本の一般レベルの義務教育しかうけていないのです。
http://www.w3.org/TR/html5/text-level-semantics. …
上記URLに
「4.6 Text-level semantics」
の項目があります。そして、
「4.6.1 The a element」
と続き、aタグの説明があるように私には見えます。
Categoriesの項目には、
Flow content.
When the element only contains phrasing content: phrasing content.
Interactive content.
とありますが、この部分を訳すと、the element(aタグのこと?)はphrasing content.
Interactive content.だけを含みます。
と書いてあるように見えます。
そして、phrasing content.とは何かと言うと、
http://www.w3.org/TR/html5/content-models.html#p …
↑(こちらを参照すると)phrasing contentにはdivタグは含まれていないことがわかります。
さらに、
http://www.w3.org/TR/html5/content-models.html#i …
↑(こちらを参照すると)Interactive contentにはdivタグが含まれていないことがわかります。
つまり、私の解釈が正しいことを前提に進めると、
aタグ内にはdivタグを含むことは出来ないという結論になります。
--------------------------
ここまで思考したあとに、No1さんの回答にある、
--------------------
「当該要素がフローコンテントなのかフレージングコンテントなのか (はたまた別の何かなのか)」は考えてもしょうがないのでは?
--------------------
という1文の意味がわからなくなります。
つまり
--------------------
aタグがフローコンテントなのかフレージングコンテントなのかを考えてもしょうがない。
--------------------
と言ってると思いますが、ここで新たな疑問が生まれます。
「では、何を考えればよいのか?」
******************************************
No1さんは下記のようにも言いました。
--------------------
「aタグの中にdivタグを入れることは許可されていますか」という質問に対する答えが「これだけではわからない」であることもわかるはず.
--------------------
↑この文を見て、私が思ったことは、
aタグの中にdivタグが入るケースと入らないケースがある。
という意味だと思っています。
******************************************
さて、新たな疑問は残ったままです。
---
・個人的に得た回答は「aタグの中にdivタグは含むことは出来ない。」
・No3さんは「入るケースと入らないケースがある。」
回答が食い違ったままです。
さぁ正解はどちらでしょうか。
---
No3さんは調べて回答を得たみたいですが、
私は調べてみて回答を得ましたが、
No3さんと回答が違うようです。
---
No3さんは「調べればわかる」と言っていますが、
それはNo3さんは調べてわかったが、私は調べてもわからなかった。(回答は得たがNo3さんの答えと違う!)
---
調べたのにわからないんですけど、どういうことでしょうか。何か隠してませんか?
情報弱者をイジメてあそんでるだけなんじゃないですか?
No.5
- 回答日時:
#2 です。
訂正。× a要素の内容モデルは Flow content ですから、a要素はdiv要素 (Flow content) を子孫に持つことが可能です。
○ a要素の内容モデルは "Transparent, but there must be no interactive content descendant." ですから、a要素は interactive content を除く Flow content を子に持つことが可能です。
やっと確信もてました。
aタグはdivタグを子供に持てる。で決まりだと思います。
あとは、
No.1さんが、
「aタグの中にdivタグを入れることは許可されていますか」という質問に対する答えが「これだけではわからない」
と発言している意味が解決すれば万事解決するはず。。。
これってつまり、aタグの中にdivタグが入るケースと入らないケースがある。
という意味だと思うのですが、これが本当だとしたらホラーですよ。
No.6
- 回答日時:
ホラーでもなんでもありません. 端的にいえば「#5 は何かを盛大に勘違いしているだけ」です. ただしどうしてそんな風に勘違いできるかは全く不明.
a の Content Model は
Transparent, but there must be no interactive content descendant.
とあります. but 以下はさておいて, この transparent は
http://www.w3.org/TR/html5/content-models.html#t …
にあるように「親要素の content model を継承する」という意味です. 総合すると
・a の親要素の content model が flow content なら a 自身の content model も flow content,
・a の親要素の content model が phrasing content なら a 自身の content model も phrasing content
です. そして, div 要素の category は flow content であって phrasing content ではありません.
いくらなんでもここまでくれば #1 で
「aタグの中にdivタグを入れることは許可されていますか」という質問に対する答えが「これだけではわからない」
と書いたこともわかるはず. 例えば
<div><a ...><div ...>...</div></a></div>
は OK だが
<p><a ...><div ...>...</div></a></p>
はアウト (自分で考えてみてください).
余談だけど, 実は HTML 4.0 においても「そこだけ見ても何を入れることができるのかわからない」要素が存在します. 気付いてない?
すばらしい!200点満点です。やればできるということを証明してしまいましたね!
非常に建設的な回答をありがとう。HTML5の日本の歴史を数ヶ月、、いや数年早めたと感じます。
-------------------------------------------
<div><a ...><div ...>...</div></a></div>
は OK だが
<p><a ...><div ...>...</div></a></p>
はアウト (自分で考えてみてください).
-------------------------------------------
わかりやすすぎる。。畏敬の念すら覚えます。
きっと仕事の出来る方だとお見受けしました。
数々のご無礼をお許しください。
丁稚奉公したいくらいです。
*******************************************
なるほど、Categoryの項目ではなく、Content modelの項目を見るんですね。(今やっと気づいた。)
こういう根本的な部分は早く指摘して欲しいですね。
(自分が平均よりも馬鹿になったような気分。)
ついでに仕様書の見方も伝授していただきたいですねぇ。
頭がよいひとになれそうだから。
No.7
- 回答日時:
To: #6 (Tacosan) さん
ご指摘に感謝します。
#5 の Transparent ですが、「a要素の Content model を継承する」と解釈してしまいました。
つまり、#5 は完全に間違っていました。申し訳ありません…。
http://www.whatwg.org/specs/web-apps/current-wor …
http://www.html5.jp/tag/models/index.html#transp …
---
To: reggaepuncさん
今更ですが、一つだけ気になったので補足を。
> フローコンテンツの子孫要素にdivを使用することは(仕様書的に)許されていますか?
フローコンテンツの Content model というのはありませんから、この質問自体が成り立ちません。
Content model は各要素毎に独立して定義されています。
ご指摘ありがとうございます。
>> フローコンテンツの子孫要素にdivを使用することは(仕様書的に)許されていますか?
>フローコンテンツの Content model というのはありませんから、この質問自体が成り立ちま
>せん。
>Content model は各要素毎に独立して定義されています。
うーむ。。。何をおっしゃってるのかさっぱり。
私はここまで指摘されても理解出来ないレベルのようです。。
大体網羅するのに1年は吹っ飛びそうです。私のレベルだと。
No.8ベストアンサー
- 回答日時:
#2,5,7 です。
---
(例題) A要素がB要素を内包できるか否かを確認したい
この場合、A要素の Content model を見る必要があります。
(ケース1)
1. A要素の Content model は Flow content
2. B要素の Categories は Flow content なので、A要素はB要素を子要素に出来る
実際はありませんが、仮に Flow content に Content model が定義されているとすればこうなります。
(ケース2)
1. Flow content の Content model は Flow content
2. A要素の Categories は Flow content なので Flow content を子要素に出来る
3. B要素の Categories は Flow content なので、A要素はB要素を子要素に出来る
---
(ケース2) がありえない理由がわかるでしょうか。
同じ Flow content でもdiv要素は「Content model: Flow content」ですが、p要素は「Content model: Phrasing content」です。
ある要素の Categories が Flow content だからといって一律に Flow content を子要素に出来るというロジックにはなりません。
http://www.whatwg.org/specs/web-apps/current-wor …
http://www.whatwg.org/specs/web-apps/current-wor …
たぶんわかったと思います。
html4のブロック要素、インライン要素の関係性、概念は捨て去るべきだと思いました。
今までは「html5って、所詮はhtml4からタグが増えたり減ったりしただけでしょ?」
という考えでした。
html4の延長にhtml5があるという理解は、少なくともコンテントモデルに関しては違うという理解で、概ね合っていると思いました。
html5が新しい概念を導入してきたことは残念でもあり、楽しみでもあると思いました。
今期強くお付き合いいただいたthink49さん、Tacosanさんに感謝いたします。
ありがとうございます。
お二方がいてここまでの回答を得られたものですので、
ベストアンサーはお二方に贈ります。
(システム上一つしか贈れないので、現場主義的だった方へ、贈っておきます。)
No.9
- 回答日時:
えぇと....
なるほど、Categoryの項目ではなく、Content modelの項目を見るんですね。(今やっと気づいた。)
こういう根本的な部分は早く指摘して欲しいですね。
とのことですが, これは
・#1 で指摘するようでは遅すぎる. もっと前に指摘してほしかった
・常識的に考えて「コンテントモデル」と「Content Model」が同じものであるはずがない
のどちらの意味でしょうか? それともどちらでもない?
「仕様の見方」についていうと, まず「仕様」というものに慣れているかどうかからはじまります. 自分が「慣れていない」と思うなら, 「見方に疑問はないと思っても一応『どのように見るのか』を確認する」方がよいと思います. ここだと各要素に与えられている「Categories」とか「Contexts in which this element can be used」とかの意味です. そしてそれはだいたい仕様に書いてあるもので (というか書いてなければ仕様の欠陥と言っていい), 今の場合だと 3.2.4 Element definitions
http://www.w3.org/TR/html5/elements.html#element …
にあります. なぜ「そこを見ればいいと考えられるか」といえば, 今考えているのが「a要素とはどういうものか」, 言い換えれば「a要素の定義」だからです. そこで「要素の定義」, 英語では「element definition」のような文字列がどこかにあるはず... と推測することができます.
さて, 3.2.4 Element definitions によれば「子要素として何を使うことができるかは Content model に書いてある」とわかります. a要素では
Transparent, but there must be no interactive content descendant.
と書かれています. これでわかればいいけど「transparent」がよくわからんしリンクもはってあるのでそこをたどれば 3.2.5.2 Transparent content models
http://www.w3.org/TR/html5/content-models.html#t …
にいきつきます. ここには例もあるので, それと突き合せて考えれば結論は難しくないでしょう.
ついでにいうと a要素の categories が
Flow content.
When the element only contains phrasing content: phrasing content.
Interactive content.
となっているのは, 「a要素は
・flow content であり,
・(the element = a要素が phrasing content のみを含むときには) phrasing content であり,
・interactive content である」
と読む必要があります. 2つ目は「transparent content models」との関係で入っています.
追い打ちに強烈な解説をありがとうございます。これ、お金取れるレベルですね。
ありがたや~。
はっきりって英語が沢山で眠くなるのですが少し読みました。
(http://www.w3.org/TR/html5/content-models.html#t …)
--------------------------
The content model of a transparent element is derived from the content model of its parent element
--------------------------
「transparent element」
↑日本人的にはふざけた名前ですよ。。これ専門用語ってやつですか。
この定義を見て初めて理解できますね。
--------------------------
>なるほど、Categoryの項目ではなく、Content modelの項目を見るんですね。(今やっと気
>づいた。)
>こういう根本的な部分は早く指摘して欲しいですね。
↑これは一人ごとみたいなものです。愚痴です。
--------------------------
仕様書の読み方。結構すんなり受け取れました。
「読み方」超大事ですね。
私が最初の質問してる時点では、ここまで深い仕組みだと検討をつけてませんでしたから。
--------------------------
http://www.w3.org/TR/html5/elements.html#element …
あー。↑これはとてもいいですね。
わかりやすい。(日本語でここを引用して頂いたから理解できてるわけですが。)
当初の質問内容を大幅に超えた解説にとても感謝します。
ご縁があればご飯奢らせてください。(うーむ。御大がどこのポジションに所属してるのか興味ありです。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS HTMLのdlとul どちらが正しいと思いますか 3 2023/02/23 11:20
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- HTML・CSS AWSのhtml 1 2023/06/08 23:20
- HTML・CSS 【CSS】特定のリンクを含むaタグを指定できるかどうか? 3 2022/10/15 02:45
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS HTMLタグのあるCSVファイルを利用する方法 4 2023/03/19 14:41
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
質問1.
-
テキストボックスの中にリンク...
-
親要素・子要素
-
HTMLです 四角みたいにして中に...
-
2個のFormを横並びにしたい
-
超音波で洗脳。
-
アコーディオンメニューの二階...
-
CSSのセレクタに指定するbodyと...
-
HTMLです次の意味を持つ要素ま...
-
CSS:overflow要素の印刷について
-
タグの締め
-
下線と文字の間を調整するには...
-
「諸要素」とはどういう意味で...
-
含む含まないという概念自体の...
-
改行ほどは行かないけど、若干...
-
角丸画像の背景色を透明にした...
-
border: noneでボタンの境界線...
-
submit buttonの違い
-
tdに対してmin-heightの定義、...
-
CSSで改行後の行間調整
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ヒトの神秘】美男美女から何...
-
smallにtext-allignが効かない
-
含む含まないという概念自体の...
-
還暦を過ぎた方々に質問です。
-
「諸要素」とはどういう意味で...
-
質問1.
-
textareaの幅を画面と合わせたい
-
角丸画像の背景色を透明にした...
-
2個のFormを横並びにしたい
-
テキストボックスの中にリンク...
-
HTMLです 四角みたいにして中に...
-
CSS:overflow要素の印刷について
-
input type="hidden"で取得した...
-
tdに対してmin-heightの定義、...
-
HTMLページ上でiframeを最前面...
-
タグは大文字と小文字どちらが...
-
HTMLです
-
2行にしたい要素、改行か分割...
-
改行ほどは行かないけど、若干...
-
H1タグを画像にしたい
おすすめ情報