\r\n```\r\n\r\n###目的の図\r\n\r\n![イメージ説明](4a540666dec01a30839b765d7633cd96.jpeg)\r\n\r\n###詳細と問題点\r\n実現したい機能を具体的に言いますと、``
ここホバーで表示
``は``absolute``で``.g1``の下に置いておきつつ、ホバーしたらその位置と高さのままで、``
この高さは可変
``を下に表示したいという機能になります。\r\n\r\n今回の件で難しい問題は、``
この高さは可変
``とあるように、ホバーで表示させる部分の高さが未定であるという点と、``
ここホバーで表示
``は``absolute``であるという点だと思います。","answerCount":2,"upvoteCount":0,"datePublished":"2018-12-02T22:31:05.049Z","dateModified":"2018-12-02T22:37:30.828Z","acceptedAnswer":{"@type":"Answer","text":"JavaScript不使用ですが。\r\n```CSS\r\n.under {\r\n position: absolute;\r\n background: pink;\r\n right: 10px;\r\n left: 10px;\r\n /*bottom: 0;*/\r\n top: calc(100% - 1.5em);/* line-heightが1.5のとき */\r\n width: 150px;\r\n}\r\n\r\n.under:hover .two {\r\n display: block;\r\n}\r\n```**動くサンプル:**[https://jsfiddle.net/j48xm2o1/](https://jsfiddle.net/j48xm2o1/)","dateModified":"2018-12-03T02:31:08.161Z","datePublished":"2018-12-03T02:31:08.161Z","upvoteCount":2,"url":"https://teratail.com/questions/161670#reply-241899"},"suggestedAnswer":[{"@type":"Answer","text":"こんな感じでしょうか(HTMLはそのまま)\r\n```css\r\n/* 下の部分 */\r\n.under {\r\n position: absolute;\r\n left: 10px;\r\n bottom: 0;\r\n width: 150px;\r\n background: pink;\r\n}\r\n.under .two {\r\n display: none;\r\n background: inherit;\r\n}\r\n\r\n/* グリッドレイアウト */\r\nhtml, body, .grid-container {\r\n height: 100%;\r\n margin: 0;\r\n}\r\n.grid-container > div { \r\n box-shadow: 3px 3px 3px gray;\r\n position: relative;\r\n padding: 10px;\r\n margin: 10px\r\n}\r\n.grid-container {\r\n display: grid;\r\n grid-template-columns: 1fr 1fr;\r\n grid-template-rows: 1fr 1fr;\r\n grid-template-areas: \"g1 g2\" \"g3 g4\";\r\n}\r\n.g1 { grid-area: g1; }\r\n.g2 { grid-area: g2; }\r\n.g3 { grid-area: g3; }\r\n.g4 { grid-area: g4; }\r\n```\r\n```JavaScript\r\n$(function(){\r\n\r\n // 親要素からのTOP位置を固定\r\n $('.under').each(function(){\r\n $(this).css({\r\n 'top': $(this).position().top\r\n });\r\n });\r\n\r\n // ホバー時の動作\r\n $('.under').hover(\r\n function(){\r\n $(this).find('.two').show();\r\n },\r\n function(){\r\n $(this).find('.two').hide();\r\n }\r\n );\r\n});\r\n```\r\n[https://codepen.io/anon/pen/wQOGoV](https://codepen.io/anon/pen/wQOGoV)","dateModified":"2018-12-03T02:09:02.790Z","datePublished":"2018-12-03T02:05:33.726Z","upvoteCount":2,"url":"https://teratail.com/questions/161670#reply-241886","comment":[{"@type":"Comment","text":"CSSに変数とは良いテクニックですね。ありがとうございます。","datePublished":"2018-12-03T10:27:09.599Z","dateModified":"2018-12-03T10:27:09.599Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"JavaScriptに関する質問","url":"https://teratail.com/tags/JavaScript"},{"@type":"ListItem","position":3,"name":"JavaScript","url":"https://teratail.com/tags/JavaScript"}]}}}
質問するログイン新規登録
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

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

Q&A

解決済

2回答

1565閲覧

高さが不明なコンテンツを、absolute位置のまま表示させることは可能か?

gankonako

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

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

0グッド

1クリップ

投稿2018/12/02 22:31

編集2018/12/02 22:37

0

1

実現したいこと

CSSでホバーしたとき、目的の図ようにしたいのですが、CSSのコードはどうしたらいいかわかりませんでしょうか?

ちょうどteratailさんで、回答者アイコンにホバーしたときに、その範囲が大きくなるイメージです。

ソースコード

https://jsfiddle.net/xzta0423/

html

1<div class="grid-container"> 2 3 <div class="g1"> 4 <div class="under"> 5 <div class="one">ここホバーで表示</div> 6 <div class="two">この高さは可変</div> 7 </div> 8 </div> 9 10 <div class="g2"> 11 12 </div> 13 14 <div class="g3"> 15 16 </div> 17 18 <div class="g4"> 19 20 </div> 21 22</div> 23 24<style> 25/* 下の部分 */ 26.under { 27 position: absolute; 28 background: pink; 29 right: 10px; 30 left: 10px; 31 bottom: 0; 32 width: 150px; 33} 34 35.under .two { 36 display: none; 37} 38.under.hover .two { 39 display: block; 40} 41 42/* グリッドレイアウト */ 43html, body, .grid-container { height: 100%; margin: 0; } 44.grid-container > div { 45 box-shadow: 3px 3px 3px gray; 46 position: relative; 47 padding: 10px; 48 margin: 10px 49} 50.grid-container { 51 display: grid; 52 grid-template-columns: 1fr 1fr; 53 grid-template-rows: 1fr 1fr; 54 grid-template-areas: "g1 g2" "g3 g4"; 55} 56.g1 { grid-area: g1; } 57.g2 { grid-area: g2; } 58.g3 { grid-area: g3; } 59.g4 { grid-area: g4; } 60 61</style> 62 63<script> 64$('.under').hover( 65function(){$(this).addClass('hover');}, 66function(){$(this).removeClass('hover');} 67); 68</script>

###目的の図

イメージ説明

###詳細と問題点
実現したい機能を具体的に言いますと、<div class="one">ここホバーで表示</div>absolute.g1の下に置いておきつつ、ホバーしたらその位置と高さのままで、<div class="two">この高さは可変</div>を下に表示したいという機能になります。

今回の件で難しい問題は、<div class="two">この高さは可変</div>とあるように、ホバーで表示させる部分の高さが未定であるという点と、<div class="one">ここホバーで表示</div>absoluteであるという点だと思います。

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

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

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

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

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

guest

回答2

0

ベストアンサー

JavaScript不使用ですが。

CSS

1.under { 2 position: absolute; 3 background: pink; 4 right: 10px; 5 left: 10px; 6 /*bottom: 0;*/ 7 top: calc(100% - 1.5em);/* line-heightが1.5のとき */ 8 width: 150px; 9} 10 11.under:hover .two { 12 display: block; 13} 14```**動くサンプル:**[https://jsfiddle.net/j48xm2o1/](https://jsfiddle.net/j48xm2o1/)

投稿2018/12/03 02:31

kei344

総合スコア69643

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

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

gankonako

2018/12/03 10:26

下固定なのに上を指示する逆転の発想はさすが、総合2位は伊達じゃありませんね。ありがとうございます。
guest

0

こんな感じでしょうか(HTMLはそのまま)

css

1/* 下の部分 */ 2.under { 3 position: absolute; 4 left: 10px; 5 bottom: 0; 6 width: 150px; 7 background: pink; 8} 9.under .two { 10 display: none; 11 background: inherit; 12} 13 14/* グリッドレイアウト */ 15html, body, .grid-container { 16 height: 100%; 17 margin: 0; 18} 19.grid-container > div { 20 box-shadow: 3px 3px 3px gray; 21 position: relative; 22 padding: 10px; 23 margin: 10px 24} 25.grid-container { 26 display: grid; 27 grid-template-columns: 1fr 1fr; 28 grid-template-rows: 1fr 1fr; 29 grid-template-areas: "g1 g2" "g3 g4"; 30} 31.g1 { grid-area: g1; } 32.g2 { grid-area: g2; } 33.g3 { grid-area: g3; } 34.g4 { grid-area: g4; }

JavaScript

1$(function(){ 2 3 // 親要素からのTOP位置を固定 4 $('.under').each(function(){ 5 $(this).css({ 6 'top': $(this).position().top 7 }); 8 }); 9 10 // ホバー時の動作 11 $('.under').hover( 12 function(){ 13 $(this).find('.two').show(); 14 }, 15 function(){ 16 $(this).find('.two').hide(); 17 } 18 ); 19});

https://codepen.io/anon/pen/wQOGoV

投稿2018/12/03 02:05

編集2018/12/03 02:09
SakuBlade

総合スコア375

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

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

gankonako

2018/12/03 10:27

CSSに変数とは良いテクニックですね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問