Rumah > hujung hadapan web > tutorial js > Kesan seret dan lepas mudah menggunakan kemahiran js_javascript

Kesan seret dan lepas mudah menggunakan kemahiran js_javascript

WBOY
Lepaskan: 2016-05-16 16:08:52
asal
1336 orang telah melayarinya

Semasa pembangunan bahagian hadapan, terdapat banyak tempat di mana kesan seretan digunakan Sudah tentu http://jqueryui.com/draggable/ adalah pilihan yang baik, tetapi saya seorang yang mahu. untuk bertanya soalan itu saya mengambil sedikit masa untuk melaksanakan pemalam yang serupa menggunakan js, tidak banyak yang perlu diperkatakan.

pertama: html dan css

Salin kod Kod adalah seperti berikut:





          * {
              jidar: 0;
              pelapik: 0;
}
           #div1 {
jawatan: mutlak;
                lebar: 100px;
             tinggi: 100px;
              kursor: gerakkan;
             warna latar belakang: merah;
}







Sekarang, mari kita laksanakan algoritma utama dahulu:

Salin kod Kod adalah seperti berikut:


          window.onload = fungsi () {
//Dapatkan div yang perlu diseret
            var div1 = document.getElementById("div1");
//Tambah acara akhbar tetikus
            div1.onmousedown = fungsi (evt) {
              var oEvent = evt ||                                 // Dapatkan jarak dari butang tetikus ke bahagian atas kiri div
            var distanceX = oEvent.clientX - div1.offsetLeft;
            var distanceY = oEvent.clientX - div1.offsetTop;
//Tambahkan masa gelongsor dokumen
document.onmousemove = fungsi (evt) {
                  var oEvent = evt || acara;
//Kira semula nilai atas kiri div
                  var left = oEvent.clientX - distanceX;
                  var atas = oEvent.clientY - distanceY;
//left Apabila kurang daripada atau sama dengan sifar, tetapkan kepada sifar untuk mengelakkan div daripada diseret keluar daripada dokumen
Jika (kiri <= 0) {
                               kiri = 0;
                 }
//Apabila kiri melebihi sempadan kanan dokumen, tetapkan pada sempadan kanan
                              jika tidak (kiri >= document.documentElement.clientWidth - div1.offsetWidth) {
                                kiri = document.documentElement.clientWidth - div1.offsetWidth;
                 }
Jika (atas <= 0) {
                           atas = 0;
                 }
                             jika tidak (atas >= document.documentElement.clientHeight - div1.offsetHeight) {
Atas = document.documentElement.clientHeight - div1.offsetHeight;
                 }
//Tetapkan semula nilai kepada div
                  div1.style.top = atas "px";
                                                   div1.style.left = kiri "px";
                }
//Tambah acara angkat tetikus
              div1.onmouseup = fungsi () {
                                                                                                                                                                                                                                                                                                                                document.onmousemove = null;
                div1.onmouseup = null;
                }
            }
}


ya, gunakan pelaksanaan berorientasikan objek

Salin kod Kod adalah seperti berikut:

          * {
               margin:0;
              padding:0;
}
           #div1 {
                lebar: 100px;
             tinggi: 100px;
             warna latar belakang: merah;
}
           #div2 {
              warna latar belakang: kuning;
               lebar:100px;
              tinggi:100px;
}




Kelas Draggle js:

Salin kod Kod adalah seperti berikut:

 fungsi Seret(id) {
            this.div = document.getElementById(id);
            jika (this.div) {
                this.div.style.cursor = "move";
                this.div.style.position = "mutlak";
            }
            this.disX = 0;
            this.disY = 0;
            var _ini = ini;
            this.div.onmousedown = fungsi (evt) {
                _this.getDistance(evt);
                document.onmousemove = fungsi (evt) {
                    _this.setPosition(evt);
                }
                _this.div.onmouseup = fungsi () {
                    _this.clearEvent();
                }
            }
        }
        Drag.prototype.getDistance = fungsi (evt) {
            var oEvent = evt || acara;
            this.disX = oEvent.clientX - this.div.offsetLeft;
            this.disY = oEvent.clientY - this.div.offsetTop;
        }
        Drag.prototype.setPosition = fungsi (evt) {
            var oEvent = evt || acara;
            var l = oEvent.clientX - this.disX;
            var t = oEvent.clientY - this.disY;
            jika (l <= 0) {
                l = 0;
            }
            else if (l >= document.documentElement.clientWidth - this.div.offsetWidth) {
                l = document.documentElement.clientWidth - this.div.offsetWidth;
            }
            jika (t <= 0) {
                t = 0;
            }
            else if (t >= document.documentElement.clientHeight - this.div.offsetHeight) {
                t = document.documentElement.clientHeight - this.div.offsetHeight;
            }
            this.div.style.left = l "px";
            this.div.style.top = t "px";
        }
        Drag.prototype.clearEvent = fungsi () {
            this.div.onmouseup = null;
            document.onmousemove = null;
        }

akhirnya: Pelaksanaan akhir:

Salin kod Kod adalah seperti berikut:

window.onload = fungsi () {
             Seret baharu("div1");
             Seret baharu("div2");
}

Kesannya adalah seperti berikut:

Di atas adalah keseluruhan kandungan artikel ini saya harap ia akan membantu semua orang menguasai javascript dengan lebih mahir.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan