🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSS3

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

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1151閲覧

doragoverの際にstyleの変更と文字の出現を実装したい

kkk_k

総合スコア15

CSS3

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

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/12/18 11:54

前提・実現したいこと

ファイルをドラッグ&ドロップで選択するページを作成しています。
ドロップ可能エリアをbody全体にしたいので、それがわかるように「dragover」時に色をうっすら変えて、
なおかつ「添付するファイルをドロップしてください」と画面の真ん中に大きく表示させたいです。

発生している問題・エラーメッセージ

下記に記載します該当コードが現段階のものですが、
これでファイルをdragoverすると、次の画像のようにdragoverとdragleaveが一瞬ずつ発生して止まりません。
もちろん、望んでいる実装ではなく、ピロピロとおかしな挙動になります。

JavaScriptの記述コードの「//★」で示しているところがおかしいのか、何かが足りないのか、調べてもわかりませんでした。
どうか皆様の知識をお貸しください。

イメージ説明

該当のソースコード

html

1<html> 2<head> 3 <meta charset="utf-8"/> 4 <title>DnDテスト</title> 5</head> 6<body> 7 <div id="dragAreaMoji" class="none">添付するファイルを<br>ドロップしてください</div> 8 <form action="abc.php"> 9 メモ:<input type="text" name="memo"> 10 日付:<input type="date" name="updatetimestamp"> 11 <div class="answerarea"> 12 <div class="attachFile"> 13 <input type="file" id="file"> 14 </div> 15 </div> 16 </form> 17 <div class="submit_area"> 18 <input type="submit" value="submit"> 19 </div> 20</body> 21</html>

javascript

1<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> 2 <script> 3 $(function(){ 4 let input_file = document.getElementById('file'); 5 //-------------------------------------------------------------------- 6 //drag & dropイベント------------------------------------------------- 7 // 指定部分の上に乗っかっているときの処理 8 $("body").on("dragover", function(e){ 9 console.log("dragover"); //動作確認用 10 e.preventDefault(); 11 $("body").addClass("dragarea"); 12 $("#dragAreaMoji").removeClass("none"); //★ 13 $("#dragAreaMoji").addClass("drop_moji"); //★ 14 }); 15 16 //指定部分から外れたとき 17 $("body").on("dragleave", function(e){ 18 console.log("dragleave"); //動作確認用 19 e.preventDefault(); 20 $("body").removeClass("dragarea"); 21 $("#dragAreaMoji").addClass("none"); //★ 22 $("#dragAreaMoji").removeClass("drop_moji"); //★ 23 }); 24 25 // 指定部分でドロップしたときの処理 26 $("body").on("drop", function(e){ 27 e.preventDefault(); 28 input_file.files = e.originalEvent.dataTransfer.files; 29 $("body").removeClass("dragarea"); 30 $("#dragAreaMoji").addClass("none"); 31 $("#dragAreaMoji").removeClass("drop_moji"); 32 }); 33 //------------------------------------------------------------------ 34 }); 35 </script>

css

1 <style> 2 .none{ 3 display:none; 4 } 5 .drop_moji{ 6 color:white; 7 text-shadow: 1px 2px 2px #676767; 8 width: 99%; 9 height: 45vh; 10 font-size: 36px; 11 text-align: center; 12 padding-top: 42vh; 13 position: absolute; 14 } 15 .dragarea{ 16 opacity:0.3; 17 background-color:#ebebeb; 18 mix-blend-mode: overlay; 19 } 20 </style>

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

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

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

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

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

guest

回答1

0

自己解決

.drop_mojiのなかに「pointer-events:none;」を追加したら落ち着きました。

ドラッグ中にファイルつかんだまま動かすと多少チラつくのは、仕方がないのでしょうかね。

参考:https://kotaeta.com/55470193

投稿2019/12/19 05:29

kkk_k

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問