JS实现响应鼠标点击动画渐变弹出层效果代码

2023-12-08前端开发
93

这里为您详细讲解JS实现响应鼠标点击动画渐变弹出层效果的攻略。

实现思路

实现该效果的基本思路是通过 JavaScript 来控制 CSS 样式的变化,从而达到动画渐变弹出层的效果。

具体实现步骤如下:
1. 创建一个静态 HTML 页面,包含需要点击的按钮和弹出层。
2. 利用 CSS 设置弹出层的初始样式和动画样式。
3. 使用 JavaScript 监听按钮的点击事件,点击时动态修改弹出层样式,展示弹出层。

代码实现

下面为大家提供两份示例代码,其中一个基础版,另一个则是加强版。

基础版代码

HTML

<div class="modal-btn">点击弹出层</div>

<div class="modal-wrapper" id="modalWrapper">
  <div class="modal-inner">
      <p>这是一个弹出层。</p>
      <button class="modal-close">关闭</button>
  </div>
</div>

CSS

.modal-wrapper {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background-color: rgba(0,0,0,0.5);
  z-index: 9999;
}

.modal-inner {
  height: 200px;
  width: 400px;
  background-color: #fff;
  margin: auto;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  padding: 20px;
  border-radius: 5px;
  box-shadow: 0 0 20px rgba(0,0,0,0.3);
  opacity: 0;
  transition: all 0.6s ease-out;
}

.modal-inner.show {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

.modal-close {
  margin-top: 20px;
}

.modal-btn {
  margin: 50px;
  padding: 20px 40px;
  background-color: #fff;
  color: #222;
  cursor: pointer;
  border-radius: 5px;
  box-shadow: 0 0 20px rgba(0,0,0,0.1);
}

JavaScript

let modalWrapper = document.querySelector('#modalWrapper');
let modalBtn = document.querySelector('.modal-btn');
let modalClose = document.querySelector('.modal-close');

modalBtn.addEventListener('click', function() {
  modalWrapper.style.display = 'block';
  setTimeout(function() {
    modalWrapper.querySelector('.modal-inner').classList.add('show');
  }, 10);
});

modalClose.addEventListener('click', function() {
  modalWrapper.querySelector('.modal-inner').classList.remove('show');
  setTimeout(function() {
    modalWrapper.style.display = 'none';
  }, 300);
});

代码实现原理:通过 onclick 事件执行函数来改变弹出层的样式,实现动画渐变。

加强版

HTML

<div class="modal-wrapper" id="modalWrapper">
  <div class="modal-inner">
    <button class="modal-close">x</button>
    <p>这是一个弹出层。</p>
  </div>
</div>

<button class="btn-primary">点击弹出层</button>

CSS

.modal-wrapper {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.8);
  visibility: hidden;
  opacity: 0;
  z-index: 9999;
  transition: opacity 0.5s ease;
}

.modal-wrapper:before {
  content: "";
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  margin-right: -0.25em;
}

.modal-inner {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 500px;
  max-width: 100%;
  padding: 50px;
  text-align: center;
  background: #fff;
  border-radius: 4px;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
  opacity: 0;
  transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
  transform: translateY(50px);
}

.modal-wrapper:target {
  visibility: visible;
  opacity: 1;
}

.modal-wrapper:target .modal-inner {
  opacity: 1;
  transform: translateY(0px);
}

.modal-wrapper:target .modal-close {
  display: block;
}

.modal-close {
  display: none;
  position: absolute;
  top: 1rem;
  right: 1rem;
  font-size: 2rem;
  font-weight: bold;
  text-decoration: none;
  color: #222;
}

.btn-primary {
  display: block;
  margin: 50px auto;
  padding: 10px 30px;
  border-radius: 4px;
  background-color: #007bff;
  border: solid 1px #007bff;
  color: #fff;
  font-size: 18px;
  font-weight: bold;
  transition: background-color 0.3s ease-out;
}

.btn-primary:hover {
  background-color: #0062cc;
}

JavaScript

此处没有 JavaScript。

代码实现原理:通过 CSS 实现了目标选择器用于控制动画效果。

总结

JS实现响应鼠标点击动画渐变弹出层效果的代码基本思路就是通过 JavaScript 控制 CSS 样式的变化,同时代码编写时,需要设置弹出层的初始和动画样式,并使用 onclick 事件处理函数。当然,想要更加完美的实现效果,还可以使用更高级的CSS技巧,通过CSS目标选择器来实现,效果将更加酷炫。

The End

相关推荐

layui实现图片上传成功后回显点击放大图片功能
layui实现图片上传成功后回显点击放大图片功能,html代码部分: !-- html代码--div class="layui-form-item" label class="layui-form-label"上传图片/label div class="layui-input-block" button type="button" class="layui-btn" id="license-auth-letter-...
2025-09-06 前端开发
202

Layui实现数据表格中鼠标悬停图片放大离开时恢复原图
Layui实现数据表格中鼠标悬停图片放大离开时恢复原图的效果,最终效果如下图所示: 实现代码如下,在done函数中调用hoverOpenImg方法 var tableIns = window.demoTable = table .render({ elem : '#idTest', id : 'idTest', url : '/postData', //width : 150...
2025-09-04 前端开发
112

layui点击文本输入框调起弹出选择框并选择内容的两种方法参考
我们在用到layui时候,需要点击文本输入框调起弹出选择框并选择内容,这个要怎么操作呢?以下两种方法可以参考: 1、点击名称,弹出信息弹框,选择表格中的某一行,实现效果如下: html页面代码 !--计量器具弹出层-- div id="equipment" lay-filter="equipmen...
2025-09-02 前端开发
167

网站部署https后百度地图不显示问题
https的网站如果引用百度地图,会出现加载不了的问题,这是因为涉及到跨域问题,网站是https的,但是引用百度地图的是http的,这个要怎么操作呢? 比如我引用的地址:http://api.map.baidu.com/api?v=2.0ak=AK显示 后来看了一下,少了一个s=1字段,加一下s=1...
2025-07-28 前端开发
139

微信小程序实现点击复制功能和手机拨打电话功能
做小程序项目的时候,客户提了一个功能需求优化,就是长按文字需要复制全部内容,因为有的手机支持全选复制,有的手机不支持全选复制。 通过设置系统剪贴板的内容和获取系统剪贴板的内容实现复制功能 html相关代码: van-field value="{{form.contactPhone}}"...
2025-07-02 前端开发
78

js拖拽排序插件Sortable.js如何使用
由于项目功能需要,要实现对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的,于是乎就开始学习使用Sortable.js 特点 轻量级但功能强大 移动列表项时有动画 支持触屏设备和大多数浏览器(IE9及以下除外) 支持...
2025-06-12 前端开发
161