JavaScript drag and drop aplikasi examples_javascript kemahiran

WBOY
Lepaskan: 2016-05-16 15:08:06
asal
1230 orang telah melayarinya

Idea asas drag dan drop juga telah dibincangkan dalam artikel sebelumnya Sekarang kita mempunyai teori, bagaimana dengan amalan? Di bawah saya akan bawakan kepada anda contoh kecil yang ditulis menggunakan pemikiran drag-and-drop untuk rujukan anda Kesan anggaran boleh dilihat dalam gambar di bawah:

Ia adalah bar seret yang begitu mudah Anda boleh memahaminya sebagai bar skrol, kawalan pemilihan kuantiti dalam bentuk, bar kemajuan, dll. Bagaimanapun, anda boleh menukarnya kepada banyak Tanpa berlengah lagi, mari lihat bagaimana ini. sudah selesai!

Selepas memikirkannya, saya rasa tidak perlu menjelaskan prinsip saya sudah jelaskan dalam kesan seretan Pelajar yang tidak pasti boleh keluar dan belok kiri untuk melihat contoh kecil javascript dan seret dan lepas pada halaman web PC saya akan menyiarkan kod secara langsung:

css:

<style>
#drag_wrap{
  width:220px;
  height:10px;
  position:relative;
  margin:100px auto;
}
.dis_bg{
  width:200px;
  height:10px;
  border-radius:10px;
  background:#ccc;
  margin-left:10px;
}
#drag_bg{
  width:0;
  height:10px;
  border-radius:10px;
  background:#0CF;
}
#drag_box{
  width:20px;
  height:20px;
  border-radius:10px;
  background:#F30;
  position:absolute;
  top:-5px;
  left:0;
  cursor:move;
}
#drag_box span{
  width:40px;
  height:20px;
  text-align:center;
  line-height:20px;
  border:1px solid #ccc;
  position:absolute;
  top:-25px;
  left:-10px;
  color:#333;
  background:#fff;
}
#drag_wrap1{
  width:10px;
  height:220px;
  position:relative;
  margin:100px auto;
}
.dis_bg1{
  width:10px;
  height:200px;
  border-radius:10px;
  background:#ccc;
  position:absolute;
  top:10px;
}
#drag_bg1{
  width:10px;
  height:0;
  border-radius:10px;
  background:#0CF;
}
#drag_bg1{
  width:10px;
  height:0;
  border-radius:10px;
  background:#0CF;
}
#drag_box1{
  width:20px;
  height:20px;
  border-radius:10px;
  background:#F30;
  position:absolute;
  top:-5px;
  left:-5px;
  cursor:move;
}
#drag_box1 span{
  width:40px;
  height:20px;
  text-align:center;
  line-height:20px;
  border:1px solid #ccc;
  position:absolute;
  top:0;
  left:25px;
  color:#333;
  background:#fff;
}
</style>

Salin selepas log masuk

html:

<div id="drag_wrap">
    <div class="dis_bg">
      <div id="drag_bg"></div>
    </div>
    <div id="drag_box"><span>0</span></div>
     
  </div>
  <div id="drag_wrap1">
    <div class="dis_bg1">
      <div id="drag_bg1"></div>
    </div>
    <div id="drag_box1"><span>0</span></div>
  </div>
Salin selepas log masuk

JavaScript:

window.onload = function(){
 
    drag("drag_box","drag_wrap","drag_bg","left");
    drag("drag_box1","drag_wrap1","drag_bg1","top");
     
    function drag(obj,parentNode,bgObj,attr,endFn){
      var obj = document.getElementById(obj);
      var parentNode = document.getElementById(parentNode);
      var bgObj = document.getElementById(bgObj);
      var oNum = obj.getElementsByTagName('span')[0];
      obj.onmousedown = function(ev){
        var ev = ev || event;
         
        //非标准设置全局捕获(IE)
        if(obj.setCapture){
          obj.setCapture()  
        };
 
        var disX = ev.clientX - this.offsetLeft,
          disY = ev.clientY - this.offsetTop;
        var oWidth = obj.offsetWidth,
          oHeight = obj.offsetHeight;
        var pWidth = parentNode.offsetWidth,
          pHeight = parentNode.offsetHeight;     
        document.onmousemove = function(ev){
          var ev = ev || event;
          if(attr == "left"){ //横向
            var left = ev.clientX - disX;
            //左侧
            if(left <= 0){
              left = 0;
            }else if(left > pWidth - oWidth){//右侧
              left = pWidth - oWidth;
            };
            obj.style.left = bgObj.style.width = left + 'px';
            oNum.innerHTML = left;
             
          }else if(attr == "top"){ //竖向
            var top = ev.clientY - disY;
             //上面
            if(top <= 0){
              top = 0;
            }else if(top > pHeight - oHeight){//下面
              top = pHeight - oHeight;
            };
            obj.style.top = bgObj.style.height = top + 'px';
            oNum.innerHTML = top;
          };
           
        };
        document.onmouseup = function(ev){
          var ev = ev || event;
          document.onmousemove = document.onmouseup = null;
          endFn && endFn();
          //非标准释放全局捕获(IE)
          if(obj.releaseCapture){
            obj.releaseCapture()  
          };
 
        };
        return false;
      }; 
    } 
   
  }
Salin selepas log masuk

Perihalan parameter:

Lima parameter diberikan di sini, obj, parentNode, bgObj, attr, endFn, masing-masing:

obj: objek yang diseret

parentNode: objek yang mengehadkan kawasan aktif objek yang diseret, biasanya ditetapkan kepada induknya

bgObj: objek latar belakang warna apabila menyeret

attr: 2 parameter kiri, atas, menunjukkan sama ada hendak menyeret secara mendatar atau menegak

endFn: Fungsi kembali, ia akan dilaksanakan jika wujud, jika tidak, ia tidak akan dilaksanakan, pilihan

Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu kajian semua orang.

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!