前提
画像アップロード機能を作成するにあたり、inputのtype=fileを非表示にし、divで作成したエリア選択して画像アップロードさせる機能を作ろうとしています。
実現したいこと
上記画像の通り、画像アップロードするところまでは、できました。しかし「×」のボタンを押して削除機能を作るにあたり、「<label>」による「<input type="file" name="thumbnail" hidden accept=".png, .jpeg, .jpg">」の紐付けの影響で「 <div class="delete_spot_photo delete_photo">」での削除後ファイル選択が開いてしまいます。
「<div class="delete_spot_photo delete_photo"><span>×</span></div>」を「<label>」の外に出した場合、「<div class="thumbnail">」配下ではないのでpositionが効かず、スクショの通りの位置に「×」のボタンを設置できません。
どのようにすれば、「<label>」の紐付けの影響を受けずに「×」のボタンを設置することができるのでしょうか?
※「×」のボタンを「<label>」の外に置くと「×」のボタンのheight:50px分「 <div class="thumbnail">」と「 <img class="thumbnail-img">」の位置がずれてしまいます。
該当のソースコード
html
1<label> 2 <div class="thumbnail"> 3 <div class="delete_spot_photo delete_photo"><span>×</span></div> 4 <img class="thumbnail-img"> 5 <span class="photo">写真追加</span> 6 </div> 7 <input type="file" name="thumbnail" hidden accept=".png, .jpeg, .jpg"> 8</label>
css
1<label> 2.thumbnail { 3 width: 600px; 4 height: 400px; 5 border: 1px dashed skyblue; 6 position: relative; 7 display: flex; 8 justify-content: flex-end; 9} 10 11.thumbnail-img { 12 position: absolute; 13 width: 600px; 14 height: 400px; 15 top: 0; 16 z-index: 1; 17} 18 19.delete_photo { 20 display: none; 21 z-index: 2; 22 background-color: white; 23} 24 25.delete_thumbnail { 26 position: relative; 27 width: 50px; 28 height: 50px; 29} 30 31.delete_thumbnail > span { 32 font-size: 20px; 33 position: absolute; 34 top: 50%; 35 left: 50%; 36 transform: translateY(-50%) translateX(-50%); 37}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/11 13:48