JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例

yizhihongxing

下面是 "JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例" 的攻略,一步一步来讲解。

1. 准备工作

首先,在 HTML 文件中添加一个按钮和一个 div 容器,我们将在弹出层中显示该容器:

<button id="show-popup">显示弹出层</button>
<div id="popup-container">
  <h2>标题</h2>
  <p>弹出层内容</p>
  <button id="close-popup">关闭</button>
</div>

2. 导入 CSS 文件

接下来,我们要为弹出层编写 CSS 样式。将以下代码保存为一个单独的 CSS 文件:

#popup-container {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  border-radius: 10px;
  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
  padding: 20px;
  display: none;
}

#popup-container h2 {
  font-size: 24px;
  margin-top: 0;
}

#popup-container p {
  font-size: 16px;
  line-height: 1.5;
  margin-bottom: 20px;
}

#close-popup {
  float: right;
}

3. JS 实现弹出层

接下来,我们要实现 JS 代码来显示和隐藏弹出层,以及让弹出层可拖拽。

var popup = document.getElementById("popup-container");
var showPopupBtn = document.getElementById("show-popup");
var closePopupBtn = document.getElementById("close-popup");

// 点击按钮显示弹出层
showPopupBtn.addEventListener("click", function () {
  popup.style.display = "block";
});

// 点击关闭按钮隐藏弹出层
closePopupBtn.addEventListener("click", function () {
  popup.style.display = "none";
});

// 让弹出层可拖拽
var isDragging = false;
var lastX = 0;
var lastY = 0;

popup.addEventListener("mousedown", function (e) {
  isDragging = true;
  lastX = e.clientX;
  lastY = e.clientY;
});

popup.addEventListener("mouseup", function (e) {
  isDragging = false;
});

popup.addEventListener("mousemove", function (e) {
  if (isDragging) {
    var deltaX = e.clientX - lastX;
    var deltaY = e.clientY - lastY;
    var left = parseInt(popup.style.left) || 0;
    var top = parseInt(popup.style.top) || 0;
    popup.style.left = left + deltaX + "px";
    popup.style.top = top + deltaY + "px";
    lastX = e.clientX;
    lastY = e.clientY;
  }
});

4. 示例说明

示例 1:同时弹出两个内容不同的弹出层

HTML 代码:

<button class="show-popup" data-target="#popup-1">显示弹出层1</button>
<div id="popup-1" class="popup">
  <h2>弹出层1</h2>
  <p>这是弹出层1的内容。</p>
  <button class="close-popup">关闭</button>
</div>

<button class="show-popup" data-target="#popup-2">显示弹出层2</button>
<div id="popup-2" class="popup">
  <h2>弹出层2</h2>
  <p>这是弹出层2的内容。</p>
  <button class="close-popup">关闭</button>
</div>

JS 代码:

var showPopupBtns = document.querySelectorAll(".show-popup");
var popupContainers = document.querySelectorAll(".popup");
var closePopupBtns = document.querySelectorAll(".close-popup");

// 显示弹出层
showPopupBtns.forEach(function (btn) {
  btn.addEventListener("click", function () {
    var target = this.getAttribute("data-target");
    var $popup = document.querySelector(target);
    $popup.style.display = "block";
  });
});

// 关闭弹出层
closePopupBtns.forEach(function (btn) {
  btn.addEventListener("click", function () {
    var $popup = btn.parentNode;
    $popup.style.display = "none";
  });
});

// 让弹出层可拖拽
popupContainers.forEach(function (popup) {
  var isDragging = false;
  var lastX = 0;
  var lastY = 0;

  popup.addEventListener("mousedown", function (e) {
    isDragging = true;
    lastX = e.clientX;
    lastY = e.clientY;
  });

  popup.addEventListener("mouseup", function (e) {
    isDragging = false;
  });

  popup.addEventListener("mousemove", function (e) {
    if (isDragging) {
      var deltaX = e.clientX - lastX;
      var deltaY = e.clientY - lastY;
      var left = parseInt(popup.style.left) || 0;
      var top = parseInt(popup.style.top) || 0;
      popup.style.left = left + deltaX + "px";
      popup.style.top = top + deltaY + "px";
      lastX = e.clientX;
      lastY = e.clientY;
    }
  });
});

示例 2:添加弹出层背景遮罩

HTML 代码:

<button id="show-popup">显示弹出层</button>
<div id="popup-container">
  <h2>标题</h2>
  <p>弹出层内容</p>
  <button id="close-popup">关闭</button>
</div>
<div class="popup-overlay"></div>

CSS 代码:

.popup-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  display: none;
}

.popup-overlay.show {
  display: block;
}

JS 代码:

var popup = document.getElementById("popup-container");
var showPopupBtn = document.getElementById("show-popup");
var closePopupBtn = document.getElementById("close-popup");
var overlay = document.querySelector(".popup-overlay");

// 点击按钮显示弹出层和遮罩
showPopupBtn.addEventListener("click", function () {
  popup.style.display = "block";
  overlay.classList.add("show");
});

// 点击关闭按钮隐藏弹出层和遮罩
closePopupBtn.addEventListener("click", function () {
  popup.style.display = "none";
  overlay.classList.remove("show");
});

