実現したいこと
iput file
でアップした写真をプレビューするときに綺麗な丸で写真を表示する方法を知りたい。
困っていること
現状では、input
から写真を選択してプレビューするところまではできているが、表示される際に綺麗な円形にならなくて困っている。
slim
1section 2 .container.pt-5 3 .row 4 .col.col-lg-6.offset-lg-3 5 .p-3.my-2.bg-white.box-shadow.q_card.q_card_width 6 h4.font-weight-bold.gg-txt 7 | 写真 8 = form_with url: user_path do |f| 9 .form-group 10 img id="img1" class="default hidden" 11 = image_tag("default.png", :alt => "thumbnail", id: 'thumbnail', class: "default") 12 .form-group 13 label 14 .btn.btn-info +写真を選択 15 = f.file_field :image, style: "display:none;", id: "myfile"
css
1css: 2 .default{ 3 max-height: 240px; 4 max-height: 240px; 5 border-radius: 50%; 6 } 7 .hidden {display:none;}
js
1script src="http://code.jquery.com/jquery-3.2.1.min.js" 2javascript: 3 $(function(){ 4 $('#myfile').change(function(e){ 5 //ファイルオブジェクトを取得する 6 var file = e.target.files[0]; 7 var reader = new FileReader(); 8 //画像でない場合は処理終了 9 if(file.type.indexOf("image") < 0){ 10 alert("画像ファイルを指定してください。"); 11 return false; 12 } 13 //delete default image 14 let thumbnail = document.getElementById("thumbnail"); 15 if (thumbnail){ 16 thumbnail.classList.add("hidden"); 17 } 18 let default_img = document.getElementById("default-image"); 19 if (default_img){ 20 default_img.classList.add("hidden"); 21 } 22 document.getElementById("img1").classList.remove("hidden"); 23 //アップロードした画像を設定する 24 reader.onload = (function(file){ 25 return function(e){ 26 $("#img1").attr("src", e.target.result); 27 $("#img1").attr("title", file.name); 28 }; 29 })(file); 30 reader.readAsDataURL(file); 31 }); 32 });
回答1件
あなたの回答
tips
プレビュー