先来看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. oracle 创建修改 job

    ---停止job 25是建立的job begin dbms_job.broken(,true); commit; end; --启动job begin dbms_job.run(); commit; ...

  2. Android IOS WebRTC 音视频开发总结(五一)-- 降噪基本原理

    文章主要介绍噪声消除,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注微信公众号blacker,更多详见www.rtc.help ---------------------- ...

  3. MVC_学习笔记_2_Authorize

    MVC5_学习笔记_2_Authorize/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) *//* Author: Nico ...

  4. 下载uboot的调试版本到开发板的sdram中运行

    开发环境:开发板:FriendlyARM Tiny6410 主机:CentOS release 6.4 (Final) 开发板与主机通过串口线连接 调试用的uboot源码为开发板光盘提供的u-boot ...

  5. Mysql的ssl主从复制+半同步主从复制

    Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...

  6. css3动画属性

    Transitions  transitions:property 用哪个属性进行设置             :duration 执行时间             :timing-function  ...

  7. 标签栏控制器(UITabBarController)

    一.标签栏控制器基础 1.绪论 a.一个标签栏是一个独立的界面对象,它经常与一个视图控制器(UITabBarController是UIViewController的子类)一起使用. b.一个标签栏项目 ...

  8. ASP.NET MVC5学习笔记之Controller同步执行架构分析

    在开始之前,声明一下,由于ASP.NET MVC5正式发布了,后面的分析将基于ASP.NET MVC5最新的源代码.在前面的内容我们分析了怎样根据路由信息来确定Controller的类型,并最终生成C ...

  9. STM32F0xx_EXIT中断配置详细过程

    Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...

  10. NLP自然语言处理学习笔记三(集成开发环境)

    前言: 我们在做自然语言学习的过程中使用Python进行编程.是用解析器的方式确实有些麻烦.在这里给大家推荐一款集成开发环境IDE可以很方便的对Python进行项目管理,代码自动提示,运行调试等. 简 ...