// 点击遮罩隐藏弹出层和遮罩
overlay.addEventListener("click", function () {
  popup.style.display = "none";
  overlay.classList.remove("show");
});

// 让弹出层可拖拽
var isDragging = false;
var lastX = 0;
var lastY = 0;

popup.addEventListener("mousedown", function (e) {
  isDragging = true;
  lastX = e.clientX;
  lastY = e.clientY;
});

popup.addEventListener("mouseup", function (e) {
  isDragging = false;
});

popup.addEventListener("mousemove", function (e) {
  if (isDragging) {
    var deltaX = e.clientX - lastX;
    var deltaY = e.clientY - lastY;
    var left = parseInt(popup.style.left) || 0;
    var top = parseInt(popup.style.top) || 0;
    popup.style.left = left + deltaX + "px";
    popup.style.top = top + deltaY + "px";
    lastX = e.clientX;
    lastY = e.clientY;
  }
});

通过上述两种示例以上,即可实现可拖拽的漂亮圆角特效弹出层,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例 - Python技术站

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

相关文章

  • css 设置全屏背景图片

    要在CSS中设置全屏背景图片,可以遵循以下4个步骤: 1.将背景图片设置为CSS属性background-image的值。 2.将背景大小设置为cover,这样它将覆盖整个屏幕。 3.将背景位置设置为中心以保证图片在屏幕中间,即设置background-position属性值为center。 4.确保HTML和Body元素的高度被设置为100%。 下面是具体…

    css 2023年6月9日
    00
  • CSS根据用户需求设置网页字体大小

    要根据用户需求设置网页字体大小,可以使用CSS中的相对单位和JavaScript来实现。我们可以使用相对大小如em、rem或vw/vh等单位来设置字体大小。此外,如果用户需要调整字体大小,我们还可以用JavaScript来检测用户的浏览器设置并相应调整字体大小。 下面是一些可以实现此功能的步骤: 使用em、rem和vw/vh等相对单位设置字体大小 使用相对单…

    css 2023年6月9日
    00
  • 优化浏览器渲染 指定图片尺寸

    优化浏览器渲染,指定图片尺寸是一种优化网页性能的关键方法。通过指定图片尺寸,可以让浏览器在下载图片之前就已经知道它应该被如何呈现,从而可以更快地进行页面加载和渲染。下面是指定图片尺寸的完整攻略: 1. 为什么需要指定图片尺寸 在网站中,图片通常是占用大量带宽和加载时间的元素之一。如果没有指定图片的尺寸,那么浏览器在进行页面渲染时需要请求整张图片,然后才能确定…

    css 2023年6月10日
    00
  • jquery动画效果学习笔记(8种效果)

    下面我将详细讲解“jquery动画效果学习笔记(8种效果)”的完整攻略。该攻略主要介绍了使用 jQuery 实现常见的动画效果,它包含了以下 8 种效果: 淡入淡出效果 滑动效果 渐变效果 高度宽度变化效果 动画排队效果 动画回调函数 动画执行速度控制 动态图像缩放效果 淡入淡出效果 淡入淡出效果是指元素渐渐显现和消失的效果,可以使用 jQuery 的 fa…

    css 2023年6月10日
    00
  • html引入css四种引入方式示例分享

    下面是详细讲解“html引入css四种引入方式示例分享”的完整攻略: HTML引入CSS的四种方式 在网页开发中,我们经常需要使用到CSS文件来对HTML元素进行样式的设置。而HTML引入CSS文件有四种方式,分别是: 在HTML中使用<style>标签引入CSS代码 在HTML中使用style属性添加CSS样式 在HTML头部使用<lin…

    css 2023年6月9日
    00
  • css中clearfix清除浮动的用法及其原理示例介绍

    下面是关于“css中clearfix清除浮动的用法及其原理示例介绍”的攻略: 什么是清除浮动? 在html/css开发中,浮动元素的使用非常普遍,但是浮动元素对于父元素的高度计算会产生影响,导致一些不可预见的问题,此时需要通过清除浮动的方式来解决这些问题。 什么是clearfix? clearfix是一种常见的清除浮动的方法,它通过添加一个空的伪元素在flo…

    css 2023年6月10日
    00
  • 深入挖掘Windows脚本技术第2/2页

    “深入挖掘Windows脚本技术”是一本深入讲解Windows脚本技术的书籍。其第2/2页主要讲述了如何利用Windows脚本技术进行网络编程、系统管理和编写自定义错误处理程序等方面的内容。 网络编程 在网络编程方面,通过使用Windows脚本技术,可以轻松地创建TCP/IP和UDP协议的网络应用程序。其具体示例如下: ‘ TCP连接客户端 Set objC…

    css 2023年6月10日
    00
  • jQuery实现参数自定义的文字跑马灯效果

    以下是关于“jQuery实现参数自定义的文字跑马灯效果”的攻略: 1. 简介 跑马灯效果是一种常见的UI交互效果,它可以使用户更加关注某一特定内容。在Web页面中,可以通过jQuery库实现文字跑马灯效果。 2. 实现步骤 2.1. HTML结构 首先,在HTML中需要定义一个容器,用来包裹跑马灯的文字内容,示例如下: <div class=&quot…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部