前提・実現したいこと
htmlとcssのみでボタンを作成しています。
https://www.ditjapan.com/サイトの「EVENT INFO」のようなボタンを作成しようとしております。
hover時、矢印を伸ばそうとすると、align="center"にしているため、
矢印が伸びた分の幅もあわせて真ん中をとって、ボタン本体が左にずれます。
・ボタン本体の位置は固定
・矢印の始点位置も固定
としたい場合はどこを修正すればよろしいでしょうか…
(position: absolute;なのかなと思ってます…)
該当のソースコード
html
1<div class="border" align="center"> 2<span id="box"> 3 お問い合わせ 4</span> 5<span id="arrow"></span> 6</div>
css
1<style type="text/css"> 2.border #box{ 3 display: inline-block; 4 text-align: center; 5 font-size: 12px; 6 width: 300px; 7 border: 1px solid #000; 8 padding: 10px; 9 margin: 30px; 10 position: relative; 11 transition: all .3s 12 13} 14 15.border #box::before { 16 position: absolute; 17 content: ''; 18 width: calc(100% + 8px); 19 height: calc(100%); 20 21 border: 1px solid #000; 22 position: absolute; 23 top: -1px; 24 left: -5px; 25 transition: all .3s 26} 27.border:hover #box { 28 text-align: center; 29 font-size: 12px; 30 width: 175px; 31 border-top: 1px solid #000; 32 border-bottom: 1px solid #000; 33 border-left: 0px; 34 border-right: 0px; 35 padding: 10px; 36 margin: 30px; 37 position: relative; 38} 39.border:hover #box::before { 40 content: ''; 41 width: calc(100%); 42 height: calc(100% + 4px); 43 border-top: 1px solid #000; 44 border-bottom: 1px solid #000; 45 border-left: 0px; 46 border-right: 0px; 47 position: absolute; 48 top: -3px; 49 left: 0px; 50} 51.border #arrow { 52 display:inline-block; 53 height:1px; 54 width:40px; 55 background-color:#000; 56 position:relative; 57 top:-5px; 58 left:-50px; 59 transition: all .3s 60} 61 62.border #arrow::after { 63 position:absolute; 64 content:""; 65 width:0; 66 height:0; 67 border:4px solid transparent; 68 border-left:4px solid #000; 69 left:40px; 70 top:-3px; 71 transition: all .3s 72} 73.border:hover #arrow { 74 display:inline-block; 75 height:1px; 76 width:80px; 77 background-color:#000; 78 position:relative; 79 top:-5px; 80 left:34px; 81} 82 83.border:hover #arrow::after { 84 position:absolute; 85 content:""; 86 width:0; 87 height:0; 88 border:4px solid transparent; 89 border-left:4px solid #000; 90 left:80px; 91 top:-3px; 92} 93</style>
回答2件
あなたの回答
tips
プレビュー