zoukankan      html  css  js  c++  java
  • 俩个列表内的元素左右移动

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6     <style>
      7     html,body{
      8     width: 100%;
      9     height: 100%;
     10     margin: 0;
     11     padding: 0;
     12     font-family: "Microsoft Yahei",Arial;
     13     background-color: #b1b1b1;
     14     -webkit-user-select:none;
     15     -moz-user-select:none;
     16     -ms-user-select:none;
     17     user-select:none;
     18     }
     19     ul,li{
     20     list-style: none;
     21     margin: 0;
     22     padding: 0;
     23     }
     24     .container{
     25     width: 540px;
     26     height: 400px;
     27     padding: 50px 20px;
     28     background-color: #fff;
     29     border-radius: 2px;
     30     margin: 0 auto;
     31     margin-top: 10%;
     32     }
     33     .container ul{
     34     width: 40%;
     35     height: 100%;
     36     background-color: #fafafa;
     37     border: 1px solid #e5e5e5;
     38     float: left;
     39     }
     40     .container .data-list li{
     41     width: 100%;
     42     height: 36px;
     43     line-height: 36px;
     44     text-indent: 10px;
     45     color: #666;
     46     font-size: 14px;
     47     cursor: pointer;
     48     }
     49     .container .data-list li:hover{
     50     background-color: #039ae3;
     51     color: #fff;
     52     }
     53     .container .data-list li.selected{
     54     background-color: #666;
     55     color: #fff;
     56     }
     57     .container .data-list li.moving{
     58     position: absolute;
     59     width: auto;
     60     padding-right: 15px;
     61     top:0;
     62     left: 0;
     63     }
     64     .toolbar{
     65     margin-top: 25%;
     66     width: 18%;
     67     float: left;
     68     }
     69     .toolbar .button{
     70     width: 80px;
     71     height: 36px;
     72     display: block;
     73     margin: 20px auto;
     74     border: 1px solid #d9d9d9;
     75     text-align: center;
     76     line-height: 36px;
     77     text-decoration: none;
     78     color: #333;
     79     background: #f3f3f3;
     80     font-size: 14px;
     81     }
     82     .toolbar .button:hover{
     83     background-color: #039ae3;
     84     color: #fff;
     85     }
     86     </style>
     87 </head>
     88 <body>
     89     <div class="container">
     90     <ul id="left-list" class="data-list list-left">
     91         <li>刘备</li>
     92         <li>诸葛亮</li>
     93         <li>关羽</li>
     94         <li>张飞</li>
     95     </ul>
     96     <div class="toolbar">
     97         <a id="add" class="button" href="#">添加</a>
     98         <a id="del" class="button" href="#">删除</a>
     99     </div>
    100     <ul id="right-list" class="data-list list-right">
    101         <li>孙权</li>
    102         <li>甘宁</li>
    103         <li>黄盖</li>
    104     </ul>
    105 </div>
    106 <script>
    107     window.onload=function () {
    108         var leftList=document.getElementById("left-list")
    109         var rightList=document.getElementById("right-list")
    110         var movingItem;  //移动的列表
    111         //列表点击事件
    112         var itemClick=function (event) {
    113             event.target.className=event.target.className?"":"selected"
    114         }
    115         //左右俩个列表绑定onmouseup事件
    116         leftList.onmouseup = rightList.onmouseup = function(event){
    117             if(event.target.tagName==="UL"&&movingItem){
    118                 event.target.appendChild(movingItem);
    119                 movingItem = null;
    120             }
    121         }
    122 
    123 
    124         //给它们绑定click事件
    125         for(var i=0;i<leftList.children.length;i++){
    126             leftList.children[i].onclick=itemClick
    127             leftList.children[i].ondblclick=function (event) {
    128                 var target=event.target
    129                 movingItem = target;
    130                 target.className = "selected moving";
    131                 target.style.left=(event.clientX+10)+"px"
    132                 target.style.top=(event.clientY+10)+"px"
    133                 document.onmousemove=function (event) {
    134                     target.style.left=(event.clientX+10)+"px"
    135                     target.style.top=(event.clientY+10)+"px"
    136                 }
    137                 document.onmouseup=function (event) {
    138                     if(event.target.nodeName==="UL"){
    139                         target.className=""
    140                         document.onmousemove = null;
    141                         movingItem = null;
    142                     }
    143                 }
    144             }
    145 
    146         }
    147         for(var i=0;i<rightList.children.length;i++){
    148             rightList.children[i].onclick=itemClick
    149             rightList.children[i].ondblclick=function (event) {
    150                 var target=event.target
    151                 movingItem = target;
    152                 target.className = "selected moving";
    153                 target.style.left=(event.clientX+10)+"px"
    154                 target.style.top=(event.clientY+10)+"px"
    155                 document.onmousemove=function (event) {
    156                     target.style.left=(event.clientX+10)+"px"
    157                     target.style.top=(event.clientY+10)+"px"
    158                 }
    159                 document.onmouseup=function (event) {
    160                     if(event.target.nodeName==="UL"){
    161                         target.className=""
    162                         document.onmousemove = null;
    163                         movingItem = null;
    164                     }
    165                 }
    166             }
    167         }
    168         document.getElementById("add").onclick= document.getElementById("del").onclick=function (event) {
    169             //用来保存选择的列表
    170             //选择以后,把列表保存到arr里面
    171             //使用的原因是多选的时候直接移动,ULde Length会改变
    172             var arr=[]
    173             var target=event.target.id==="add" ? leftList : rightList
    174             var target2=target===leftList ? rightList : leftList
    175             for(var i=0;i<target.children.length;i++){
    176                 if(target.children[i].className){
    177                     arr.push(target.children[i])
    178                     target.children[i].className=""
    179                 }
    180             }
    181             for(var i=0;i<arr.length;i++){
    182                 target2.appendChild(arr[i])
    183             }
    184         }
    185 
    186     }
    187 </script>
    188 </body>
    189 </html>
  • 相关阅读:
    继承
    iOS 适配暗黑模式
    【C++ STL】容器的选择
    纳税相关
    SwiftUI状态绑定:@State
    python 中各种容器可以容纳的数据类型
    open GL 在使用材质属性glMaterial设置物体颜色效果时,使用shader和使用固定管线后颜色区别
    做为一名测试工程师,你经常会用到或听到的那些工具
    推荐一款技术人必备的接口测试神器:Apifox
    测试管理工具推荐
  • 原文地址:https://www.cnblogs.com/zhaobao1830/p/6497038.html
Copyright © 2011-2022 走看看