🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

2回答

1733閲覧

HTML CSS detailsタグについて

退会済みユーザー

退会済みユーザー

総合スコア0

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/02/04 14:27

前提・実現したいこと

detailsタグについて教えてください
該当のソースコードでいくつかわからない点があります
<-- 1 -->の箇所の指定です

detailsタグの中身を<summary>の横に置こうとしました

質問1.親であるdetailsのheight:10%に対し、なぜmargin-top:-15%;でぴったり合うのか?-10%でないのか?

質問2.親であるdetailsのwidth:30%に対し、70%を設定するにはwidth:300%;の部分は23%で70%になるのではないでしょうか?

質問3.親であるdetailsのheight:10%に対し、90%を設定するにはheight:1000%;の部分は30%ではないのか?

質問4.スマホとPCでは同じ画面にならないのはなぜか?margin-topも大幅にズレる。この理由

以上回答お願いいたします

該当のソースコード

<style> body,html{ width:100%; height:100%; } </style> <details style="width:30%;height:10%"> <summary style="width:100%;height:100%;background-color:red">テキスト</summary> <-- 1 --><div style="margin-top:-15%;margin-left:100%;width:300%;height:1000%;background:yellow"> こんにちは </div> </details>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

質問1.親であるdetailsのheight:10%に対し、なぜmargin-top:-15%;でぴったり合うのか?-10%でないのか?

details10%のため、divmarginはそのさらに15%となります。
(つまり最親に対しては0.6666...%となる)
また、margin%を使用した場合、基本的に親の横幅に対しての比率となります。
よって、今回の結果となります。
(よって、上記の比率も厳密には違う)

質問2.親であるdetailsのwidth:30%に対し、70%を設定するにはwidth:300%;の部分は23%で70%になるのではないでしょうか?

なりません。
detailsの大きさの70%を指定したいならば、そのまま70%を指定しましょう。
なぜなら、単位%は、直親に対しての比率だからです。

質問3.親であるdetailsのheight:10%に対し、90%を設定するにはheight:1000%;の部分は30%ではないのか?

違います。
30%だと、details10%に対して、さらに30%だと、最親に対しての比率は、
3%になってしまいます。
ただ、1000%だと、最親に対しては、100%になってしまうかと。

質問4.スマホとPCでは同じ画面にならないのはなぜか?margin-topも大幅にズレる。この理由

ブラウザによって、実装の仕様が違うからです。

質問者さんが勘違いされているのは、
CSSにおいての単位%に関してです。
%は、最親ではなく、大きさが指定された直親に対しての比率になります。
画面に対しての比率で算出したい場合は、
ビューポート単位を使用するのが最も適切です。
vwvhvmaxvmin

投稿2021/02/05 02:10

編集2021/02/05 02:14
miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/05 02:29

なかなか理解が及ばず、すみませんが、具体的なソースを提示していただくことはできませんでしょうか? [テキスト30%][横70%]でPC、スマホ共にズレがない状態のソースを提示していただくことはできませんでしょうか?
miyabi_takatsuk

2021/02/05 02:33

ソースコードの掲示は、本質問の要件外と認識しているため、掲示しません。 なぜなら、こうなる原因はなぜ?との質問のため、 問題解決は含まれていないからです。 原因に関しては回答の通りなので、理解していただくしかありません。 問題解決をお望みならば、別途質問を立てた方がいいかと。
guest

0

こんにちは。

質問1.親であるdetailsのheight:10%に対し、なぜmargin-top:-15%;でぴったり合うのか?-10%でないのか?

たまたまだ。ウィンドウサイズを変更してみるといいだろう。

<percentage> 包含ブロックの **width に対する**パーセントによるマージンの寸法です。

margin-top - CSS: カスケーディングスタイルシート | MDN


質問2.親であるdetailsのwidth:30%に対し、70%を設定するにはwidth:300%;の部分は23%で70%になるのではないでしょうか?

23%とはなんですか?


質問3.親であるdetailsのheight:10%に対し、90%を設定するにはheight:1000%;の部分は30%ではないのか?

30%の根拠は何か。
パーセンテージの参照先は、包含ブロック(この場合は親要素)。detailsのheight:10%はビューポートの10%だから、ビューポートの90%にしたいのであれば 90%/10%=900% だろう。

<percentage> 包含ブロックの高さのパーセントで高さを定義します。

height - CSS: カスケーディングスタイルシート | MDN


__質問4.スマホとPCでは同じ画面にならないのはなぜか?margin-topも大幅にズレる。この理由 __

margin-topのことであれば、質問1と同じ理由。

投稿2021/02/05 02:08

Lhankor_Mhy

総合スコア36946

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問