QQ面板切换效果(web版)【实例】

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8"/>
    <title>拖动</title>
    <link href="style.css" rel="stylesheet" />
    <script src="style.js"></script>
</head>
<body>
<div class="loginPanel" id="loginPanel">
    <div style="position: relative; z-index: 1;">
        <div class="ui_boxyClose" id="ui_boxyClose"></div>
    </div>
    <div class="login_logo_webqq"></div>


    <div class="inputs">
        <div class="sign-input"><span>帐 号:</span><span><input autocomplete="on" name="u" id="u" type="text" style="ime-mode: disabled" class="input01" tabindex="1" value="QQ号码或Email帐号" onFocus="if (value =='QQ号码或Email帐号'){value =''}" onBlur="if (value ==''){value='QQ号码或Email帐号';}" /></span></div>
        <div class="sign-input"><span>密 码:</span><span><input name="p" id="p" maxlength="16" type="password" class="input01" tabindex="2" /></span></div>
    </div>

    <div class="bottomDiv">
        <div class="btn" style="float: left"></div>
        <div>
            <div id="loginState" class="login-state-trigger login-state-trigger2 login-state" title="选择在线状态">
                <div id="loginStateShow" class="login-state-show online">状态</div>
                <div class="login-state-down">下</div>
                <div class="login-state-txt" id="login2qq_state_txt">在线</div>
                <ul id="loginStatePanel" class="statePanel login-state" style="display: none">
                    <li id="online" class="statePanel_li">
                        <div class="stateSelect_icon online"></div>
                        <div class="stateSelect_text">我在线上</div>
                    </li>
                    <li id="callme" class="statePanel_li">
                        <div class="stateSelect_icon callme"></div>
                        <div class="stateSelect_text">Q我吧</div>
                    </li>
                    <li id="away" class="statePanel_li">
                        <div class="stateSelect_icon away"></div>
                        <div class="stateSelect_text">离开</div>
                    </li>
                    <li id="busy" class="statePanel_li">
                        <div class="stateSelect_icon busy"></div>
                        <div class="stateSelect_text">忙碌</div>
                    </li>
                    <li id="silent" class="statePanel_li">
                        <div class="stateSelect_icon silent"></div>
                        <div class="stateSelect_text">请勿打扰</div>
                    </li>
                    <li id="hidden" class="statePanel_li">
                        <div class="stateSelect_icon hidden"></div>
                        <div class="stateSelect_text">隐身</div>
                    </li>
                </ul>
            </div>

        </div>


    </div>

</div>


</body>
</html>

/**
 * Created by adminsjm on 2015/11/18.
 */
//得到类的所有对象,为了兼容
function getByClass(className,parent){
    var oParent=parent?document.getElementById(parent):document,
        eles=[],
        elements=oParent.getElementsByTagName('*');
    for(var i=0;i<elements.length;i++){
        if(elements[i].className==className){
            eles.push(elements[i]);
        }
    }
    return eles;
}
window.οnlοad=drag;

function drag(){
    var oTitile=getByClass('login_logo_webqq','loginPanel')[0];
    //拖曳
    oTitile.οnmοusedοwn=fnDown;
    //关闭
    var oClose=document.getElementById('ui_boxyClose');
    oClose.οnclick=function(){
        document.getElementById('loginPanel').style.display="none";
    }
    //切换状态
    var loginState=document.getElementById("loginState"),
        stateList=document.getElementById("loginStatePanel"),
        list=stateList.getElementsByTagName("li"),
        stateTxt=document.getElementById("login2qq_state_txt"),
        loginStateShow=document.getElementById("loginStateShow");

    loginState.οnclick=function(event){
        e=window.event||event;
        if(e.stopPropagation()){
            e.stopPropagation();
        }else{
            e.cancelBubble=true;
        }
        stateList.style.display="block";
    }
    //鼠标滑过、离开、点击状态列表时
    for(var i=0;i<list.length;i++){
        list[i].οnmοusemοve=function(){
            this.style.background="#567";
        }
        list[i].οnmοuseοut=function(){
            this.style.background="#fff";
        }
        list[i].οnclick=function(event){
            //阻止浏览器冒泡
            e=event||window.event;
            if(e.stopPropagation()){
                e.stopPropagation();
            }else{
                e.cancelBubble=true;
            }
            var id=this.id;
            stateList.style.display="none";
            stateTxt.innerHTML=getByClass("stateSelect_text",id)[0].innerHTML;
            loginStateShow.className="";
            loginStateShow.className="login-state-show "+id;
        }
    }
    document.οnclick=function(){
        stateList.style.display="none";
    }
}

