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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

Q&A

解決済

2回答

1521閲覧

リンクをマウスオーバーしたときにテキストの裏に円を出したい

kana0701

総合スコア28

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

0グッド

0クリップ

投稿2019/08/07 05:37

リンクをマウスオーバーしたときにテキストの裏に円を出したい

https://www.marchily.jp/
上記のサイトのヘッダー部分のように、リンクをマウスオーバーしたときに円が浮き上がるようなデザインにしたいです。

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

イメージ説明
●がテキストの上にかぶってしまいます。
また●をテキストの中央に配置したいのですがうまくいきません。

該当のソースコード

JS

1$(function() { 2 $('.wrapper').hover( 3 function() { 4 $(this).find('.maru').addClass('active'); 5 }, 6 function() { 7 $(this).find('.maru').removeClass('active'); 8 } 9 ); 10}); 11</script>

CSS

1.wrapper p { 2 position: relative; 3 color: #000; 4 font-size: 20px; 5 background-color: cadetblue; 6 display: inline; 7} 8 9.maru { 10 position: absolute; 11 width: 40px; 12 height: 40px; 13 border-radius: 50%; 14 background-color: pink; 15 animation: pulsate .5s ease-out; 16 animation-iteration-count: 1; 17 top: 0; 18 left: 2%; 19 display: none; 20} 21 22.active { 23 display: block; 24} 25 26@keyframes pulsate { 27 0% { transform: scale(0, 0); } 28 100% { transform: scale(1, 1); } 29}

HTML

1 <div class="wrapper"> 2 <p>よくある質問</p> 3 <div class="maru"></div> 4 </div>

試したこと

まずcssのみでデザインをしようと思ったのですができずjqueryを使って考えてみました。
大体のやりたいことはできたと思うのですが、
z-indexで重ね順をテキストが上になるようにしたのですができませんでした。
また中央に来るように
pを親にmaruをposition: absolute;にしようとしたのですが
50%にしてもダメでした。
分かる方いらっしゃいましたらご教授いただけると幸いです。
よろしくお願いします。

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

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

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

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

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

kei344

2019/08/07 10:21

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。
guest

回答2

0

●がテキストの上にかぶってしまいます。

z-indexを指定してください。

css

1.maru { 2 position: absolute; 3 width: 40px; 4 height: 40px; 5 border-radius: 50%; 6 background-color: pink; 7 animation: pulsate .5s ease-out; 8 animation-iteration-count: 1; 9 top: 0; 10 left: 2%; 11 display: none; 12 z-index:-1; //適当なz-indexを追加 13}

また●をテキストの中央に配置したいのですがうまくいきません。

wrapperクラスにpタグと同じ幅を持たせ、relativeを指定します。その後、maruクラスを中央に margin:auto を使い動かします。
参考 : absolute中央寄せのやり方

css

1.wrapper { 2 display:inline-block; 3 position:relative; 4} 5.maru { 6 position: absolute; 7 width: 40px; 8 height: 40px; 9 border-radius: 50%; 10 background-color: pink; 11 animation: pulsate .5s ease-out; 12 animation-iteration-count: 1; 13 top: 0; 14 left: 0; 15 right: 0; 16 bottom: 0; 17 margin: auto; 18 display: none; 19 z-index:-1; 20}

投稿2019/08/07 06:23

zushi0905

総合スコア683

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

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

kana0701

2019/08/07 06:56

z-indexをマイナスにするという発想は浮かばなかったのでとても助かりました! 参考のURLもありがとうございました!
zushi0905

2019/08/07 07:31

解決しましたか?解決したら解決済にしてくださいね!
kana0701

2019/08/07 07:33

すみません、追加で質問してもよろしいでしょうか? padding-rightで片側にのみ余白をとったら中央寄せでなくなってしまいました。 その場合maruクラスを中央にしてる margin:autoを変更するのでしょうか? 続けての質問になってしまい申し訳ありません。 お時間あるときで構いませんのでご回答いただけたら幸いです。 よろしくお願いします。
zushi0905

2019/08/07 07:45 編集

どこにpadding-rightを追加したかなど状況が全く分からないので答えかねます。 一旦この問題は解決済にし、詳しい状況を載せた質問を新しく作ることを推奨します。 ここからは殆ど憶測で回答するので的外れだったらごめんなさい。 おそらくwrapperクラスにpadding-rightを付与しているのだと思いますが、私の回答だとwrapperクラスのpaddingの高さ,幅の箱のど真ん中に円を置くというcssになっています。marginならば適応されないので、padding-rightをmargin-rightに変更してみてください。
guest

0

ベストアンサー

HTMLとCSSで再現してみたので参考までに。

teratail #204826 - codepen

html

1<div class="circle">text</div>

scss

1.circle { 2 font-size: 24px; 3 font-weight: bold; 4 position: relative; 5 text-align: center; 6 &::before { 7 background-color: #ddd; 8 border-radius: 50%; 9 content: ""; 10 display: inline-block; 11 width: 24px; 12 height: 24px; 13 position: absolute; 14 top: 50%; 15 left: 50%; 16 margin-top: -12px; // heightの50% 17 margin-left: -12px; // widthの50% 18 transition: margin-top .2s; 19 z-index: -1; 20 animation: scaleBack .2s ease both; 21 } 22 &:hover { 23 &::before { 24 animation: scaleStart .2s ease both; 25 } 26 } 27} 28@keyframes scaleStart { 29 0% { 30 transform: scale(1); 31 opacity: 0; 32 } 33 90% { 34 transform: scale(2.15); 35 opacity: 1; 36 } 37 100% { 38 transform: scale(2); 39 opacity: 1; 40 } 41} 42@keyframes scaleBack { 43 0% { 44 transform: scale(2); 45 opacity: 1; 46 } 47 100% { 48 transform: scale(1); 49 opacity: 0; 50 } 51}

投稿2019/08/07 06:20

編集2019/08/07 07:33
k_fujimoto

総合スコア181

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

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

kana0701

2019/08/08 00:39

お返事遅くなり申し訳ありません! わざわざありがとうございます! 自分では思いつかなかったので勉強になりました、参考にさせていただきます!
kana0701

2019/08/08 07:58

お礼後に申し訳ございません。 こちら使わせていただいきたくて下記のソースをコピペしたのですが、自分のPCでは動作が確認できないのはなぜでしょう、、? https://codepen.io/Qanji/pen/wVyjrJ
k_fujimoto

2019/08/08 08:27 編集

ブラウザの要素検証を使用して、クラスにスタイルが適切に反映されているか確認してください。 スタイルは反映されていますか?
k_fujimoto

2019/08/08 08:30

おそらく、SCSSをCSSにコンパイルしていないのではないでしょうか。
kana0701

2019/08/09 08:13

そうでした!そういう細かいところにまだまだ気づけなくて申し訳ないです、、、 CSSになおしてみたら使えました! ありがとうございました!
k_fujimoto

2019/08/09 08:25 編集

> kana0701 解決してよかったですー! ここから話すことは単純に僕の経験に基づく話なので流してもらってもよいですが、コードをちゃんと理解していない状態でコピペだけしているとそういう細かいミスに気づけないと思います。(ちゃんと理解していたらすみません。) なので、参考にしたソースコードの中にわからない所があれば調べてみたり、応用してみることをおすすめします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問