ドラッグ&ドロップでホバーアイコンを作成するhtml5サンプルコード
2022-01-21 15:58:48
h5では、しばしば以下のようなニーズがあります。
ホバーアイコンを追加する必要がありますが、これはおおよそ次の図のような最終的な実装になります。
しかし、多くの場合、デザインはメインエリアをカバーしませんが、実際にはカバーすることもあります。しかし、より良いクリックのためには、ページ上でホバーさせる必要があります...。
メインエリアをカバーした後、ユーザーが自由に動かせるようにアイコンをドラッグできるようにすれば、この解決策は両立できるのではないでしょうか。
実現した効果は以下の通りです。
(WeChatのフローティングウィンドウの効果と同様、左右の位置は横に表示され、上下の位置はランダムに配置される)
さっそく、コードを見てみましょう。
<div class="ys-float-btn"
:style="{'width': itemWidth+'px','height': itemHeight+'px','left': left+'px','top': top+'px'}"
ref="div"
@touchstart.prevent="(e) => {dragStart(e)}"
@touchend.prevent="(e) => {dragEnd(e)}"
@touchmove.prevent="(e) => {dragProgress(e)}"
>
<img src=". /... /assets/fc-icon.png" />
</div>
// The code is directly in the vue project and can be written in jsdata () {
return {
gapWidth: 10,
itemWidth: 20, // width of the icon
itemHeight: 30 // the height of the icon
}
},
created() {
this.clientWidth = document.documentElement.clientWidth;
this.clientHeight = document.documentElement.clientHeight;
this.left = this.clientWidth - this.itemWidth - this.gapWidth;
this.top = this.clientHeight*0.8; }
methods: {
dragStart(e) {
this.$refs.div.style.transition = 'none';
},
dragEnd(e) {
this.$refs.div.style.transition = 'all 0.3s';
if (this.left > this.clientWidth/2) {
this.left = this.clientWidth - this.itemWidth - this.gapWidth;
} else {
this.left = this.gapWidth;
}
},
dragProgress(e) {
if (e.targetTouches.length === 1) {
let touch = event.targetTouches[0];
this.left = touch.clientX - this.itemWidth/2;
this.top = touch.clientY - this.itemHeight/2;
}
}
}
上記のコードは、左右だけでなく、上下にも移動することができます。上下にしか動かせないようにしたい場合は、左関連の設定と計算を削除してください。
html5でホバーアイコンをドラッグ&ドロップするサンプルコードについての本記事は以上です、より関連するhtml5のドラッグ&ドロップホバーアイコンは、BinaryDevelopの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください、今後ともBinaryDevelopをよろしくお願いします
関連
-
html5フォームにおけるrequired属性の使用について
-
Html5による大画面データビジュアライゼーション開発の実装
-
Html5モバイルdivは、ナビゲーションバーの下部を達成するために下部に固定されているいくつかの方法
-
HTML5 canvas の静的スクロール・ポップアップ
-
HTML5におけるCSSアピアランスプロパティの説明
-
メソッドステップを構築するフレームワーク「AmazeUI」(グラフィック)
-
キャンバスの描画は、contain または cover モードで適応され、中央に配置されます。
-
canvas 学習のまとめ III - パスの描画 - ラインセグメント
-
ウェブアプリのページスクロールラグの解決策を詳しく解説
-
ivxプラットフォーム開発:9箱の抽選機能をコードレスで実装する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
フォントの調整のメニューの右上隅にWeChat内蔵のブラウザでHTML5は、ページが間違った問題を表示するために発生する
-
amaze uiを使った詳細チュートリアル
-
ウェブサイトパフォーマンスのための画像読み込みを遅らせる5つのコツ(要約)
-
キャンバステキストフィルリニアグラデーション使用詳細説明
-
Html5 埋め込みピン留めサンプル実装
-
recorder.js Html5ベースの録画機能実装
-
HTML5 Blobオブジェクトの使用方法
-
HTML5 Canvasタグの解説と基本的な使い方
-
HTMLテーブルのテーブルボーダーの実装アイデア
-
data:画像データのurlファイルをBlobアップロードバックエンドメソッドに渡す。