简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器

yizhihongxing

实现一个简单漂亮的 js 弹窗并让其可自由拖拽需要以下步骤:

  1. 确定弹窗的外观和属性,如弹窗大小、标题、内容等。可以使用 HTML 和 CSS 来实现。

示例代码:

<div id="popup">
  <h3 class="title">弹窗标题</h3>
  <p class="content">弹窗内容</p>
</div>

<style>
/* 弹窗样式 */
#popup {
  width: 300px;
  height: 200px;
  background-color: #fff;
  border: 1px solid #ddd;
  box-shadow: 0 2px 10px #ccc;
  position: fixed; /* 固定定位,便于拖动 */
}

/* 标题样式 */
.title {
  font-size: 16px;
  font-weight: bold;
  padding: 10px;
  margin: 0;
}

/* 内容样式 */
.content {
  margin: 10px;
}
</style>
  1. 实现拖拽功能。可以使用原生 JS 或第三方库(如 jQuery)来实现。

示例代码(使用原生 JS):

// 获取弹窗元素
var popup = document.querySelector('#popup');

// 鼠标按下时记录弹窗的初始位置和鼠标的初始位置
popup.onmousedown = function(e) {
  var startX = e.clientX;
  var startY = e.clientY;
  var popupX = popup.offsetLeft;
  var popupY = popup.offsetTop;

  // 鼠标移动时计算弹窗的新位置
  document.onmousemove = function(e) {
    var newX = e.clientX - startX + popupX;
    var newY = e.clientY - startY + popupY;

    // 避免弹窗移出可视区域
    if (newX < 0) {
      newX = 0;
    }
    if (newY < 0) {
      newY = 0;
    }
    if (newX > document.documentElement.clientWidth - popup.offsetWidth) {
      newX = document.documentElement.clientWidth - popup.offsetWidth;
    }
    if (newY > document.documentElement.clientHeight - popup.offsetHeight) {
      newY = document.documentElement.clientHeight - popup.offsetHeight;
    }

    // 移动弹窗
    popup.style.left = newX + 'px';
    popup.style.top = newY + 'px';
  }

  // 鼠标松开时停止计算
  document.onmouseup = function() {
    document.onmousemove = null;
    document.onmouseup = null;
  }
};
  1. 兼容不同浏览器。在实现拖拽功能时,要注意不同浏览器之间的差异。例如,在获取鼠标位置时,Firefox 使用 e.pageXe.pageY,而其他浏览器使用 e.clientXe.clientY

另外,还可以使用 Polyfill 来解决一些浏览器兼容性问题,如 IE8 不支持 querySelectorclassList 等。

至此,一个简单漂亮的 js 弹窗可自由拖拽的攻略就完成了。可以根据实际需求对弹窗的样式和拖拽功能进行调整和扩展。

示例代码(使用 jQuery):

// 获取弹窗元素
var $popup = $('#popup');

