蓝色拖动层+滑动门+滚动代码

 

< html >
< head >
< title > DRAG the DIV </ title >
< style >
* {font - size:12px}
.dragTable{
font
- size:12px;
border
- top:1px solid #3366cc;
margin
- bottom: 10px;
width:
100 % ;
background
- color:#FFFFFF;
}
.dragTR{
cursor:move;
color:#7787cc;
background
- color:#e5eef9;
}
td{vertical
- align:top;}
#parentTable{
border
- collapse:collapse;
letter
- spacing:25px;
}
</ style >
< script defer >
/* ***JoeLee************E-MAIL:hktx@163.com****QQ:48293707*****11:09 2006-2-9***** */
var  draged = false ;
tdiv
= null ;
function  dragStart(){
ao
= event.srcElement;
if ((ao.tagName == " TD " ) || (ao.tagName == " TR " ))ao = ao.offsetParent;
else   return ;
draged
= true ;
tdiv
= document.createElement( " div " );
tdiv.innerHTML
= ao.outerHTML;
tdiv.style.display
= " block " ;
tdiv.style.position
= " absolute " ;
tdiv.style.filter
= " alpha(opacity=70) " ;
tdiv.style.cursor
= " move " ;
tdiv.style.width
= ao.offsetWidth;
tdiv.style.height
= ao.offsetHeight;
tdiv.style.top
= getInfo(ao).top;
tdiv.style.left
= getInfo(ao).left;
document.body.appendChild(tdiv);
lastX
= event.clientX;
lastY
= event.clientY;
lastLeft
= tdiv.style.left;
lastTop
= tdiv.style.top;
try {
   ao.dragDrop(); 
}
catch (e){}
}
function  draging(){ // 重要:判断MOUSE的位置
if ( ! draged) return ;
var  tX = event.clientX;
var  tY = event.clientY;
tdiv.style.left
= parseInt(lastLeft) + tX - lastX;
tdiv.style.top
= parseInt(lastTop) + tY - lastY;
for ( var  i = 0 ;i < parentTable.cells.length;i ++ ){
   
var  parentCell = getInfo(parentTable.cells[i]);
   
if (tX >= parentCell.left && tX <= parentCell.right && tY >= parentCell.top && tY <= parentCell.bottom){
    
var  subTables = parentTable.cells[i].getElementsByTagName( " table " );
    
if (subTables.length == 0 ){
     
if (tX >= parentCell.left && tX <= parentCell.right && tY >= parentCell.top && tY <= parentCell.bottom){
      parentTable.cells[i].appendChild(ao);
     }
     
break ;
    }
    
for ( var  j = 0 ;j < subTables.length;j ++ ){
     
var  subTable = getInfo(subTables[j]);
     
if (tX >= subTable.left && tX <= subTable.right && tY >= subTable.top && tY <= subTable.bottom){
      parentTable.cells[i].insertBefore(ao,subTables[j]);
      
break ;
     }
else {
      parentTable.cells[i].appendChild(ao);
     } 
    }
   }
}
}

function  dragEnd(){
if ( ! draged) return ;
draged
= false ;
mm
= ff( 150 , 15 );
}
function  getInfo(o){ // 取得坐标
var  to = new  Object();
to.left
= to.right = to.top = to.bottom = 0 ;
var  twidth = o.offsetWidth;
var  theight = o.offsetHeight;
while (o != document.body){
   to.left
+= o.offsetLeft;
   to.top
+= o.offsetTop;
   o
= o.offsetParent;
}
   to.right
= to.left + twidth;
   to.bottom
= to.top + theight;
return  to;
}
function  ff(aa,ab){ // 从GOOGLE网站来,用于恢复位置
var  ac = parseInt(getInfo(tdiv).left);
var  ad = parseInt(getInfo(tdiv).top);
var  ae = (ac - getInfo(ao).left) / ab;
var  af = (ad - getInfo(ao).top) / ab;
return  setInterval( function (){ if (ab < 1 ){
        clearInterval(mm);
        tdiv.removeNode(
true );
        ao
= null ;
        
return
       }
      ab
-- ;
      ac
-= ae;
      ad
-= af;
      tdiv.style.left
= parseInt(ac) + " px " ;
      tdiv.style.top
= parseInt(ad) + " px "
     }
,aa
/ ab)
}
function  inint(){ // 初始化
for ( var  i = 0 ;i < parentTable.cells.length;i ++ ){
   
var  subTables = parentTable.cells[i].getElementsByTagName( " table " );
   
for ( var  j = 0 ;j < subTables.length;j ++ ){
    
if (subTables[j].className != " dragTable " ) break ;
    subTables[j].rows[
0 ].className = " dragTR " ;
    subTables[j].rows[
0 ].attachEvent( " onmousedown " ,dragStart);
    subTables[j].attachEvent(
" ondrag " ,draging);
    subTables[j].attachEvent(
" ondragend " ,dragEnd);
   }
}
}
inint();
</ script >
</ head >
< body >
< table border = " 0 "  cellpadding = " 0 "  cellspacing = " 10 "  width = " 100% "  height = 500  id = " parentTable " >
< tr  >
< td width = " 25% "  valgin = " top " >
   
< table border = 0  class = " dragTable "  cellspacing = " 0 " >
    
< tr >
     
< td >< b > GMAIL </ b ></ td >
    
</ tr >
    
< tr >
     
