先来看DEMO:https://codepen.io/jonechen/pen/regjGG

插件的开发很简单,运用了CSS3的动画效果,并且弹出框的内容可以自定义。插件的默认配置参数有三个:

var defaults = {
event: 'click', // 默认点击事件
dialogBox: 'selector', // 弹出框容器
hover: false, // 默认滑动事件关闭
}

CSS部分:

*{padding: 0; margin: 0; list-style: none;font:14px/1.8 "microsoft yahei";}
body{background: #505050}
.btn{margin: 0 auto;width: 80px; }
.btn a{display:block; text-decoration: none; background: red;color: #fff; text-align: center; height: 40px;line-height: 40px; }
.box{width: 500px;height: 100px;border:1px solid #ccc;padding: 10px; display: none; }

HTML部分:

<div class="btn"><a href="#">点击我</a></div>

<div class="box">
这是弹出内容
</div>

JS插件部分:

/***
by jone 2016.5.17
***/
(function($) {
$.fn.dropMenu = function(options) {
var defaults = {
event: 'click', // 默认点击事件
dialogBox: 'selector', // 弹出框容器
hover: false, // 默认滑动事件关闭
}
var obj = $.extend(defaults, options);
this.each(function() {
var me = $(this);
me.parent().css('position', 'relative');
var wrapper = '<div class=\'wrapper\'><div class=\'space\'><i></i><em></em></div></div>';
me.parent().append(wrapper);
var _box = me.parent().find('.wrapper');
obj.dialogBox.show().appendTo(_box);
_box.css({
position: 'absolute',
top: me.outerHeight() + 11,
boxShadow: '0 0 5px rgba(0,0,0,0.05)',
transition: 'all 0.15s ease-in-out 0s',
visibility: 'hidden',
transformOrigin: 'left top',
transform: 'scale(0)',
background: '#fff',
});
_box.find('.space').css({
width: '100%',
height: '11px',
position: 'absolute',
top: '-11px',
left: 0
})
var borderColor = obj.dialogBox.css('borderColor');
_box.find("i,em").css({
content: " ",
borderColor: 'transparent transparent ' + borderColor + ' transparent',
borderStyle: 'solid',
borderWidth: '11px 8px',
display: 'block',
width: 0,
height: 0,
lineHeight: 0,
fontSize: 0,
position: 'absolute',
left: me.parent().outerWidth() / 2 - 10,
top: '-10px',
})
_box.find("em").css({
borderColor: 'transparent transparent #fff transparent',
top: '-8px',
})
var parentsWidth = me.parent().parent().innerWidth()
var parentWidth = me.parent().outerWidth();
var offsetWidth = me.parent().offset().left;
if (offsetWidth >= parentsWidth - parentWidth) {
_box.css({
right: 0,
transformOrigin: 'right top',
});
console.log(_box.outerWidth());
_box.find("i,em").css({
left: _box.outerWidth() - me.parent().outerWidth() - 10 + me.parent().outerWidth() / 2
})
}
if (!obj.dialogBox || obj.dialogBox === undefined) {
throw "error:obj.dialogBox is not defind";
return
} me.on(obj.event, function() {
var display = _box.css('visibility');
if (display == 'hidden') {
_box.css({
visibility: 'visible',
transform: 'scale(1)'
})
} else {
_box.css({
visibility: 'hidden',
transform: 'scale(0)'
})
}
});
if (obj.hover == true) {
me.off(obj.event);
me.on('mouseenter', show);
me.on('mouseleave', hide);
_box.on('mouseenter', show);
_box.on('mouseleave', hide);
} function show() {
_box.css({
visibility: 'visible',
transform: 'scale(1)'
})
}; function hide() {
_box.css({
visibility: 'hidden',
transform: 'scale(0)'
})
};
});
}
})(jQuery)

插件调用方法:

// 插件调用
$(function() {
$(".btn a").dropMenu({
dialogBox: $(".box"),
})
})

插件下载:jQuery.dropMenu.js

jQuery+css3弹出框插件的更多相关文章

  1. jQuery zxxbox弹出框插件(v3.0)

    插件地址: http://www.zhangxinxu.com/study/201009/jquery-zxxbox-v3-demo.html

  2. 弹出框插件layer使用

    layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 插件官方地址:http://layer.layui.co ...

  3. 弹出框插件——dialog

    基于jquery和dot.js弹出框插件,兼容IE6+等其他浏览器. 思想:弹出框元素插入body节点中,并在页面垂直居中显示(fixed定位),触发确定和关闭事件绑定. 注意ie6包含两个问题:一. ...

  4. js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .

    js简单显示和隐藏div .<!DOCTYPE html> .<html> .<head> .<meta charset="UTF-8"& ...

  5. JS弹出框插件zDialog再次封装

    zDialog插件网址:http://www.jq22.com/jquery-info2426 再次封装zDialog的代码: (function ($) { $.extend({ iDialog: ...

  6. js登录弹出框插件

    第一步:页面引入css:<link rel="stylesheet" type="text/css"" href="common/cs ...

  7. jquery.reveal弹出框

     一款js弹出框,嵌入其它页面: 引用: <script src="../../js/jquery.reveal.js" type="text/javascript ...

  8. 写了一个jquery的 弹出层插件。

    下载地址:http://pan.baidu.com/s/1eQ26CMm ps:ajax加载做的,要有环境才能正常运行哦! //这是一个以ajax加载显示弹出层插件  参数(option): widt ...

  9. layer弹出框插件参数及方法介绍

    layerui下载:http://www.layui.com 更多参数请阅读开发文档:http://www.layui.com/doc/modules/layer.html Layui 是一款采用自身 ...

随机推荐

  1. 何时使用 Em 与 Rem

    原文  http://www.w3cplus.com/css/when-to-use-em-vs-rem.html   你可能已经很熟练使用这两个灵活的单位,但你可能不完全了解何时使用rem,何时使用 ...

  2. s3c6410_uart初始化及读写

    参考: 1)<USER'S MANUAL-S3C6410X>第31章 UART 2)u-boot uart初始化及读写:u-boot-x.x.x/board/samsumg/smdk641 ...

  3. puppet实现主从部署各种软件实战参考模型

    puppet实现主从部署各种软件实战参考模型   实验要求:     1.我将准备三个节点 node2 , node3 , node4 2.我们想让节点node3部署ntp,nginx ;节点node ...

  4. asp.net跨页面传值

    a.aspx.cs //获取a中的id HttpCookie objCookie = new HttpCookie("myCookie", id); Response.Cookie ...

  5. 新浪SAE URLRewrite(伪静态、重定向)详解

    SAE全称Sina App Engine,真是一个好东西,他有很多优秀的特性,简单来说SAE就是一个简单高效的分布式Web服务开发.运行平台.支持现在常用的 PHP+Mysql 环境,在开发中难免会碰 ...

  6. centos yum 安装问题

    yum [Errno 256] No more mirrors to try 解决方法 输入下面的命令即可解决问题: yum clean all yum makecache 导致 centos安装软件 ...

  7. uboot启动流程

    uboot 的启动过程及工作原理2.1 启动模式介绍    大多数 Boot Loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种区别仅 ...

  8. Jquery + echarts 使用

    常规用法,就不细说了,按照官网一步步来. 本文主要解决问题(已参考网上其他文章): 1.把echarts给扩展到JQuery上,做到更方便调用. 2.多图共存 3.常见的X轴格式化,钻取时传业务实体I ...

  9. 【转载】MongoDB参数

    我们可以通过mongod --help查看mongod的所有参数说明,以下是各参数的中文解释. 基本配置–quiet# 安静输出 –port arg# 指定服务端口号,默认端口27017 –bind_ ...

  10. css权重及优先级问题

    css权重及优先级问题 几个值的对比 初始值 指定值 计算值 应用值 CSS属性的 指定值 (specified value)会通过下面3种途径取得: 在当前文档的样式表中给这个属性赋的值,会被优先使 ...