• 个人第一个jquery插件(tips)


    js代码

    /**
     * Created by joesbell on 2016/10/8.
     */
    ;(function($) {
        var defaults = {
            background:"#000",//tips的背景颜色
            color:"white",//字体颜色
            position:"r",//出现的位置 l--左边, r--右边  t--顶部  b--底部
            parWidth:"",//父级元素的宽度
            parHeight:"",//父级元素的高度
            tipsJ:"10px",//tips的距离父级距离偏移量
            tipsP:"20px",//tips的居中位置偏移量
            padding:"10px",//文字提示内边距
            txt:"helloWorld",//文字
            IconPos:"10px",//小箭头居中位置偏移量
            speed:"200",//tips出现的速度延迟
            show:true//是否出现
        };
        function TipsRemove(){
            setTimeout(function () {
                $(".tip_JS").remove();
            },200)
        };
    
        $.fn.JSTips = function(options) {
            var options = $.extend({}, defaults, options);
    
            return this.each(function() {
                $(this).addClass("jsTips");
                $(this).on("mouseenter",function () {
                    if(options.show==true){
                        var parentWidth=$(this).width();
                        var parentHeight=$(this).height();
                        options.parWidth=parentWidth;
                        options.parHeight=parentHeight;
                        $(this).append(joesTips(options));
                    }else {
                        $(".tip_JS").remove();
                    }
                });
                $(this).on("mouseleave",function () {
                    TipsRemove();
                })
            });
        };
        function joesTips(opts) {
            var layEle=$("<div class='tip_JS'></div>");
            var layE=$("<div class='txt_JS'></div>");
            var cs=$("<i></i>");
            var pe=$("<p class='tipTxt_JS'></p>")
            var tipsP=parseInt(opts.tipsP);
            var tipsJ=parseInt(opts.tipsJ);
            var PW=opts.parWidth;
            var PH=opts.parHeight;
            var position=opts.position;
            var bg=opts.background;
            var pd=parseInt(opts.padding);
            var txt=opts.txt;
            var IconPos=opts.IconPos;
            var speed=parseInt(opts.speed);
            var color=opts.color;
            pe.appendTo(layE).css({
                padding:pd,
            });
            pe.html(txt);
            layE.appendTo(layEle);
            $(".test:after").css({
                "border-color":bg
            });
    //            tips出现在右边
            if(position=="r"){
                layEle.css({
                    background:bg,
                    left:PW+tipsJ,
                    top:tipsP,
                    color:color,
                }).show(speed);
                cs.addClass("triangle-left").css({
                    top:IconPos,
                    "border-right-color":bg
                }).appendTo(layE);
            }else if(position=="l"){
                //            tips出现在左边
                layEle.css({
                    background:bg,
                    right:PW+tipsJ,
                    top:tipsP,
                    color:color
                }).show(speed);
                cs.addClass("triangle-right").css({
                    top:IconPos,
                    "border-left-color":bg
                }).appendTo(layE);
    
            }else if(position=="b"){
                layEle.css({
                    background:bg,
                    top:PH+tipsJ,
                    left:tipsP,
                    color:color
                }).show(speed);
                cs.addClass("triangle-up").css({
                    left:IconPos,
                    "border-bottom-color":bg
                }).appendTo(layE);
                //            tips出现在底部
    
            }else if(position=="t"){
                //            tips出现在顶部
                layEle.css({
                    background:bg,
                    bottom:PH+tipsJ,
                    left:tipsP,
                    color:color
                }).show(speed);
                cs.addClass("triangle-down").css({
                    left:IconPos,
                    "border-top-color":bg
                }).appendTo(layE);
    
            }
            return layEle
        }
    })(jQuery);
     

    css代码

    
    

    /*父级元素*/
    .jsTips{
    position: relative;
    }


    /*
    上箭头*/ .triangle-up { position: absolute; width:0; height:0; bottom: 100%; border:10px solid transparent; border-bottom-color:yellow; } /*下箭头*/ .triangle-down { position: absolute; width:0; height:0; top:100%; /*transform: translate(-50%,-50%);*/ border:10px solid transparent; border-top-color:yellow; } /*左箭头*/ .triangle-left { position: absolute; width:0; height:0; right: 100%; border:10px solid transparent; border-right-color:yellow; } /*右箭头*/ .triangle-right { position: absolute; width:0; height:0; left: 100%; margin: auto; /*transform: translate(-50%,0);*/ border:10px solid transparent; border-left-color:yellow; } .tip_JS{ position: absolute; display: none; width: auto; } .txt_JS{ position: relative; } .tipTxt_JS{ white-space: nowrap; }

    测试

    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
    
            .p{
                width: 100px;
                height: 100px;
                background: #000;
                margin: 0 auto;
                margin-top: 200px;
            }
        </style>
        <link rel="stylesheet" href="./Tips/myTips.css">
    </head>
    <body>
    <div class="p">
        <p style="color: wheat">我的第一个tips插件</p>
    </div>
    <div class="p">
        <p style="color: wheat">000000000000</p>
    </div>
    <button>开始</button>
    </body>
    <script src="jquery-1.12.2.min.js"></script>
    <script src="./Tips/myTips.js"></script>
    <script>
        var p=$(".p");
        p.JSTips({
        });
        $("button").on("click",function () {
            if(p.width()==100){
                p.width(200);
                p.JSTips({
                    show:false
                });
            }else {
                p.width(100);
                p.JSTips({
                });
            }
        });
    
    </script>
    </html>
    
    
    
     
  • 相关阅读:
    条款1:理解模板类型推导
    非受限联合体
    整型
    vector作为函数返回类型
    SQL Server数据库空间管理 (1)
    1085 PAT单位排行 (25 分
    1084 外观数列 (20 分)
    1083 是否存在相等的差 (20 分)
    1082 射击比赛 (20 分)
    1081 检查密码 (15 分)
  • 原文地址:https://www.cnblogs.com/joesbell/p/5938740.html
Copyright © 2020-2023  润新知