< td > 暂时无法显示GMAIL内容 </ td >
    
< tr >
   
</ table >< table border = 0  class = " dragTable "  cellspacing = " 0 " >
    
< tr >
     
< td > 新浪体育 </ td >
    
</ tr >
    
< tr >
     
< td > 解剖威队独门利器FW28 2万转引擎匹配超级变速器颁奖:辛吉斯欣喜能以冠军起步 印度搭档创下纪录法新社前瞻冬奥短道速滑:中韩唱主角 美加施冷箭 </ td >
    
< tr >
   
</ table >< table border = 0  class = " dragTable "  cellspacing = " 0 " >
    
< tr >
     
< td > 焦点 </ td >
    
</ tr >
    
< tr >
     
< td > 京广线中断4小时20临客返汉晚点
中国新闻网
- 湖北分社  -  所有  235  相关报道  & raquo;哈马斯已有总理人选
解放日报报业集团 
-  所有  489  相关报道  & raquo;陈水扁是两岸关系麻烦制造者
武汉晨报 
-  所有  179  相关报道  & raquo; </ td >
    
< tr >
   
</ table >
</ td >
< td width = " 25% " >
   
< table border = 0  class = " dragTable "  cellspacing = " 0 " >
    
< tr >
     
< td > 中关村在线 </ td >
    
</ tr >
    
< tr >
     
< td > 新年行情速递 双敏板卡低价推荐 终于等到了,映泰6600GT一降降一百 罗技G15游戏键盘热力促销,代购价仅529元  </ td >
    
< tr >
   
</ table ></ td >
< td width = " 25% " >
   
< table border = 0  class = " dragTable "  cellspacing = " 0 " >
    
< tr >
     
< td > 网易商业 </ td >
    
</ tr >
    
< tr >
     
< td > 上海GDP增幅去年出现回落应对反倾销 中国鞋企联手对抗欧盟尹家绪操盘南方汽车 长安谋求曲线整体境外上市 </ td >
    
< tr >
   
</ table >
</ td >
</ tr >
</ table >
</ body >
</ html >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现滑动图片验证的代码可以分为前端和后端两部分。 前端部分: 1. 在页面中添加一个验证的容器和一个滑块,如下所示: ```html <div class="verification-container"> <div class="verification-img"></div> <div class="verification-slider"></div> </div> ``` 2. 在CSS文件中设置验证容器和滑块的样式,如下所示: ```css .verification-container { position: relative; width: 300px; height: 200px; margin: 0 auto; background-color: #f5f5f5; border: 1px solid #ccc; overflow: hidden; } .verification-img { position: absolute; left: 0; top: 0; width: 300px; height: 200px; background-image: url(verification-image.jpg); background-size: cover; } .verification-slider { position: absolute; left: 0; top: 80px; width: 60px; height: 40px; background-color: #fff; border: 1px solid #ccc; cursor: pointer; } ``` 3. 编写JavaScript代码,实现滑块的拖动和验证的功能,如下所示: ```javascript // 获取验证容器和滑块元素 var container = document.querySelector('.verification-container'); var slider = document.querySelector('.verification-slider'); // 设置滑块的拖动事件 slider.addEventListener('mousedown', function (event) { // 记录滑块的起始位置 var startX = event.clientX - slider.offsetLeft; // 设置鼠标移动事件 document.addEventListener('mousemove', moveHandler); // 设置鼠标松开事件 document.addEventListener('mouseup', upHandler); function moveHandler(event) { // 计算滑块的位置 var sliderX = event.clientX - startX; // 限制滑块的位置在验证容器内 if (sliderX < 0) { sliderX = 0; } if (sliderX > container.clientWidth - slider.offsetWidth) { sliderX = container.clientWidth - slider.offsetWidth; } // 设置滑块的位置 slider.style.left = sliderX + 'px'; } function upHandler(event) { // 移除鼠标事件 document.removeEventListener('mousemove', moveHandler); document.removeEventListener('mouseup', upHandler); // 验证滑块的位置是否正确 if (slider.offsetLeft > 240) { alert('验证通过!'); } else { alert('验证失败!'); } // 重置滑块的位置 slider.style.left = 0; } }); ``` 后端部分: 1. 在Java中实现一个Servlet,用于接收前端传递的验证结果,如下所示: ```java @WebServlet("/verification") public class VerificationServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取验证结果 String result = request.getParameter("result"); // 验证结果是否正确 if ("success".equals(result)) { response.getWriter().write("验证通过!"); } else { response.getWriter().write("验证失败!"); } } } ``` 2. 在JSP页面中添加一个隐藏的表单域和一个提交按钮,用于将验证结果传递给Servlet,如下所示: ```html <form id="verification-form" method="post" action="verification"> <input type="hidden" name="result" id="verification-result"> <button type="submit" id="verification-submit">提交</button> </form> ``` 3. 在JavaScript代码中,将验证结果设置到隐藏的表单域中,并提交表单,如下所示: ```javascript // 获取表单元素 var form = document.querySelector('#verification-form'); var result = document.querySelector('#verification-result'); var submit = document.querySelector('#verification-submit'); // 设置提交事件 submit.addEventListener('click', function (event) { // 获取验证结果 var verificationResult = slider.offsetLeft > 240 ? 'success' : 'fail'; // 设置验证结果到表单域中 result.value = verificationResult; // 提交表单 form.submit(); }); ``` 这样,前端和后端的代码就都实现了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值