先来看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. 条款22 template method 模式

    template method 模式,模板方法模式 其实他和C++模板没有关系. 前者是提供的为派生类设计者提供清晰指示的一种方法,这个事实表示"如何去实现基类所规定的契约" 基类 ...

  2. A Neural Probabilistic Language Model

    A Neural Probabilistic Language Model,这篇论文是Begio等人在2003年发表的,可以说是词表示的鼻祖.在这里给出简要的译文 A Neural Probabili ...

  3. 一个完整的菜谱客户端(android源码)(有独立后台)

    该源码是自己写的,是一个完整的菜谱类客户端.功能简单比较简单,界面比较丑,自己乱拼接的,只为学习用.功能相对完整,数据来自独立后台,通过http协议获取,全部来自真实数据.代码里面有获取数据的相应ur ...

  4. js 实现获取对象所有键名(key)的方法

    1.for in 循环 并且使用hasOwnProperty 方法 var jsonObject1 = { "name": "xiaoming", " ...

  5. linux路由配置负载均衡

    负载平衡ip route add default scope global nexthop via XX.XX.XX.XX dev eth0 weight 1 nexthop via XX.XX.XX ...

  6. Java数字处理

    给出一个不多于5位的正整数,要求如下: (1)求出该数是几位数. (2)分别打印出每一位数字. (3)按照逆序打印出各位数值. 按照以上要求,首先得用户从键盘输入一个不多于5位的正整数,可以用Syst ...

  7. jquery 消息提醒插件 toastmessage

    最近做系统,想到使用后台要使用消息提醒,但是一直苦恼消息提醒的效果,于是找了一个toastmessage,还不错.记录下使用的方法. 第一步:引入需要的文件 <script type=" ...

  8. SQL语句的执行顺序

    一.sql语句的执行顺序 (8)SELECT (9) DISTINCT (11) <TOP_specification> <select_list> (1) FROM < ...

  9. R语言中判断是否是整数。以及读写excel

    今天接手一个重复性工作, 需要手工把产品运营们在excel里写的活动规则, 插入数据库表中.为了减少出错, 提高效率. 再加上最近刚刚学R语言, 就用R练练手, 自动生成mysql的sql语句. 一次 ...

  10. STM32F0xx_SPI读写(Flash)配置详细过程

    Ⅰ.概述 关于SPI(Serial Peripheral Interface)串行外设接口可以说是单片机或者嵌入式软件开发人员必须掌握的一项通信方式,就是你在面试相关工作的时候都可能会问及这个问题.在 ...