个人第一个jquery插件(tips)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人第一个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出现的速度延迟
    };
    function se(){
        setTimeout(function () {
            $(".tip_JS").remove();
        },200)
    };

    $.fn.JSTips= function(options) {
        var options = $.extend({}, defaults, options);

        return this.each(function() {
            var parentWidth=$(this).width();
            var parentHeight=$(this).height();
            options.parWidth=parentWidth;
            options.parHeight=parentHeight;
//                $(this).append(joesO(options));
            $(this).on("mouseenter",function () {
                $(this).append(joesTips(options));
            });
            $(this).on("mouseleave",function () {
                se();
            })
        });
    };
    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代码

/*上箭头*/
.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{
            position: relative;
            width: 500px;
            height: 500px;
            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>
</body>
<script src="jquery-1.12.2.min.js"></script>
<script src="./Tips/myTips.js"></script>
<script>


    $(".p").JSTips({
//        background:"rgba(0,0,0,0.5)",
//        position:"l",
//        tipsP:"150px",
//        txt:"helloWorld",
//        IconPos:"10px",
//        speed:"200",
    });
</script>
</html>

 

以上是关于个人第一个jquery插件(tips)的主要内容,如果未能解决你的问题,请参考以下文章

几个非常实用的JQuery代码片段

[vscode]--HTML代码片段(基础版,reactvuejquery)

Java技术jQuery自定义插件开发实践

Jquery插件 easyUI属性汇总

小tips:jquery中带命名空间的事件(namespaced events)

Javascript代码片段在drupal中不起作用