zoukankan      html  css  js  c++  java
  • 拖拽

    //by sunhw

    //获取className
    function returnClassName(className, parentNode){
      var parentNode = parentNode ? document.getElementById(parentNode) : document;
      var classNames = [];
      var eles = parentNode.getElementsByTagName('*');
      for(var i = 0, len = eles.length; i < len; i++){
        if(eles[i].className == className){
          classNames.push(eles[i]);
        }
      }
      return classNames;
    }
    window.onload = dragFun;
    function dragFun(){
      var dragNode = returnClassName('login_logo_webqq', 'loginPanel')[0];
      dragNode.onmousedown = dragBeginFun;
      var colseBtn = document.getElementById('ui_boxyClose');
      colseBtn.onclick = function(){
        document.getElementById('loginPanel').style.display = 'none';
      }
      //click tab change
      var loginStatePanel = document.getElementById('loginStatePanel'),
          loginStateTxt = document.getElementById('login2qq_state_txt'),
          loginStateShow = document.getElementById('loginStateShow'),
          loginState = document.getElementById('loginState');
      //click loginStatePanel show panel need zuzhi moren event
      loginState.onclick = function(e){
        e = e || window.event;
        if(e.stopPropagation){
          e.stopPropagation();
        }else{
          e.cancelBubble = true;
        }
        loginStatePanel.style.display = 'block';
      }
      //for each
      var list = loginStatePanel.getElementsByTagName('li');
      for(var i = 0, len = list.length; i < len; i++){
        //onmouseover
        list[i].onmouseover = function(){
          this.style.backgroundColor = '#567';
        }
        //onmouseout
        list[i].onmouseout = function(){
          this.style.backgroundColor = '#fff';
        }
        //onclick
        list[i].onclick = function(e){
          e = e || window.event;
          if(e.stopPropagation){
            e.stopPropagation();
          }else{
            e.cancelBubble = true;//IE zuzhi moren event
          }
          loginStatePanel.style.display = 'none';
          var id = this.id;
          loginStateTxt.innerHTML = returnClassName('stateSelect_text', id)[0].innerHTML;
          loginStateShow.className = '';
          loginStateShow.className = 'login-state-show ' + id;
        }
      }
      //none loginStatePanel
      document.onclick = function(){
        loginStatePanel.style.display = 'none';
      }
    }
    function dragBeginFun(event){
      event = event || window.event;
      var dragParentNode = document.getElementById('loginPanel');
      //光标当前的位置 = 光标的坐标值 - 盒子距离窗口左边的值
      var disX = event.clientX - dragParentNode.offsetLeft;
      var disY = event.clientY - dragParentNode.offsetTop;
      //onmousemove event
      document.onmousemove = function(event){
        event = event || window.event;
        dragMoveFun(event, disX, disY);
        return false;
      }
      //onmouseup event
      document.onmouseup = function(){
        document.onmousemove = null;
        document.onmouseup = null;
      }
    }
    function dragMoveFun(e, posX, posY){
      var dragParentNode = document.getElementById('loginPanel');
      //
      var left = e.clientX - posX ;
      var top = e.clientY - posY;
      //窗口宽度和高度
      var windWidth = document.documentElement.clientWidth || document.body.clientWidth;
      var windHeight = document.documentElement.clientHeight || document.body.clientHeight;
      //可拖拽的最大宽度和高度 窗口宽度 - 盒子的自身宽度
      var maxW = windWidth - dragParentNode.offsetWidth;
      var maxH = windHeight - dragParentNode.offsetHeight;
      //判断左右边界
      if(left < 0){
        left = 0;
      }else if(left > maxW){
        left = maxW - 10;
      }
      //判断上下边界
      if(top < 0){
        top = 10;
      }else if(top > maxH){
        top = maxH;
      }
      dragParentNode.style.left = left + 'px';
      dragParentNode.style.top = top + 'px';
    }
  • 相关阅读:
    用Twebbrowser做可控编辑器与MSHTML(调用js)
    用Twebbrowser做可控编辑器与MSHTML(插入表格)
    用Twebbrowser做可控编辑器与MSHTML
    如何用firefox57看中国大学mooc视频
    学习EXTJS6(8)基本功能-表单的基础表字段Ext.form.field.Basic
    学习EXTJS6(7)基本功能-最常用的表单
    学习EXTJS6(6)基本功能-工具栏和菜单
    学习EXTJS6(5)基本功能-进度条组件
    学习EXTJS6(4)基本功能-信息提示框组件
    学习EXTJS6(3)基本概念
  • 原文地址:https://www.cnblogs.com/sunhw360/p/4139788.html
Copyright © 2011-2022 走看看