// 鼠标按下时记录弹窗的初始位置和鼠标的初始位置
$popup.on('mousedown', function(e) {
  var startX = e.clientX;
  var startY = e.clientY;
  var popupX = $popup.offset().left;
  var popupY = $popup.offset().top;

  // 鼠标移动时计算弹窗的新位置
  $(document).on('mousemove', function(e) {
    var newX = e.clientX - startX + popupX;
    var newY = e.clientY - startY + popupY;

    // 避免弹窗移出可视区域
    if (newX < 0) {
      newX = 0;
    }
    if (newY < 0) {
      newY = 0;
    }
    if (newX > $(document).width() - $popup.outerWidth()) {
      newX = $(document).width() - $popup.outerWidth();
    }
    if (newY > $(document).height() - $popup.outerHeight()) {
      newY = $(document).height() - $popup.outerHeight();
    }

    // 移动弹窗
    $popup.css({
      left: newX + 'px',
      top: newY + 'px'
    });
  });

  // 鼠标松开时停止计算
  $(document).on('mouseup', function() {
    $(document).off('mousemove');
    $(document).off('mouseup');
  });
});

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript中Math.SQRT2属性的使用详解

    JavaScript中Math.SQRT2属性的使用详解 一、Math.SQRT2属性是什么? Math.SQRT2属性是JavaScript语言中的一个预定义常量,它表示的是2的平方根。它的值约等于1.4142135623730951。这个属性会与Math对象绑定,因此可以使用Math.SQRT2来访问它。 二、Math.SQRT2属性的使用 1.使用Ma…

    JavaScript 2023年6月10日
    00
  • 使用AutoJs实现微信抢红包的代码

    AutoJs是一款安卓平台上的自动化脚本编写工具,它不仅支持自动化操作手机应用,还支持使用JavaScript进行脚本编写。本文将详细讲解如何使用AutoJs来实现微信抢红包的代码。 第一步:准备工作 下载AutoJs APP,并安装到手机上。 打开AutoJs,在主界面点击左下角的“+”号按钮,创建一个新项目,并将其命名为“微信抢红包”。 在新项目的界面中…

    JavaScript 2023年6月11日
    00
  • 详解JSON和JSONP劫持以及解决方法

    下面是详解JSON和JSONP劫持及解决方法的攻略。 什么是JSON和JSONP JSON JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,其格式简单明了,易于阅读和编写,同时也易于机器解析和生成。JSON是一种完全独立于编程语言的数据格式,它的性能优越,能够处理庞大的数据量。 JSON数据格式示例: { &q…

    JavaScript 2023年5月27日
    00
  • 用js删除tbody的代码

    下面是用 JavaScript 删除 tbody 的完整攻略: 步骤一:获取 tbody 元素 在删除 tbody 之前,需要先获取 tbody 元素。可以通过以下三种方式获取 tbody 元素: 1. getElementById 方法 使用 getElementById 方法获取指定 Id 的元素。 const tbody = document.getE…

    JavaScript 2023年6月11日
    00
  • JavaScript优化以及前段开发小技巧

    JavaScript 优化以及前端开发小技巧 1. JavaScript 优化 1.1 减少 HTTP 请求 当页面中存在大量的 HTTP 请求时,可能导致页面加载缓慢。因此需要考虑如何减少页面中的 HTTP 请求,以提高网页加载速度。以下几种方法可以用来减少 HTTP 请求: 使用 CSS Sprite:将多张图片整合到一张图中,减少HTTP请求次数。 合…

    JavaScript 2023年5月18日
    00
  • JavaScript高级程序设计 DOM学习笔记

    我将为您详细讲解“JavaScript高级程序设计 DOM学习笔记”的完整攻略。 学习JS DOM的必要性 JavaScript中,DOM(文档对象模型)是一种非常重要的知识点,它是在HTML和XML文档中操作和访问节点的API。掌握DOM可以让我们更加灵活地操作页面元素,更好地实现网页的交互效果。 学习JS DOM的入门 获取元素 在DOM中,我们首先要学…

    JavaScript 2023年5月27日
    00
  • 浅谈javascript语法和定时函数

    浅谈JavaScript语法和定时函数 JavaScript语法 JavaScript是一种基于对象的脚本语言,主要应用于Web前端和服务器端的开发。下面我们来简单介绍一下JavaScript的语法: 数据类型 JavaScript的数据类型包括:字符串、数字、布尔值、对象、数组、null和undefined。 示例代码: var str = ‘hello’…

    JavaScript 2023年5月27日
    00
  • JavaScript实现的MD5算法完整实例

    JavaScript实现MD5算法完整实例攻略 简介 MD5是一种广泛使用的密码加密算法,它可以将任意长度的消息转换为128位的消息摘要。在实际开发过程中,我们需要使用MD5算法来保证密码等敏感信息的安全性。本文将讲解如何使用JavaScript实现MD5算法。 步骤 引入MD5库 我们可以在网上找到许多JavaScript实现MD5算法的库,如SparkM…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部