質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

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

CSS

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

Q&A

解決済

2回答

176閲覧

position:relativeとabsolute

kazu25

総合スコア27

HTML

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

CSS

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

0グッド

0クリップ

投稿2018/04/01 19:25

CSS

1<html> 2<head> 3<title>CSS size of div example</title> 4 5<style type="text/css"> 6 7 .gallerycontainer{ 8 position: relative; 9 10 } 11 12 .thumbnail img{ 13 border: 1px solid white; 14 margin: 0 5px 5px 0; 15 } 16 17 .thumbnail:hover{ 18 background-color: transparent;/*透明*/ 19 } 20 21 .thumbnail:hover img{ 22 border: 1px solid blue; 23 } 24 25 .thumbnail span{ /*CSS for enlarged image*/ 26 position: absolute; 27 background-color: lightyellow; 28 padding: 5px; 29 left: -1000px;/* 画面から飛ばしてる(imgの要素が追加されたときに重なってしまうから)*/ 30 border: 1px dashed gray; 31 visibility: hidden; 32 color: black; 33 text-decoration: none; 34 } 35 36 .thumbnail span img{ /*CSS for enlarged image*/ 37 border-width: 0px; 38 padding: 2px; 39 } 40 41 .thumbnail:hover span{ /*CSS for enlarged image*/ 42 visibility: visible; 43 top: 0; 44 left: 230px; /*position where enlarged image should offset horizontally */ 45 z-index: 50; 46 } 47</style> 48</head> 49<body> 50 <hr> 51 <div class="gallerycontainer"> 52 <a class="thumbnail" href="#thumb"><img src="../img/photo.jpg" width="100" height="66" border="0" /><span><img src="../img/pic.png" /> 53 <br />Mother Earth.</span></a> 54 55 <a class="thumbnail" href="#thumb"><img src="../img/pic.png" width="100" height="66" border="0" /><span><img src="../img/photo.jpg" /> 56 <br />My Staff</span></a> 57 <br /> 58 59 <a class="thumbnail" href="#thumb"><img src="../img/photo.jpg" width="100" height="75" border="0" /><span><img src="../img/pic.jpg" width="100" height="100"/> 60 <br />All the best</span></a> 61 <br /> 62 63 </div> 64 65</body> 66</html>/body> 67</html>

質問内容

.gallerycontainerの{position: relative;}というスタイルは.thumbnail span{position: absolute;}の親要素として指定するために記述されているのだろうと思います。
では、.thumbnail:hover spanの{top: 0;とleft: 230px;}にはrelativeもabsoluteも記述されていませんが、何を基準にして動かしているのでしょうか。よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

勘違いされているようですが:hoverはもとの要素(今の場合だと.thumbnail span)に「ホバー時にだけ『追加』で当たるcss」になるので.thumbnail span{position: absolute;}があたっているので.thumbnail:hover spanには{position: absolute;}があたっている前提となります。

なので「relativeもabsoluteも記述されていません」ではなく記述する必要がありません。:hover時に追加または上書きしたいcssを書くだけです。

本当に何もない場合はイニシャルコンテンツブロック(bodyだったかな)が基準になります。そうでない場合は自分の親でposition:static以外の要素を持つ一番近いものが基準になるはずです。

投稿2018/04/01 23:11

sousuke

総合スコア3828

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

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

0

.thumbnail:hover spanの{top: 0;とleft: 230px;}にはrelativeもabsoluteも記述されていませんが、何を基準にして動かしているのでしょうか。

「基準」・・・.thumbnailをホバー(:hover)した時にspan内のイメージとテキストを表示させる

「relativeもabsoluteも記述されていない理由」・・・「sousuke」さんの回答のとおりです。


サンプルや参考とするサイトのコードでしょうか?
推測ですが、質問者さんの勉強してきたCSSとは違う組み方で、疑問に思う部分があるかと思いますが、CSSの組み方は意図する表現に対し、ひとつしかない訳では無く、複数の組み方がある場合が多いです。何が適した組み方かは、状況により異なります。

投稿2018/04/02 05:03

yoshinavi

総合スコア3523

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問