我们在工作中,经常会碰到弹出窗口类应用,有时候还需要一点遮盖层:
这类圆角弹出框其实用得还是很广泛的,用CSS3可以很容易的出现,但是考虑到浏览器兼容问题,这类还是需要用图片实现了
function popup(popupName) {
var _scrollHeight = $(document).scrollTop(); //获取当前窗口距离页面顶部高度
_windowHeight = $(window).height(); //获取当前窗口高度
_windowWidth = $(window).width(); //获取当前窗口宽度
_popupHeight = popupName.height(); //获取弹出层高度
_popupWeight = popupName.width(); //获取弹出层宽度
// _posiTop = (_windowHeight - _popupHeight) / 2 + _scrollHeight - 50;
_posiTop = _scrollHeight + 120;
_posiLeft = (_windowWidth - _popupWeight) / 2;
popupName.css({ "left": _posiLeft + "px", "top": _posiTop + "px", "display": "block" }); //设置position
function dragFunc(dragDiv, dragBody) {
if (dragDiv[0] && dragBody[0]) {
var divOffset = dragBody.offset();
dragDiv.mousedown(function (e) {
dragDiv.css("cursor", "move");
l = parseInt(dragBody.css("left"));
t = parseInt(dragBody.css("top"));
this.setCapture && this.setCapture();
dragDiv.mousemove(function (e) {
var top = $(document).scrollTop() ? $(document).scrollTop() - 15 : 0;
var left = $(document).scrollLeft() ? $(document).scrollLeft() - 15 : 0;
x2 = e.clientX - x1 + left;
y2 = e.clientY - y1 + top;
if (Math.abs(l - x2) > 10 || Math.abs(t - y2) > 10) {
dragBody.css("left", x2 + "px");
dragBody.css("top", y2 + "px");
dragDiv.mouseup(function (event) {
// dragDiv.css("position", "relative");
this.releaseCapture && this.releaseCapture();
var MyDialog = function (cfg) {
id: (new Date()).getTime().toString(),
boxHtm: '<div class="dialog" > ' +
' <div style="width:10px;"></div>' +
' <div class="title"> ' +
' <span class="title_text">请输入标题</span> <a class="cls" href="javascript:;"></a> ' +
' <div class="content"> ' +
' <tr class="bottom"> ' +
' <div style="width:10px;"></div>' +
$.each(cfg, function (key, value) {
scope.config[key] = value;
MyDialog.prototype.show = function () {
if (this.config.id && $('#' + this.config.id + '_cover')[0]) {
cover = $('#' + this.config.id + '_cover');
cover = $('<div style=" display:block; " id="' + this.config.id + '_cover" class="coverDiv" ></div>');
if (!$('#' + this.config.id)[0]) {
box = $(this.config.boxHtm);
box.attr('id', this.config.id);
box.find('.title_text').html(this.config.title);
if (this.config.bodyId) {
var body = $('#' + this.config.bodyId);
var tmp = $('<div></div>').append(body);
var initBody = tmp.html();
scope.tmpBody = $(initBody);
var con = box.find('.main .content');
if (this.config.el && this.config.el[0]) {
var con = box.find('.main .content');
con.html(this.config.el);
box.find('.title .cls').click(function (e) {
dragFunc($('#' + this.config.id + ' .main .title'), $('#' + this.config.id));
MyDialog.prototype.close = function () {
var tmpBody = this.tmpBody;
if (tmpBody && tmpBody[0]) {
$('body').append(tmpBody);
具体可能还需要一定函数回调,各位可以自己封装一番。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script src="http://www.cnblogs.com/scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
function dragFunc(dragDiv, dragBody, dropBody) {
if (dragDiv[0] && dragBody[0]) {
dragDiv.mousedown(function (e) {
init_position = dragBody.css("position");
init_cursor = dragBody.css("init_cursor");
dragBody.css("position", "absolute");
dragDiv.css("cursor", "move");
tmp_body = $('<div class="tmp_div"></div>');
tmp_body.css('width', dragBody.css('width'));
tmp_body.css('height', dragBody.css('height'));
tmp_body.insertAfter(dragBody);
$(document).bind("selectstart", function () { return false; });
l = parseInt(dragBody.css("left")) ? parseInt(dragBody.css("left")) : 10;
t = parseInt(dragBody.css("top")) ? parseInt(dragBody.css("top")) : 10;
var offset = dragBody.offset();
l = parseInt(offset.left);
t = parseInt(offset.top);
this.setCapture && this.setCapture();
dragDiv.mousemove(function (e) {
var top = $(document).scrollTop() ? $(document).scrollTop() - 15 : 0;
var left = $(document).scrollLeft() ? $(document).scrollLeft() - 15 : 0;
x2 = e.clientX - x1 + left;
y2 = e.clientY - y1 + top;
if (Math.abs(l - x2) > 10 || Math.abs(t - y2) > 10) {
dragBody.css("left", x2 + "px");
dragBody.css("top", y2 + "px");
var w = parseInt(dragBody.css('width'));
var h = parseInt(dragBody.css('height'));
$.each(dropBody, function () {
el.css('background-color', 'Gray');
var offset = el.offset();
var _l = offset.left || 0;
var _t = offset.top || 0;
var _w = parseInt(el.css('width'));
var _h = parseInt(el.css('height'));
if (x2 > _l && x2 + w < _l + _w && y2 > _t && y2 + h < _t + _h) {
el.css('background-color', '#DBEAF9');
dragDiv.mouseup(function (event) {
$(document).unbind("selectstart");
dragBody.css("position", init_position);
dragBody.css("cursor", init_cursor);
//dragBody.css("left", '0');
//dragBody.css("top", '0');
dragBody.insertAfter(tmp_body);
var offset = tmp_body.offset();
l = parseInt(offset.left);
t = parseInt(offset.top);
// dragDiv.css("position", "relative");
this.releaseCapture && this.releaseCapture();
$(document).ready(function () {
我们所谓的AJAX异步文件上传事实上用js技术好像暂时还不能实现,就我所谓的异步上传事实上还是表单提交,而将form的target指向一
隐藏的iframe,然后成功后回调即可,真是十分坑爹的做法。。。。。
若是要更好的体验,便需要借助flash或者XX框架了,但是我也没有研究过.
<form id="formImg" name="formImg" enctype="multipart/form-data" method="post" action="">
<input type="hidden" name="MAX_FILE_SIZE" value="800000" id="max_size"/>
<input type="hidden" name="callback" value="parent.add_img_input" id="callback"/>
<a class="upbtn"><input type="file" name="userfile" id="userfile" title="支持JPG、GIF、PNG格式,文件小于1M"
name="pic" value="" οnchange="javascript:up_img(17);">上传</a>
document.charset='utf-8';
var form = $('#formImg');
var frame = $('#frame_img');
frame = $('<iframe id="frame_img" name="frame_img" style="display:none;" ></iframe>');
form.attr('target', 'frame_img');
form.attr('action', url);
但是回调会涉及一点跨域的问题,需要在同一大域名下才行。
本文转自叶小钗博客园博客,原文链接:http://www.cnblogs.com/yexiaochai/archive/2013/01/05/2846082.html如需转载请自行联系原作者