zoukankan      html  css  js  c++  java
  • 纯div+css样式弹出泡泡消息框

    也许很多框架都自带了这样的弹出泡泡框,但我没接触过,现在需要用,于是便自己用jquery封装了一个,完全div + css构成,兼容性好。虽然还不完美,但已经可以用了。这个小控件可以重定义样式,通过传递配置参数,或修改默认配置参数都可以进行样式调整。不管怎么说,就当是练手,或给新人提供一个参考学习的机会也行吧
    
    

    /*
     * 弹出泡泡的默认样式
     */
    var popMsgDefaultConfig = {
        cuspStyle: "1",                //相对定位的dom对象方位()
        cuspLength: 30,                //尖角长度
        cuspWidth: 15,                 //尖角宽度
        contentWidth: 160,             //消息文本框宽度
        contentHeight: 60,             //消息文本框的高度
        borderWidth: 2,                //边框宽度
        borderColor: "red",            //边框颜色
        backColor: "#EC90F6",          //背景色
        cuspShift: "60%",              //尖角位于消息内容框上/下时,指左位移,尖角位于消息内容框左/右时,指的上位移。
        contentShift: "20%",           //弹出框位于目标框上/下时,指左位移,弹出框位于目标框左/右时,指的上位移。
        textStyle: 'color: blue; font-size:small; font-family:"Microsoft YaHei";font-style:italic;', //默认内容文字样式
        /*
         * 配置文件合并
         */
        Merge: function (newConfig) {
            var result = {};
            for (var p in this) {
                result[p] = this[p];
                if (typeof (this[p]) == " function ") {
                    this[p]();
                } else {
                    for (var q in newConfig) {
                        if (p == q) {
                            result[p] = newConfig[q];
                        }
                    }
                }
            }
            return result;
        }
    };
    /*
     * 拓展jquery对象的方法;
     */
    (function ($) {
        /*
         * 关闭泡泡的方法
         */
        $.fn.ClosePopMsg = function () {
            var popmsg = $("#" + $(this).attr("id") + "_PopMsg");
            if (popmsg) {
                popmsg.remove();
            }
        };
        /*
         * 弹出泡泡的方法
         * text: 需要显示的消息内容
         * popMsgConfig: 自定义样式
         * Example: $("#divUserName").PopMsg("这是一个提示消息" { backColor: "gray", borderColor: "white", cuspStyle: "topleft",borderWidth: 1});
         */
        $.fn.PopMsg = function (text, popMsgConfig) {
            var o = $(this),f = o.offset(), id = o.attr("id") || Math.random(), c = popMsgDefaultConfig.Merge(popMsgConfig);
            o.attr("id", id).ClosePopMsg();
            //边框样式
            var popMsg = $("<div id='" + id + "_PopMsg'style='position:absolute;z-index:99;' ></div>").appendTo(document.body);
            var popContent = $("<div id='" + id + "_Content' style='padding:10px 5px;word-wrap:break-word;word-break:normal;overflow:hidden;vertical-align:middle;text-align:center;  " + (c.contentWidth - 10) + "px; border: " + c.borderColor + " solid;border-radius: 6px;background-color: " + c.backColor + "; " + c.textStyle + "'>" + text + "</div>").appendTo(popMsg);
            var popCusp = $("<div id='" + id + "_Cusp' style=' 0; height: 0; position:relative;'></div>").appendTo(popMsg);
            var popCuspInner = $("<div id='" + id + "_CuspInner' style='position: absolute;'></div>").appendTo(popCusp);
            popContent.css({ borderWidth: c.borderWidth + "px", borderColor: c.borderColor, backgroundColor: c.backColor });
            var innerTop = (c.cuspLength - 3 * c.borderWidth) + "px",innerWidth = (c.cuspWidth - 2 * c.borderWidth) + "px";
                msgLeft = ((c.cuspStyle < 5 ? f.left : f.top) + (c.contentShift.indexOf("px") > 0 ? parseInt(c.contentShift) : o.width() * parseInt(c.contentShift) / 100)) + "px";
            if (c.cuspStyle == 1) {//1:topleft
                popCusp.css({ borderTopWidth: c.cuspLength + "px", borderTopStyle: "solid", borderTopColor: c.borderColor, borderRightWidth: c.cuspWidth + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginTop: "-" + c.borderWidth + "px", marginLeft: c.cuspShift });
                popCuspInner.css({ borderTopWidth: innerTop, borderTopStyle: "solid", borderTopColor: c.backColor, borderRightWidth: innerWidth, borderRightStyle: "solid", borderRightColor: "transparent", top: "-" + c.cuspLength + "px", left: c.borderWidth + "px" });
                popMsg.css({  c.contentWidth + 2 * c.borderWidth, height: c.contentHeight + c.borderWidth + c.cuspLength, top: (f.top - c.contentHeight - c.cuspLength) + "px", left: msgLeft });
            }
            if (c.cuspStyle == 2) {//2:topright
                popCusp.css({ borderTopWidth: c.cuspLength + "px", borderTopStyle: "solid", borderTopColor: c.borderColor, borderLeftWidth: c.cuspWidth + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginTop: "-" + c.borderWidth + "px", marginLeft: c.cuspShift });
                popCuspInner.css({ borderTopWidth: innerTop, borderTopStyle: "solid", borderTopColor: c.backColor, borderLeftWidth: innerWidth, borderLeftStyle: "solid", borderLeftColor: "transparent", top: "-" + c.cuspLength + "px", left: "-" + (c.cuspWidth - c.borderWidth) + "px" });
                popMsg.css({  c.contentWidth + 2 * c.borderWidth, height: c.contentHeight + c.borderWidth + c.cuspLength, top: (f.top - c.contentHeight - c.cuspLength) + "px", left: msgLeft });
            }
            if (c.cuspStyle == 3) {//3:bottomleft
                popCusp.css({ borderBottomWidth: c.cuspLength + "px", borderBottomStyle: "solid", borderBottomColor: c.borderColor, borderRightWidth: c.cuspWidth + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginTop: "-" + c.borderWidth + "px", marginLeft: c.cuspShift });
                popCuspInner.css({ borderBottomWidth: innerTop, borderBottomStyle: "solid", borderBottomColor: c.backColor, borderRightWidth: innerWidth, borderRightStyle: "solid", borderRightColor: "transparent", top: (4 * c.borderWidth) + "px", left: c.borderWidth + "px" });
                popMsg.css({  c.contentWidth + 2 * c.borderWidth, height: c.contentHeight + c.borderWidth + c.cuspLength, top: (f.top + o.height()) + "px", left: msgLeft });
                popCusp.insertBefore(popContent);
            }
            if (c.cuspStyle == 4) {//4:bottomright
                popCusp.css({ borderBottomWidth: c.cuspLength + "px", borderBottomStyle: "solid", borderBottomColor: c.borderColor, borderLeftWidth: c.cuspWidth + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginTop: "-" + c.borderWidth + "px", marginLeft: c.cuspShift });
                popCuspInner.css({ borderBottomWidth: innerTop, borderBottomStyle: "solid", borderBottomColor: c.backColor, borderLeftWidth: innerWidth, borderLeftStyle: "solid", borderLeftColor: "transparent", top: (3 * c.borderWidth) + "px", left: "-" + (c.cuspWidth - c.borderWidth) + "px" });
                popMsg.css({  c.contentWidth + 2 * c.borderWidth, height: c.contentHeight + c.borderWidth + c.cuspLength, top: (f.top + o.height()) + "px", left: msgLeft });
                popCusp.insertBefore(popContent);
            }
            if (c.cuspStyle == 5) {//5:leftup
                popCusp.css({ float: "left", borderTopWidth: c.cuspWidth + "px", borderTopStyle: "solid", borderTopColor: c.borderColor, borderLeftWidth: c.cuspLength + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginLeft: "-" + c.borderWidth + "px", marginTop: (c.cuspWidth - 2 * c.borderWidth) + "px" });
                popCuspInner.css({ borderTopWidth: innerWidth, borderTopStyle: "solid", borderTopColor: c.backColor, borderLeftWidth: innerTop, borderLeftStyle: "solid", borderLeftColor: "transparent", top: "-" + (c.cuspWidth - c.borderWidth) + "px", left: "-" + (c.cuspLength - 4 * c.borderWidth) + "px" });
                popMsg.css({  c.contentWidth + c.borderWidth + c.cuspLength, height: c.contentHeight + 2 * c.borderWidth, top: msgLeft, left: (f.left + o.width() + c.cuspLength) + "px" });
                popContent.css({ float: "right" });
                popCusp.insertBefore(popContent);
            }
            if (c.cuspStyle == 6) {//6:leftdown
                popCusp.css({ float: "left", borderTopWidth: c.cuspWidth + "px", borderTopStyle: "solid", borderTopColor: c.borderColor, borderLeftWidth: c.cuspLength + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginLeft: "-" + c.borderWidth + "px", marginTop: (c.cuspWidth - 2 * c.borderWidth) + "px" });
                popCuspInner.css({ borderTopWidth: innerWidth, borderTopStyle: "solid", borderTopColor: c.backColor, borderLeftWidth: innerTop, borderLeftStyle: "solid", borderLeftColor: "transparent", top: "-" + (c.cuspWidth - c.borderWidth) + "px", left: "-" + (c.cuspLength - 4 * c.borderWidth) + "px" });
                popMsg.css({  c.contentWidth + c.borderWidth + c.cuspLength, height: c.contentHeight + 2 * c.borderWidth, top: msgLeft, left: (f.left + o.width()) + "px" }); //+ c.cuspLength
                popContent.css({ float: "right" });
                popCusp.insertBefore(popContent);
            }
            if (c.cuspStyle == 7) {//7:rightup
                popCusp.css({ float: "right", borderTopWidth: c.cuspWidth + "px", borderTopStyle: "solid", borderTopColor: c.borderColor, borderRightWidth: c.cuspLength + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginLeft: "-" + c.borderWidth + "px", marginTop: (c.cuspWidth - 2 * c.borderWidth) + "px" });
                popCuspInner.css({ borderTopWidth: innerWidth, borderTopStyle: "solid", borderTopColor: c.backColor, borderRightWidth: innerTop, borderRightStyle: "solid", borderRightColor: "transparent", top: "-" + (c.cuspWidth - c.borderWidth) + "px", left: "-" + c.borderWidth + "px" });
                popMsg.css({  c.contentWidth + c.borderWidth + c.cuspLength, height: c.contentHeight + 2 * c.borderWidth, top: msgLeft, left: (f.left - popContent.width() - c.cuspLength) + "px" });
                popContent.css({ float: "left" });
                popCusp.insertBefore(popContent);
            }
            if (c.cuspStyle == 8) {//8:rightdown
                popCusp.css({ float: "right", borderBottomWidth: c.cuspWidth + "px", borderBottomStyle: "solid", borderBottomColor: c.borderColor, borderRightWidth: c.cuspLength + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginLeft: "-" + c.borderWidth + "px", marginTop: (c.cuspWidth - 2 * c.borderWidth) + "px" });
                popCuspInner.css({ borderBottomWidth: innerWidth, borderBottomStyle: "solid", borderBottomColor: c.backColor, borderRightWidth: innerTop, borderRightStyle: "solid", borderRightColor: "transparent", top: c.borderWidth + "px", left: "-" + c.borderWidth + "px" });
                popMsg.css({  c.contentWidth + c.borderWidth + c.cuspLength, height: c.contentHeight + 2 * c.borderWidth, top: msgLeft, left: (f.left - popContent.width() - c.cuspLength) + "px" });
                popContent.css({ float: "left" });
                popCusp.insertBefore(popContent);
            }
        }
    })(jQuery);
    

  • 相关阅读:
    css3圆角细节
    css3伪元素
    使用vscode在谷歌上运行代码
    SpringCloud-技术专区-Gateway优雅的处理Filter抛出的异常
    SpringCloud-技术专区-Gateway全局通用异常处理
    Mybatis-技术专区-插件开发指南
    消息中间件-技术专区-RabbitMQ基本介绍
    SpringBoot-技术专区-自定义TaskExecutor线程池
    MySQL-技术专区-Binlog和Redolog的介绍
    SpringBoot-技术专区-Redis同数据源动态切换db
  • 原文地址:https://www.cnblogs.com/foren/p/6009104.html
Copyright © 2011-2022 走看看