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

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

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

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

HTML5

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

Q&A

1回答

467閲覧

hoverしたら線が伸びるタイプのボタンはどう組むのでしょうか。

moreenbi

総合スコア11

CSS3

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

HTML5

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

0グッド

0クリップ

投稿2017/12/10 10:09

編集2017/12/10 11:01

hoverしたら線が伸びるタイプのボタンはどう組むのでしょうか。
なんとなく、:hoverと::before要素で組むんだまでは辿り着いたのですが、
真似てもうまくいかず・・・。

イメージ説明

理想として思っている上の図を動かすことで
動きは.itemをhover前には6pxの線とmoreが見えて、
.itemをhoverすると6pxの線が10pxの線になり同時にmoreボタンも4px右に移動した形になることです。
もちろん、hoverを外したら、元の6px線とmoreボタンの位置に戻っていくという一連の動きが表現したいです。
線の位置は恐らく今のままで良いです。
伸びる方向は右へ6pxから10pxまで伸びることですね。

うまく動かないことから間違っているコードを組んでいることはわかりますが、
どうすれば正しく組めるのか全然糸口もわからない状態です。
こう組むのよと教えて頂けるととても助かります。

html

1<div class="item"> 2<a href="#"> 3<span class="more-btn">more</span> 4</a> 5</div>

css

1.more-btn{ 2position: relative; 3display: block; 4overflow: hidden; 5} 6.more-btn::before{ 7content: ""; 8display: inline-block; 9margin-right: 1em; 10width: 6px; 11position: absolute; 12background-color: #000; 13height: 1px; 14} 15.item:hover .more-btn::before{ 16width:10px; 17background-color:#000; 18}

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

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

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

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

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

karamarimo

2017/12/10 10:18

線の位置や伸びる方向は現状のままでいいということですか?
moreenbi

2017/12/10 10:24

線の位置は現状のままで大丈夫です。コードを見て弄れるのではと思っておりまして・・・。伸びる方向は右へで6pxから10pxに伸びることが理想です。
karamarimo

2017/12/10 10:30

試した所、現状でも右に伸びるようになっています。ホバー時に backgroud-color:#fff; となってますが、「background」の「n」が抜けています。ホバー時に真っ白にすると(背景が白なら)見えなくなると思いますが、いいのでしょうか?
karamarimo

2017/12/10 11:55 編集

そのCSSではその図のような見た目にはならないですが、例えばMOREをどのように中央に配置しているのでしょうか。関連するCSSをすべて載せてもらえますか?
JunheeHan

2017/12/10 11:56

なんどもすみません!自分で何とかしようと最小限だけアップしたのですが、やはりどうしてもとなって…。text-align:centerとline-heightをボックスの大きさまでつけて真ん中にしてます。
guest

回答1

0

ホバー時に.more-btnleft4px増やして右にずらし、逆に::beforeleft4px減らして、左側が動かないようにしています。もっとも、.more-btnではなく.item::beforeにすればそれは必要ないですが...。

demo

css

1.item { 2 width: 100px; 3 height: 40px; 4 background-color: yellow; 5 text-align: center; 6 line-height: 40px; 7} 8 9.item a { 10 text-decoration: none; 11} 12 13.more-btn { 14 position: relative; 15 display: block; 16} 17 18.more-btn::before { 19 content: ""; 20 width: 6px; 21 position: absolute; 22 background-color: #000; 23 height: 1px; 24 top: 50%; 25 left: -4px; 26} 27 28.item:hover .more-btn::before { 29 width: 10px; 30 left: -8px; 31} 32 33.item:hover .more-btn { 34 left: 4px; 35} 36

投稿2017/12/10 13:11

編集2017/12/10 13:14
karamarimo

総合スコア2551

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問