自己封装的一个纯div+css样式弹出泡泡消息框_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:44:24
原创
1699人浏览过

    也许很多框架都自带了这样的弹出泡泡框,但我没接触过,现在需要用,于是便自己封装了一个,虽然还不完美,但已经可以用了。这个小控件可以重定义样式,通过传递配置参数,或修改默认配置参数都可以进行样式调整。不管怎么说,就当是练手,或给新人提供一个参考学习的机会也行吧
登录后复制
/*  * js 对象合并  */function extend(newObj, defaultObj) {    var result = {};    for (var p in defaultObj) {         result[p] = defaultObj[p];        if (typeof (defaultObj[p]) == " function ") {            defaultObj[p]();        } else {             for (var q in newObj) {                 if (p == q) {                    result[p] = newObj[q];                }            }        }    }     return result;}/*  * 弹出泡泡的默认样式 */var popMsgDefaultConfig = {    containner: $(document.body),  //相对定位的dom对象或对象的id.    cuspStyle: "topleft",          //相对定位的dom对象方位(topleft,topright,bottomleft,bottomright,leftup,leftdown,rightup,rightdown)    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;'}/*  * 弹出泡泡的方法 * containner: 泡泡指向的dom对象id * text: 需要显示的消息内容 * popMsgConfig: 自定义样式 * Example: popMsgShow("divUserName", "这是一个提示消息" { backColor: "gray", borderColor: "white", cuspStyle: "topleft",borderWidth: 1}); */function popMsgShow(containner, text, popMsgConfig) {    popMsgClose();    var config = extend(popMsgConfig, popMsgDefaultConfig);    //边框样式    var obj = $("#" + containner);    var offset = obj.offset();    var popMsg = $("<div id='divPopMsg'style='position:fixed;' ></div>");    var popContent = $("<div id='divContent' style='vertical-align:middle;text-align:center; line-height: " + config.contentHeight + "px;" + " height: " + config.contentHeight + "px" + "; width: " + config.contentWidth + "px" + "; border: " + config.borderColor + " solid;border-radius: 6px;background-color: " + config.backColor + "; " + config.textStyle + "'>" + text + "</div>");    var popCusp = $("<div id='divCusp' style='width: 0; height: 0; position:relative;'></div>");    var popCuspInner = $("<div id='divCuspInner' style='position: absolute;'></div>");    popContent.css({ borderWidth: config.borderWidth + "px", borderColor: config.borderColor, backgroundColor: config.backColor });    popCusp.append(popCuspInner);    popMsg.append(popContent);    if (config.cuspStyle == "topleft")    {        var innerTop = (config.cuspLength - 3*config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2*config.borderWidth) + "px";        var msgLeft = (offset.left + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.width() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ borderTopWidth: config.cuspLength + "px", borderTopStyle: "solid", borderTopColor: config.borderColor, borderRightWidth: config.cuspWidth + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginTop: "-" + config.borderWidth + "px", marginLeft: config.cuspShift });        popCuspInner.css({ borderTopWidth: innerTop, borderTopStyle: "solid", borderTopColor: config.backColor, borderRightWidth: innerWidth, borderRightStyle: "solid", borderRightColor: "transparent", top: "-" + config.cuspLength + "px", left: config.borderWidth + "px" });        popMsg.css({ top: (offset.top - config.contentHeight - config.cuspLength) + "px", left: msgLeft });        popMsg.append(popCusp);    }    if (config.cuspStyle == "topright") {        var innerTop = (config.cuspLength - 3 * config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2 * config.borderWidth) + "px";        var msgLeft = (offset.left + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.width() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ borderTopWidth: config.cuspLength + "px", borderTopStyle: "solid", borderTopColor: config.borderColor, borderLeftWidth: config.cuspWidth + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginTop: "-" + config.borderWidth + "px", marginLeft: config.cuspShift });        popCuspInner.css({ borderTopWidth: innerTop, borderTopStyle: "solid", borderTopColor: config.backColor, borderLeftWidth: innerWidth, borderLeftStyle: "solid", borderLeftColor: "transparent", top: "-" + config.cuspLength + "px", left: "-" + (config.cuspWidth - config.borderWidth) + "px" });        popMsg.css({ top: (offset.top - config.contentHeight - config.cuspLength) + "px", left: msgLeft });        popMsg.append(popCusp);    }    if (config.cuspStyle == "bottomleft") {        var innerTop = (config.cuspLength - 3 * config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2 * config.borderWidth) + "px";        var msgLeft = (offset.left + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.width() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ borderBottomWidth: config.cuspLength + "px", borderBottomStyle: "solid", borderBottomColor: config.borderColor, borderRightWidth: config.cuspWidth + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginTop: "-" + config.borderWidth + "px", marginLeft: config.cuspShift });        popCuspInner.css({ borderBottomWidth: innerTop, borderBottomStyle: "solid", borderBottomColor: config.backColor, borderRightWidth: innerWidth, borderRightStyle: "solid", borderRightColor: "transparent", top: (4 * config.borderWidth) + "px", left: config.borderWidth + "px" });        popMsg.css({ top: (offset.top + obj.height()) + "px", left: msgLeft });        popCusp.insertBefore(popContent);    }    if (config.cuspStyle == "bottomright") {        var innerTop = (config.cuspLength - 3 * config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2 * config.borderWidth) + "px";        var msgLeft = (offset.left + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.width() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ borderBottomWidth: config.cuspLength + "px", borderBottomStyle: "solid", borderBottomColor: config.borderColor, borderLeftWidth: config.cuspWidth + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginTop: "-" + config.borderWidth + "px", marginLeft: config.cuspShift });        popCuspInner.css({ borderBottomWidth: innerTop, borderBottomStyle: "solid", borderBottomColor: config.backColor, borderLeftWidth: innerWidth, borderLeftStyle: "solid", borderLeftColor: "transparent", top: (3*config.borderWidth) + "px", left: "-" + (config.cuspWidth - config.borderWidth) + "px" });        popMsg.css({ top: (offset.top + obj.height()) + "px", left: msgLeft });        popCusp.insertBefore(popContent);    }    if (config.cuspStyle == "leftup") {        var innerTop = (config.cuspLength - 3 * config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2 * config.borderWidth) + "px";        var msgLeft = (offset.top + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.height() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ float: "left", borderTopWidth: config.cuspWidth + "px", borderTopStyle: "solid", borderTopColor: config.borderColor, borderLeftWidth: config.cuspLength + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginLeft: "-" + config.borderWidth + "px", marginTop: (config.cuspWidth - 2*config.borderWidth) + "px" });        popCuspInner.css({ borderTopWidth: innerWidth, borderTopStyle: "solid", borderTopColor: config.backColor, borderLeftWidth: innerTop, borderLeftStyle: "solid", borderLeftColor: "transparent", top: "-" + (config.cuspWidth - config.borderWidth) + "px", left: "-" + (config.cuspLength - 4*config.borderWidth) + "px" });        popMsg.css({ top: msgLeft, left: (offset.left + obj.width() + config.cuspLength) + "px" });        popContent.css({float: "right"});        popCusp.insertBefore(popContent);    }    if (config.cuspStyle == "leftdown") {        var innerTop = (config.cuspLength - 3 * config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2 * config.borderWidth) + "px";        var msgLeft = (offset.top + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.height() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ float: "left", borderTopWidth: config.cuspWidth + "px", borderTopStyle: "solid", borderTopColor: config.borderColor, borderLeftWidth: config.cuspLength + "px", borderLeftStyle: "solid", borderLeftColor: "transparent", marginLeft: "-" + config.borderWidth + "px", marginTop: (config.cuspWidth - 2*config.borderWidth) + "px" });        popCuspInner.css({ borderTopWidth: innerWidth, borderTopStyle: "solid", borderTopColor: config.backColor, borderLeftWidth: innerTop, borderLeftStyle: "solid", borderLeftColor: "transparent", top: "-" + (config.cuspWidth - config.borderWidth) + "px", left: "-" + (config.cuspLength - 4 * config.borderWidth) + "px" });        popMsg.css({ top: msgLeft, left: (offset.left + obj.width() + config.cuspLength) + "px" });        popContent.css({float: "right"});        popCusp.insertBefore(popContent);    }    if (config.cuspStyle == "rightup") {        var innerTop = (config.cuspLength - 3 * config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2 * config.borderWidth) + "px";        var msgLeft = (offset.top + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.height() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ float: "right", borderTopWidth: config.cuspWidth + "px", borderTopStyle: "solid", borderTopColor: config.borderColor, borderRightWidth: config.cuspLength + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginLeft: "-" + config.borderWidth + "px", marginTop: (config.cuspWidth - 2 * config.borderWidth) + "px" });        popCuspInner.css({ borderTopWidth: innerWidth, borderTopStyle: "solid", borderTopColor: config.backColor, borderRightWidth: innerTop, borderRightStyle: "solid", borderRightColor: "transparent", top: "-" + (config.cuspWidth - config.borderWidth) + "px", left: "-" + config.borderWidth + "px" });        popMsg.css({ top: msgLeft, left: (offset.left - popContent.width() - config.cuspLength) + "px" });        popContent.css({ float: "left" });        popCusp.insertBefore(popContent);    }    if (config.cuspStyle == "rightdown") {        var innerTop = (config.cuspLength - 3 * config.borderWidth) + "px";        var innerWidth = (config.cuspWidth - 2 * config.borderWidth) + "px";        var msgLeft = (offset.top + (config.contentShift.indexOf("px") > 0 ? parseInt(config.contentShift) : obj.height() * parseInt(config.contentShift) / 100)) + "px";        popCusp.css({ float: "right", borderBottomWidth: config.cuspWidth + "px", borderBottomStyle: "solid", borderBottomColor: config.borderColor, borderRightWidth: config.cuspLength + "px", borderRightStyle: "solid", borderRightColor: "transparent", marginLeft: "-" + config.borderWidth + "px", marginTop: (config.cuspWidth - 2 * config.borderWidth) + "px" });        popCuspInner.css({ borderBottomWidth: innerWidth, borderBottomStyle: "solid", borderBottomColor: config.backColor, borderRightWidth: innerTop, borderRightStyle: "solid", borderRightColor: "transparent", top: config.borderWidth + "px", left: "-" + config.borderWidth + "px" });        popMsg.css({ top: msgLeft, left: (offset.left - popContent.width() - config.cuspLength) + "px" });        popContent.css({ float: "left" });        popCusp.insertBefore(popContent);    }    $(document.body).append(popMsg);}     /*  * 关闭泡泡的方法 */function popMsgClose() {    var popmsg = $("#divPopMsg");    if (popmsg) {        $("#divPopMsg").remove();    }}       
登录后复制

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号