實(shí)戰(zhàn)題
學(xué)習(xí)完《三個關(guān)鍵鼠標(biāo)拖拽事件》內(nèi)容后,來檢驗(yàn)一下吧!在右側(cè)的編輯器中補(bǔ)全相應(yīng)的代碼!有三個任務(wù)需要完成。
任務(wù)
任務(wù)1:請?jiān)谟覀?cè)編輯器的第165行補(bǔ)充完整為 #dialogTitle 元素設(shè)置事件監(jiān)聽的API
任務(wù)2:請?jiān)谟覀?cè)編輯器的第182行補(bǔ)充完整腳本中,鼠標(biāo)移動時,計(jì)算浮層新位置 moveX 的代碼
任務(wù)3:請?jiān)谟覀?cè)編輯器的第190行補(bǔ)充完整腳本中,鼠標(biāo)松開后的處理代碼
溫馨提示:完成的任務(wù)要與要求的代碼效果相一致才可以通過本次測試,否則就再看一遍視頻哦!
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>慕課網(wǎng)-拖拽效果</title>
<style type="text/css">
body{background: url(images/baidu_demo.png) #fff top center no-repeat;
padding: 0px;margin: 0px;font-size: 12px;font-family: "微軟雅黑";
}
/*登錄浮層組件*/
.ui-dialog{
width: 380px;height: auto;
position: absolute;z-index: 9000;
top: 100px;left: 100px;
border: 1px solid #D5D5D5;background: #fff;
}
.ui-dialog a{text-decoration: none;}
/*標(biāo)題欄區(qū)域*/
.ui-dialog-title{
height: 48px;line-height: 48px; padding:0px 20px;color: #535353;font-size: 16px;
border-bottom: 1px solid #efefef;background: #f5f5f5;
cursor: move;
user-select:none;
}
/*關(guān)閉按鈕設(shè)置*/
.ui-dialog-closebutton{
width: 16px;height: 16px;display: block;
position: absolute;top: 12px;right: 20px;
background: url(images/close_def.png) no-repeat;cursor: pointer;
}
.ui-dialog-closebutton:hover{background:url(images/close_hov.png);}
/*內(nèi)容區(qū)域*/
.ui-dialog-content{
padding: 15px 20px;
}
/*每行元素可能需要的樣式*/
.ui-dialog-pt15{
padding-top: 15px;
}
.ui-dialog-l40{
height: 40px;line-height: 40px;
text-align: right;
}
/*輸入框公用的樣式*/
.ui-dialog-input{
width: 100%;height: 40px;
margin: 0px;padding:0px;
border: 1px solid #d5d5d5;
font-size: 16px;color: #c1c1c1;
text-indent: 25px;
outline: none;
}
/*兩個輸入框的icon設(shè)置*/
.ui-dialog-input-username{
background: url(images/input_username.png) no-repeat 2px ;
}
.ui-dialog-input-password{
background: url(images/input_password.png) no-repeat 2px ;
}
/*提交按鈕的樣式*/
.ui-dialog-submit{
width: 100%;height: 50px;background: #3b7ae3;border:none;font-size: 16px;color: #fff;
outline: none;text-decoration: none;
display: block;text-align: center;line-height: 50px;
}
.ui-dialog-submit:hover{
background: #3f81b0;
}
.ui-mask{
width: 100%;height:100%;background: #000;
position: absolute;top: 0px;height: 0px;z-index: 8000;
opacity:0.4; filter: Alpha(opacity=40);
}
.link{
text-align: right;line-height: 20px;padding-right: 40px;
}
</style>
</head>
<body >
<div class="ui-dialog" id="dialog">
<div class="ui-dialog-title" id="dialogTitle">
登錄通行證
<a href="javascript:hideDialog();" class="ui-dialog-title-closebutton"></a>
</div>
<div class="ui-dialog-content">
<div class="ui-dialog-pt15 ui-dialog-l40">
<input type="text" value="手機(jī)/郵箱/用戶名" class="ui-dialog-input ui-dialog-input-username">
</div>
<div class="ui-dialog-pt15 ui-dialog-l40">
<input type="text" value="密碼" class="ui-dialog-input ui-dialog-input-password">
</div>
<div class=" ui-dialog-l40 ">
<a href="#">忘記密碼</a>
</div>
<div>
<a href="#" class="ui-dialog-submit">登錄</a>
</div>
<div class="ui-dialog-l40">
<a href="#">立即注冊</a>
</div>
</div>
</div>
<div class="link">
<a href="javascript:showDialog();">登錄</a>
</div>
<div class="ui-mask" id="mask" onselectstart="return false"></div>
<script type="text/javascript">
// 獲取元素對象
function g(id){return document.getElementById(id);}
// 自動居中元素(el = Element)
function autoCenter( el ){
var bodyW = document.documentElement.clientWidth;
var bodyH = document.documentElement.clientHeight;
var elW = el.offsetWidth;
var elH = el.offsetHeight;
el.style.left = (bodyW-elW)/2 + 'px';
el.style.top = (bodyH-elH)/2 + 'px';
}
// 自動擴(kuò)展元素到全部顯示區(qū)域
function fillToBody( el ){
el.style.width = document.documentElement.clientWidth +'px';
el.style.height = document.documentElement.clientHeight + 'px';
}
var mouseOffsetX = 0; // 偏移
var mouseOffsetY = 0;
var isDraging = false; // 是否可拖拽的標(biāo)記
// 鼠標(biāo)事件1 - 在標(biāo)題欄上按下(要計(jì)算鼠標(biāo)相對拖拽元素的左上角的坐標(biāo),并且標(biāo)記元素為可拖動)
g('dialogTitle').【任務(wù)1】('mousedown',function(e){
var e = e || window.event;
mouseOffsetX = e.pageX - g('dialog').offsetLeft;
mouseOffsetY = e.pageY - g('dialog').offsetTop;
isDraging = true;
})
// 鼠標(biāo)事件2 - 鼠標(biāo)移動時(要檢測,元素是否可標(biāo)記為移動,如果是,則更新元素的位置,到當(dāng)前鼠標(biāo)的位置[ps:要減去第一步中獲得的偏移])
document.onmousemove = function( e ){
var e = e || window.event;
var mouseX = e.pageX; // 鼠標(biāo)當(dāng)前的位置
var mouseY = e.pageY;
var moveX = 0; // 浮層元素的新位置
var moveY = 0;
if( isDraging === true ){
moveX = 【任務(wù)2】
moveY = mouseY - mouseOffsetY;
g('dialog').style.left = moveX + 'px';
g('dialog').style.top = moveY + 'px';
}
}
// 鼠標(biāo)事件3 - 鼠標(biāo)松開的時候(標(biāo)記元素為不可拖動即可)
document.onmouseup = function(){
【任務(wù)3】
}
</script>
</body>
</html>
請驗(yàn)證,完成請求
由于請求次數(shù)過多,請先驗(yàn)證,完成再次請求