teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

質問修正と、コメントを受け、回答を修正

2019/02/20 09:25

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -1,3 +1,121 @@
1
+ 質問修正と、
2
+ コメントを受けまして、再度回答させていただきます。
3
+
4
+ HTMLの構成から見直された方がいいかと思います。
5
+ 下記でいかがでしょうか。
6
+
7
+ ```html
8
+ <header>
9
+   <a href="index.html" class="logo">
10
+     <img src="img/logo.png" alt="logo" width="68" height="41.125"/>
11
+   </a>
12
+
13
+ <!-- ホバー関連部、ここから -->
14
+   <p class="wrap">
15
+     <a href="mailto:~~" class="mail">
16
+       <img src="img/mail.svg" alt="mail" width="31"/>
17
+       <img class="balloon" src="img/balloon.svg" alt="balloon" width="45"/>
18
+ </a>
19
+   </p>
20
+ <!-- ここまで -->
21
+
22
+   <nav>
23
+     <ul>
24
+ <li class="current">
25
+ <a href="index.html">
26
+ ALL
27
+ </a>
28
+ </li>
29
+ <li class="1">
30
+ <a href="">
31
+ 1
32
+ </a>
33
+ </li>
34
+ <li class="2">
35
+ <a href="">
36
+ 2
37
+ </a>
38
+ </li>
39
+ <li class="3">
40
+ <a href="">
41
+ 3
42
+ </a>
43
+ </li>
44
+ <li class="4">
45
+ <a href="">
46
+ 4
47
+ </a>
48
+ </li>
49
+     </ul>
50
+   </nav>
51
+ </header>
52
+ ```
53
+
54
+ ```css
55
+ header {
56
+ width: 100%;
57
+ position: fixed;
58
+ z-index: 30;
59
+ }
60
+ header .logo {
61
+ float: left;
62
+ margin-top: 21px;
63
+ margin-left: 35px;
64
+ }
65
+
66
+ /* ホバー関連部、ここから */
67
+ .wrap {
68
+ text-align: right;
69
+ }
70
+ .mail {
71
+ display: inline-block;
72
+ margin-top: 29px;
73
+ margin-right: 47px;
74
+ position: relative;
75
+ }
76
+ .balloon {
77
+ position: absolute;
78
+ left: 0;
79
+ display: none;
80
+ top: 100%;
81
+ }
82
+ .mail:hover .balloon {
83
+ display: inline-block;
84
+ }
85
+ /* ここまで */
86
+
87
+ nav {
88
+ text-align: right;
89
+ margin-right: 137px;
90
+ margin-bottom: 60px;
91
+ }
92
+ nav ul {
93
+ margin: 0;
94
+ list-style-type: none;
95
+ padding-left: 0;
96
+ }
97
+ nav li {
98
+ display: inline-block;
99
+ padding-top: 32px;
100
+ padding-right: 41px;
101
+ font-size: 15px;
102
+ }
103
+ nav li > a {
104
+ text-decoration: none;
105
+ color: inherit;
106
+ }
107
+ nav li > a:hover {
108
+ color: royalblue;
109
+ }
110
+ ```
111
+
112
+ .mailの位置取りにfloatを使うのをやめ、
113
+ .balloonを、.mailの中にいれ、
114
+ .mailの位置を基準に、.balloonの位置どりをしました。
115
+
116
+
117
+ ----- 下記元回答 -----
118
+
1
119
  おそらくですが、
2
120
  中のものにfloat効かせているため、.wrapの高さが0になっているのが原因でしょう。
3
121
  floatをどこかでclearさせないと、floatの親要素は高さを持ちません。

1

hoverターゲットの変更の提案

2019/02/20 09:25

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -3,6 +3,8 @@
3
3
  floatをどこかでclearさせないと、floatの親要素は高さを持ちません。
4
4
  また、absoluteを効かせている要素を、float: rightを効かせている要素と同じ位置にさせるには、同じく右寄りにする必要があります。
5
5
 
6
+ また、今回のケースの場合、包括している.wrapをhoverターゲットにしないとうまく動かせないように思います。
7
+
6
8
  下記でいかがでしょうか。
7
9
 
8
10
  ```css
@@ -32,7 +34,7 @@
32
34
  right: 29px;
33
35
  top: 16px;
34
36
  }
35
- .mail:hover .balloon {
37
+ .wrap:hover .balloon {
36
38
  /* img要素は、デフォルトは、inline-blockのためこちらに変更 */
37
39
  display: inline-block;
38
40
  }