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

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

詳細はこちら
Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

hover

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

HTML

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

Q&A

解決済

2回答

1037閲覧

display:noneとdisplay:blockを使用した表示・非表示の切替え

tsuyoshi-ri

総合スコア5

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

hover

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

HTML

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

0グッド

0クリップ

投稿2020/12/02 22:08

前提・実現したいこと

現在簡単なチャットアプリを作成しています。
そのアプリの中でカーソルをhoverすると非表示になっている内容を表示出来るようにしたいです。

発生している問題・エラーメッセージ

親要素である.moreに.more:hoverとし、display:blockを付けています。
そして子要素であるul.more_listにdisplay:noneを付けているのですが内容が消えたままで表示出来ません。

該当のソースコード

html

1.contents.row 2 - @items.each do |item| 3 .content_post{:style => "background-image: url(#{item.image});"} 4 .more 5 %span= image_tag 'arrow_top.png'//ここにカーソルが当たるとliの中身を表示したいです。 6 %ul.more_list 7 %li 8 = link_to '削除', item_path(item.id), method: :delete 9 %p= item.memo 10 %span.name 11 =item.name

scss

1.contents.row { 2 .content_post { 3 margin: 20px 0; 4 padding: 30px; 5 position: relative; 6 height: 400px; 7 color: white; 8 background-size: cover; 9 background-position: center center; 10 border-radius: 3px; 11 box-shadow: 0 0 10px rgba(41, 41, 41, 0.2); 12 .more { 13 position: absolute; 14 cursor: pointer; 15 top: 20px; 16 right: 30px; 17 z-index: 2; 18 height: 100px; 19 width: 80px; 20 text-align: right; 21 ul.more_list { 22 display: none; 23 position: absolute; 24 text-align: left; 25 width: 80px; 26 right: 0; 27 font-size: 12px; 28 background-color: #fff; 29 border: 1px solid #ddd; 30 box-shadow: 1px 1px 2px rgba(0,0,0,0.2); 31 border-radius: 3px; 32 li { 33 border-bottom: 1px solid #ddd; 34 a { 35 padding: 5px; 36 } 37 } 38 } 39 } 40 } 41} 42 43ul.more_list a:hover { 44 background-color: #ffdddd; 45 color: #dd0000; 46} 47 48.more:hover { 49 display: block; 50}

scss

1body { 2 line-height: 1.57; 3 letter-spacing: 0.15em; 4 font-size: 16px; 5 color: #666; 6 font-family: 'Unica One', "Avenir", "游ゴシック", "YuGothic", "ヒラギノ角ゴ Pro W6", "HIragino Kaku Gothic Pro W6", "HIragino Kaku Gothic Pro", "メイリオ", "MS Pゴシック", "MS P Gothic", sans-serif; 7 margin: 0 auto; 8} 9 10.row:before, 11.row:after { 12 content: " ",; 13 display: table; 14} 15 16form input, form textarea { 17 width: 100%; 18 margin: 5px 0 15px; 19 padding: 10px; 20 border: 1px solid #D8D8D8; 21 border-radius: 5px; 22 font-family: "游ゴシック", "YuGothic"; 23} 24 25body { 26 padding-top: 60px; 27} 28 29body, html { 30 height: 100%; 31 background-color: #f5f5f3; 32} 33 34img { 35 display: inline-block; 36 vertical-align: middle; 37} 38 39ul { 40 margin: 0; 41 padding: 0; 42} 43 44ul li { 45 list-style: none; 46 padding: 0; 47 margin: 0; 48} 49 50li { 51 display: list-item; 52 text-align: -webkit-match-parent; 53} 54 55*:before, 56*:after { 57 -moz-box-sizing: border-box; 58 -webkit-box-sizing: border-box; 59 box-sizing: border-box; 60} 61

試したこと

  • display:none;をliに付けてみました。そして、ul.more_list:hover にdisplay:blockを付けてみました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

scss使ったことないし検証もしてないけど詳細度合わせるなら上から書かないとだめなんじゃ?

scss

1.contents.row { 2 .content_post { 3 /*margin: 20px 0; 4 padding: 30px; 5 position: relative; 6 height: 400px; 7 color: white; 8 background-size: cover; 9 background-position: center center; 10 border-radius: 3px; 11 box-shadow: 0 0 10px rgba(41, 41, 41, 0.2);*/ 12 .more:hover { 13 /*position: absolute; 14 cursor: pointer; 15 top: 20px; 16 right: 30px; 17 z-index: 2; 18 height: 100px; 19 width: 80px; 20 text-align: right;*/ 21 ul.more_list { 22 display: block; 23 /*display: none; 24 position: absolute; 25 text-align: left; 26 width: 80px; 27 right: 0; 28 font-size: 12px; 29 background-color: #fff; 30 border: 1px solid #ddd; 31 box-shadow: 1px 1px 2px rgba(0,0,0,0.2); 32 border-radius: 3px; 33 li { 34 border-bottom: 1px solid #ddd; 35 a { 36 padding: 5px; 37 } 38 }*/ 39 } 40 } 41 } 42}

投稿2020/12/03 01:19

編集2020/12/03 01:21
sousuke

総合スコア3830

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

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

tsuyoshi-ri

2020/12/03 06:30

ありがとうございます。解決しました! sousukeさんの仰られるように記述する位置の問題でした。 ありがとうございました。
sousuke

2020/12/03 07:32

位置というよりか詳細度の問題です。scssはcssを簡単に書いているだけのはずですので、最終的に出力されるcssで詳細度が劣らないように書けばいいです。 https://developer.mozilla.org/ja/docs/Web/CSS/Specificity cssを使う上で詳細度についての理解は必須だと思います。
tsuyoshi-ri

2020/12/03 14:18

sousukeさん、詳細度の記事大変参考になりました。 詳細度について意識してコーディングが出来ていなかったので今後は詳細度についても考えながらcssを当てていきます。 本当にありがとうございました。
guest

0

ベストアンサー

おはようございます。

.more:hover { display: block; ul.more_list { display: block; } }

これで如何でしょうか?

投稿2020/12/02 22:26

tomtomtomtom

総合スコア563

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

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

tsuyoshi-ri

2020/12/02 23:26

おはようございます。 ご回答頂きありがとうございます。 上記のコードを試してみましたが挙動に変化はありませんでした。 何か他のcssが邪魔をしているのでしょうか、、、
tomtomtomtom

2020/12/02 23:33

うーん ざっとcssを拝見する限りではそのようには見えませんが、 cssそもそもの優先順位もあったかと思います。 一度、検証ツールで、.moreの:hoverにチェックを入れて、.more_listにどのようなcssがかかっているかを確認していただいてよろしいでしょうか?
tsuyoshi-ri

2020/12/03 02:24

ありがとうございます。 more_listのhoverを検証してみました。 more_listのdisplay:blockが機能していないようなのですが、これが原因でしょうか? 仕事で返信が遅く、せっかくご返信頂いているのにすみません。
tomtomtomtom

2020/12/03 02:33

恐らく記載する位置の問題ですね .more:hover { display: block; ul.more_list { display: block; } } を .more{ 省略 } のすぐ下に書いて下さい。 .more{ 省略 } .more:hover { display: block; ul.more_list { display: block; } } ちょっと}がいっぱい書かれているところになりますので、お間違えないようお願いいたします。 如何でしょうか?
tsuyoshi-ri

2020/12/03 06:27

ありがとうございます!!解決しました!! 今後記述するhover:の位置を対象である要素の親要素よりも外に出さないように気をつけます。 大変勉強になりました。ありがとうございました。
tomtomtomtom

2020/12/03 06:36

cssには優先順位があります。 ・あとから書かれたもの(下の行に書かれたもの)が優先。←今回はこれはクリアしていました。 ・詳しく書かれたものが優先 ・近くに書かれたものが優先 ※詳しく書かれたものとは?? 同じ、.moreをにdisplay:block;を付ける場合 .more{ display:block; } より .contents.row .content_post .more{ display:block; } が優先。←今回問題になった点 ※近くとは? .contents.row .content_post .more{ display:block; } より .more{style:"display:none;"} が優先 ※どうしても上手く行かない時は!importantもあります。 うろ覚えで申し訳ありませんが そんな感じだったと思います^^
tsuyoshi-ri

2020/12/03 14:16

tomさん、ありがとうございます! 非常に分かりやすく勉強になりました。 今後は優先順位の事もしっかりと考えながらコーディングしていきます!! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問