function fnDown(event){
    event=event||window.event;
    var oDrag=document.getElementById('loginPanel'),
        disX=event.clientX-oDrag.offsetLeft,
        disY=event.clientY-oDrag.offsetTop;
    //按下鼠标
    document.οnmοusemοve=function(event){
        event=event||window.event;
        fnMove(event,disX,disY);
    }
    //释放鼠标
    document.οnmοuseup=function(){
        document.οnmοusemοve=null;
        document.οnmοuseup=null;
    }
}

function fnMove(e,posX,posY){
    var oDrag=document.getElementById('loginPanel'),
        l=e.clientX-posX,
        t=e.clientY-posY,
        winW=document.documentElement.clientWidth||document.body.clientWidth,
        winH=document.documentElement.clientHeight||document.body.clientHeight,
        maxW=winW-oDrag.offsetWidth-10,
        maxH=winH-oDrag.offsetHeight;
    if(l<0) {
        l=0;
    }else if(l>maxW){
        l=maxW;
    }
    if(t<0){
        t=10;
    }else if(t>maxH){
        t=maxH;
    }
    oDrag.style.left=l+"px";
    oDrag.style.top=t+"px";
}

.loginPanel {
    width: 380px;
    height: 247px;
    left: 400px;
    top: 120px;
    position: absolute;
    border: 1px solid #ccc;
    background: #f6f6f6;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
    -moz-box-shadow: 0 0 8px #000;
    -webkit-box-shadow: 0 0 8px #000;
    box-shadow: 0 0 8px #000;
}


.login_logo_webqq {
    background: url('images/login_window_logo.png') no-repeat -210px -0px;
    margin-left: 100px;
    margin-top: 10px;
    width: 200px;
    height: 44px;
    cursor: move;
}


.inputs {
    font: bold 15px arial;
    margin-left: 80px;
    margin-top: 30px;
}

.inputs .sign-input {
    padding-bottom: 20px;
}

.inputs .sign-input input {
    width: 170px;
    border: 1px #ccc solid;
    color: #868686;
    font-size: 16px;
    padding: 2px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    -khtml-border-radius: 10px;
    -border-radius: 10px;
    outline: none;
}

.btn {
    background: url("images/login_btn.png") no-repeat -111px 0;
    width: 111px;
    height: 36px;
    border: 0;
    text-align: center;
    line-height: 20px;
    color: #0C4E7C;
    cursor: pointer;
    margin-left: 14px;
}


.login-state-trigger {
    cursor: pointer;
    display: block;
    float: left;
    height: 16px;
    overflow: hidden;
    width: 120px;
    margin: 4px 0 0 0;
}

.login-state-trigger2 {
    margin: 10px 0 0 20px;
}

.login-state-down {
    background: url("images/ptlogin.png") no-repeat scroll 0 -22px transparent;
    float: left;
    height: 6px;
    margin-top: 5px;
    overflow: hidden;
    text-indent: -999em;
    width: 7px;
}

.login-state-show {
    float: left;
    height: 14px;
    overflow: hidden;
    text-indent: -999em;
    width: 14px;
    margin: 1px 4px 0 0;
}

.login-state-txt {
    float: left;
    margin-left: 5px;
    font-size: 12px;
>line-height:18px!important;
}

.login-state .callme {
    background: url("images/ptlogin.png") -72px 0 no-repeat;
}

.login-state .online {
    background: url("images/ptlogin.png") 0 0 no-repeat;
}

.login-state .away {
    background: url("images/ptlogin.png") -18px 0 no-repeat;
}

.login-state .busy {
    background: url("images/ptlogin.png") -36px 0 no-repeat;
}

.login-state .silent {
    background: url("images/ptlogin.png") -108px 0 no-repeat;
}

.login-state .hidden {
    background: url("images/ptlogin.png") -54px 0 no-repeat;
}

.statePanel {
    display: none;
    position: absolute;
    right: 68px;
    top: 193px;
    z-index: 10;
    margin: 0;
    border-width: 1px;
    border-style: solid;
    border-color: #ccc #6a6a6a #666 #cdcdcd;
    padding: 0;
    width: 100px;
    height: 133px;
    overflow: hidden;
    background: white;
    font-size: 12px;
    line-height: 1.5;
}

.statePanel .statePanel_li {
    display: block;
    float: left;
    margin: 0;
    padding: 3px 0;
    width: 100px;
    height: 16px;
    line-height: 16px;
    overflow: hidden;
    zoom: 1;
    cursor: pointer;
}

.stateSelect_icon {
    float: left;
    margin: 2px 0 0 5px;
    width: 14px;
    height: 14px;
    overflow: hidden;
}

.stateSelect_text {
    margin: 0 0 0 22px;
}

.bottomDiv {
    margin-left: 70px;
}

.ui_boxyClose{width:28px;height:28px;position:absolute;top:-10px;right:-10px;cursor:pointer;background:url('images/boxy_btn.png') no-repeat;z-index:1}.ie6_0 .ui_boxyClose{background:0;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='boxy_btn.png',sizingMethod='scale')}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值