首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

实现一个右侧显示和隐藏的功能,想

2013-05-02 
实现一个右侧显示和隐藏的功能,想请教各位http://developer.51cto.com/art/201208/354987.htm像这个里面右

实现一个右侧显示和隐藏的功能,想请教各位
http://developer.51cto.com/art/201208/354987.htm
像这个里面右侧有一个分享的按钮,我想实现它的效果,有相对浏览器固定,还有滑出隐藏功能,我试过很久都没有达到预期的效果,希望能有高手指点。。最好有源码示例。。。新手万分感激。。。。
[解决办法]
这种效果主要考虑mouseover和mouseout的冒泡事件,根据网上解决冒泡的方法给楼主简单的整了下,希望对楼主有所帮助:


<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>滑动与滑出效果</title>
        <style type="text/css">
            body,html{
                padding: 0px;
                margin: 0px;
            }
            .mainContent{
                margin: 0 auto;
                width: 800px;
                height: 2000px;
            }
            #bdshare{
                position: fixed;
                right: -215px; 
                top: 195px;  
                overflow: hidden; 
                cursor: pointer;
            }
            .shareContent{
                float: left;
                margin-top: 50px;
            }
            .shareRight{
                float: left;
                width: 208px;
                height: 328px; 
                border: 1px solid blue;
            }
        </style>
    </head>
    <body>
        <div class="mainContent">
            <div id="bdshare">
                <div id="shareId" class="shareContent">


                    <img src="http://bdimg.share.baidu.com/static/images/r0.gif" />
                </div>
                <div class="shareRight">里面自己布局就可以了</div>
            </div>
        </div>
        <script type="text/javascript">
            /**
            * 用于检查一个对象是否包含在另外一个对象中
            * @method contains 
            * @param {string} parentNode 父节点
            * @param {string} childNode 子节点
            */
            function contains(parentNode, childNode) { 
                if (parentNode.contains) { 
                    return parentNode != childNode && parentNode.contains(childNode);
                } 
                else { 
                    return !!(parentNode.compareDocumentPosition(childNode) & 16); 
                } 
            }
            /**
            * 用于检查鼠标是否真正从外部移入或者移出对象的
            * @method checkHover 
            * @param {string} e 当前的事件对象
            * @param {string} target 目标对象
            * @param {string} relatedTarget 属性代表的就是鼠标刚刚离开的那个节点,当触发mouseout事件时它代表的是鼠标移向的那个对象。
            * 由于MSIE不支持这个属性,不过它有代替的属性,分别是 fromElement和toElement
            */
            function checkHover(e,target){
                var rel = getEvent(e).relatedTarget ,
                from = getEvent(e).fromElement ,
                to = getEvent(e).toElement;
                if (getEvent(e).type=="mouseover")  {


                    return !contains(target,rel
[解决办法]
from) && !( (rel
[解决办法]
from)===target );
                } else {
                    return !contains(target,rel
[解决办法]
to) && !( (rel
[解决办法]
to)===target );
                }
            }
            /**
            * 用于在MSIE或者FF下返回一个可用的event对象
            * @method getEvent 
            * @param {string} e 当前的事件对象
            */
            function getEvent(e){
                return e
[解决办法]
window.event;
            }
            window.onload = function(){
                var bdshare = document.getElementById("bdshare");
                var shareId = document.getElementById("shareId");
                shareId.onmouseover = function(e){
                    if(checkHover(e,shareId)){
                        bdshare.style.right = "0px";
                    }
                }
                bdshare.onmouseout = function(e){
                    if(checkHover(e,bdshare)){
                        bdshare.style.right = "-215px";
                    }
                }
            }
        </script>


    </body>
</html>

热点排行