美文网首页
1.Tooltip浮动提示框效果

1.Tooltip浮动提示框效果

作者: 栀子花wish | 来源:发表于2017-03-28 17:38 被阅读0次

    <h4>一、实现效果:</h4>


    1.png
    2.png

    <h4>二、实现特效的四个关键点:</h4>


    5829692c00016ee012800720.jpg
    585733770001165112800720.jpg

    核心代码:<pre><a class="tooltip">中国</a></pre>
    鼠标移入时:<pre><a class="tooltip">中国 <div class="tooltip-box">中华人民共和国</div></a></pre>
    <h4>三、特效所需要掌握的技术点:</h4>
    ①createElement:创建元素节点,并返回创建的 Element对象
    ②appendChild:把元素节点追加到已有的元素上。
    ③createElement一般与appendChild联合使用。
    ④mouseover事件鼠标进入被选元素和子元素都会触发,mouseenter事件鼠标进入被选元素的子元素不会被触发
    ⑤注意mouseover和mouseenter、mouseleave和mouseout区别(此场景使用mouseleave)
    ⑥setTimeout:在指定的毫秒数后调用函数或计算表达式(注意setTimeout只执行一次)
    ⑦clearTimeout:可取消由 setTimeout()方法设置的timeout.一般使用是:
    <pre>var t=setTimeout(...);
    clearTimeout(t);
    </pre>
    <h4>代码优化:</h4>


    html结构:



    CSS样式:
    <pre>
    body {
    font-size: 14px;
    line-height: 1.8;
    background: url("bg.jpg") no-repeat center top;
    font-family: "Microsoft YaHei", "微软雅黑";
    }

            #demo {
                width: 500px;
                margin: 30px auto;
                padding: 20px 30px;
                position: relative;
                background-color: #fff;
                border-radius: 10px;
                -moz-border-radius: 10px;
                -webkit-border-radius: 10px;
                box-shadow: 0px 0px 0px 10px rgba(0, 0, 0, 0.2);
                -moz-box-shadow: 0px 0px 0px 10px rgba(0, 0, 0, 0.2);
                -webkit-box-shadow: 0px 0px 0px 10px rgba(0, 0, 0, 0.2);
            }
            
            #demo h2 {
                color: #03F;
            }
            
            #demo .tooltip {
                color: #03F;
                cursor: help;
            }
            
            .tooltip-box {
                display: block;
                background: #fff;
                line-height: 1.6;
                border: 1px solid #66CCFF;
                color: #333;
                padding: 20px;
                font-size: 12px;
                border-radius: 5px;
                -moz-border-radius: 5px;
                -webkit-border-radius: 5px;
                overflow: auto;
            }
            
            #mycard img {
                float: left;
                width: 100px;
                height: 100px;
                padding: 10px;
            }
            
            #mycard p {
                float: left;
                width: 150px;
                padding: 0 10px;
            }
        </style>
    </pre>
    

    JavaScript:
    <pre>
    function addEvent(element, event, callbackFunction) {
    if(element.addEventListener) {
    element.addEventListener(event, callbackFunction, false);
    } else if(element.attachEvent) {
    element.attachEvent('on' + event, callbackFunction);
    }
    }
    var toolTipBoxClass = "tooltip-box";

            var isIE = navigator.userAgent.indexOf("MSIE") > -1;
    
            var getEl = function(id) {
                return document.getElementById(id);
            }
    
            var demo = getEl("demo");
    
            //obj - ToolTip 超链接元素
            //id - ToolTip提示框id
            //html - ToolTip提示框HTML
            //width - ToolTip提示框宽度(可选)
            //height - ToolTip提示框高度(可选)
            function showToolTip(obj, id, html, width, height) {
                if(getEl(id) == null) {
                    //创建 <div class="tooltip-box" id="xx">xxxxxx</div>
                    var toolTipBox;
                    toolTipBox = document.createElement("div");
                    toolTipBox.className = toolTipBoxClass;
                    toolTipBox.id = id;
                    toolTipBox.innerHTML = html;
                    obj.appendChild(toolTipBox);
    
                    toolTipBox.style.width = width ? width + "px" : "auto";
                    toolTipBox.style.height = height ? height + "px" : "auto";
    
                    if(!width && isIE) {
                        toolTipBox.style.width = toolTipBox.offsetWidth;
                    }
    
                    toolTipBox.style.position = "absolute";
                    toolTipBox.style.display = "block";
    
                    var left = obj.offsetLeft;
                    var top = obj.offsetTop + 20;
    
                    //left,不让ToolTip提示框超出浏览器
                    if(left + toolTipBox.offsetWidth > document.body.clientWidth) {
                        var demoLeft = demo.offsetLeft;
                        left = document.body.clientWidth - toolTipBox.offsetWidth - demoLeft;
                        if(left < 0) left = 0;
                    }
    
                    toolTipBox.style.left = left + "px";
                    toolTipBox.style.top = top + "px";
    
                    addEvent(obj, "mouseleave", function() {
                        setTimeout(function() {
                            getEl(id).style.display = "none";
                        }, 300);
                    });
                } else {
                    //显示
                    getEl(id).style.display = "block";
                }
            }
    

    </pre>

    相关文章

      网友评论

          本文标题:1.Tooltip浮动提示框效果

          本文链接:https://www.haomeiwen.com/subject/gtvjottx.html