tacky4
@tacky4 (Tacky4 .)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

padding-topを使った正方形の中に画像を表示するにはどうすればよいでしょうか。

解決したいこと

padding-topを使った正方形の中に画像を表示するにはどうすればよいでしょうか。

例)
padding-topをつかって黄色の正方形を作りました。
ファイルを選択すると、正方形の上下左右中央に画像をプレビューする機能をつけたいのですが、図のように正方形の下部にプレビューが表示されます。

解決方法を知っている方がいたら教えていただけないでしょうか?

発生している問題・エラー

スクリーンショット 2021-09-09 6.54.23.png
スクリーンショット 2021-09-09 6.54.47.png
スクリーンショット 2021-09-09 6.55.28.png

HTML

<!--


写真

<div class="fots">

  <div class="fot">
    <div class="img-form">
      <img  id="preview" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
    </div>
    <form>
      <input type="file" accept='image/*' onchange="previewImage(this);">
    </form>
  </div>

  <div class="fot">
    <img id="preview" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
    <form>
      <input type="file" accept='image/*' onchange="previewImage(this);">
    </form>
  </div>

  <div class="fot">
    <img id="preview" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
    <form>
      <input type="file" accept='image/*' onchange="previewImage(this);">
    </form>
  </div>


</div>

-->

CSS

.fots{
display:flex;
}

.fot{
border:1px solid blue;
width : calc(100% / 3) ;
position:relative;
}

.img-form{
width:100%;
}

.img-form:before{
content:"";
display:block;
padding-top:100%;
border:1px solid green;
background-color:yellow;
}

.img-form img{
width:auto;
height:auto;
max-width:100%;
max-height:100%;

postion:absolute;
top: 0;
left: 0;
}

0

2Answer

.img-formでなく.img-form:beforeで黄色の正方形を作っている理由は何でしょうか?
::before疑似要素を使うと必然的にimgの直前に描写されるので、図のように正方形の下部にプレビューが表示されるのは、当然といえば当然です。

余談ですが、1つのHTMLの中でidは一意である必要があります。idが重複しているとJavaScriptがうまく動作しない(DOM操作がうまくできない)ので注意です。

0Like

Your answer might help someone💌