JS实现简单易用的手机端浮动窗口显示效果

要实现手机端浮动弹窗的显示效果,可以借助JS的一些特性来完成。下面是具体的攻略:

1. HTML结构

先搭建好基本的HTML结构,包括页面的顶部和底部,以及一个主要内容区域。其中,顶部和底部可以用固定定位来实现,主要内容区域则需要设定一个合适的高度,使得页面高度能够适配不同的设备屏幕尺寸。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>浮动窗口效果演示</title>
    <style>
      /* 顶部固定定位 */
      .header {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 50px;
        background-color: #333;
        color: #fff;
        text-align: center;
        line-height: 50px;
        z-index: 2;
      }
      /* 底部固定定位 */
      .footer {
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 50px;
        background-color: #333;
        color: #fff;
        text-align: center;
        line-height: 50px;
        z-index: 2;
      }
      /* 主要内容区域 */
      .content {
        height: 1000px;
        padding-top: 100px;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <div class="header">浮动窗口效果演示</div>
    <div class="content">
      <h2>这里是主要内容区域</h2>
    </div>
    <div class="footer">版权所有 © 2021 浮动窗口效果演示</div>
  </body>
</html>

2. JS实现浮动窗口

在页面底部添加一个固定位置的按钮,点击按钮后可以显示一个浮动窗口。具体实现方法如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>浮动窗口效果演示</title>
    <style>
      /* 顶部固定定位 */
      .header {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 50px;
        background-color: #333;
        color: #fff;
        text-align: center;
        line-height: 50px;
        z-index: 2;
      }
      /* 底部固定定位 */
      .footer {
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 50px;
        background-color: #333;
        color: #fff;
        text-align: center;
        line-height: 50px;
        z-index: 2;
      }
      /* 主要内容区域 */
      .content {
        height: 1000px;
        padding-top: 100px;
        text-align: center;
      }
      /* 浮动窗口样式 */
      .popup {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 80%;
        max-width: 400px;
        padding: 20px;
        background-color: #fff;
        border-radius: 5px;
        box-shadow: 0 0 10px rgba(0,0,0,.3);
        z-index: 3;
        display: none;
      }
      /* 遮罩层样式 */
      .mask {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0,0,0,.5);
        z-index: 2;
        display: none;
      }
    </style>
  </head>
  <body>
    <div class="header">浮动窗口效果演示</div>
    <div class="content">
      <h2>这里是主要内容区域</h2>
    </div>
    <div class="footer">
      <button id="showPopup">点击显示浮动窗口</button>
    </div>
    <div class="mask"></div>
    <div class="popup">
      <h2>这里是浮动窗口标题</h2>
      <p>这里是浮动窗口内容</p>
      <button id="hidePopup">关闭窗口</button>
    </div>
    <script>
      // 获取元素
      var showPopupBtn = document.querySelector('#showPopup');
      var hidePopupBtn = document.querySelector('#hidePopup');
      var mask = document.querySelector('.mask');
      var popup = document.querySelector('.popup');
      // 点击按钮显示浮动窗口
      showPopupBtn.onclick = function() {
        mask.style.display = 'block';
        popup.style.display = 'block';
      };
      // 点击关闭按钮关闭浮动窗口
      hidePopupBtn.onclick = function() {
        mask.style.display = 'none';
        popup.style.display = 'none';
      };
    </script>
  </body>
</html>

代码中通过JS获取到四个元素,分别是显示浮动窗口的按钮 #showPopup、关闭浮动窗口的按钮 #hidePopup、遮罩层 .mask、浮动窗口 .popup。然后在点击显示按钮后,设置遮罩层和浮动窗口的 display 属性为 block,使它们显示出来。点击关闭按钮后,再把它们的 display 属性设置为 none,使它们消失不见。

3. 通过监听屏幕滚动事件实现固定显示

如果想要让浮动窗口始终固定在页面的某一个位置上,可以通过监听屏幕滚动事件来实现,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>浮动窗口效果演示</title>
    <style>
      /* 顶部固定定位 */
      .header {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 50px;
        background-color: #333;
        color: #fff;
        text-align: center;
        line-height: 50px;
        z-index: 2;
      }
      /* 底部固定定位 */
      .footer {
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 50px;
        background-color: #333;
        color: #fff;
        text-align: center;
        line-height: 50px;
        z-index: 2;
      }
      /* 主要内容区域 */
      .content {
        height: 1000px;
        padding-top: 100px;
        text-align: center;
      }
      /* 浮动窗口样式 */
      .popup {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 80%;
        max-width: 400px;
        padding: 20px;
        background-color: #fff;
        border-radius: 5px;
        box-shadow: 0 0 10px rgba(0,0,0,.3);
        z-index: 3;
        display: none;
      }
      /* 遮罩层样式 */
      .mask {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0,0,0,.5);
        z-index: 2;
        display: none;
      }
      /* 固定样式 */
      .fixed {
        position: fixed;
        top: 50%;
        right: 20px;
        transform: translateY(-50%);
        z-index: 1;
        display: none;
      }
    </style>
  </head>
  <body>
    <div class="header">浮动窗口效果演示</div>
    <div class="content">
      <h2>这里是主要内容区域</h2>
    </div>
    <div class="footer">
      <button id="showPopup">点击显示浮动窗口</button>
    </div>
    <div class="mask"></div>
    <div class="popup">
      <h2>这里是浮动窗口标题</h2>
      <p>这里是浮动窗口内容</p>
      <button id="hidePopup">关闭窗口</button>
    </div>
    <div class="fixed">
      <button id="backToTop">返回顶部</button>
    </div>
    <script>
      // 获取元素
      var showPopupBtn = document.querySelector('#showPopup');
      var hidePopupBtn = document.querySelector('#hidePopup');
      var mask = document.querySelector('.mask');
      var popup = document.querySelector('.popup');
      var fixedBtn = document.querySelector('.fixed');
      var backToTopBtn = document.querySelector('#backToTop');
      // 点击按钮显示浮动窗口
      showPopupBtn.onclick = function() {
        mask.style.display = 'block';
        popup.style.display = 'block';
      };
      // 点击关闭按钮关闭浮动窗口
      hidePopupBtn.onclick = function() {
        mask.style.display = 'none';
        popup.style.display = 'none';
      };
      // 监听屏幕滚动事件
      window.onscroll = function() {
        // 如果已经向下滚动一定距离,显示返回顶部按钮
        if (document.documentElement.scrollTop > 100) {
          fixedBtn.style.display = 'block';
        } else {
          fixedBtn.style.display = 'none';
        }
      };
      // 点击返回顶部按钮滚动页面到顶部
      backToTopBtn.onclick = function() {
        document.documentElement.scrollTop = 0;
      }
    </script>
  </body>
</html>

代码中新增了一个返回顶部的按钮,按钮也是通过监听滚动事件来实现。当用户向下滚动 100 像素时,返回顶部的按钮出现在右下角。点击该按钮后,页面会平滑地滚动到顶部。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现简单易用的手机端浮动窗口显示效果 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Thinkphp5框架中引入Markdown编辑器操作示例

    让我为您详细讲解ThinkPHP5框架中引入Markdown编辑器的操作示例。 1. Markdown编辑器功能介绍 Markdown 编辑器是一种轻量级的文本编辑器,它能够将纯文本编写的内容转换为 HTML 格式的内容。ThinkPHP5框架中,我们可以通过引入第三方 Markdown 编辑器实现在网站上进行 Markdown 编辑的功能。 2. 引入Ma…

    jquery 2023年5月27日
    00
  • jQWidgets的jqxCheckBox锁定属性

    jQWidgets 的 jqxCheckBox 组件提供了 locked 属性,用于锁定或解锁组件。当 locked 属性设置为 true 时,组件将被锁定,用户无法更改其状态。当 locked 属性设置为 false 时,组件将解锁,用户可以更改其状态。本文将详细介绍 locked 属性的使用方法,包括属性概述、示例说明以及使用注意事项。 locked 属…

    jquery 2023年5月11日
    00
  • jQuery实现自动与手动切换的滚动新闻特效代码分享

    下面我来详细讲解“jQuery实现自动与手动切换的滚动新闻特效代码分享”的完整攻略。这个特效可以让你的网站拥有带有无限滚动、自动播放、手动切换等功能的新闻动态栏。步骤如下: 制作HTML结构 首先,我们需要在HTML页面中添加一个容器的div,然后在其中添加新闻动态内容和按钮区域: <div class="news-container&quo…

    jquery 2023年5月28日
    00
  • fullCalendar中文API官方文档

    感谢你对fullCalendar中文API官方文档的关注。在这里,我将为你提供一份完整的攻略,以帮助你更好地了解fullCalendar的使用。 官方文档的概览 fullCalendar中文API官方文档(https://www.w3cschool.cn/fullcalendar_js_doc/)提供了一个全面的文档供开发者参考。 在文档中,你将会找到完整的…

    jquery 2023年5月27日
    00
  • 如何解决Ajax请求结果的缓存问题说明

    如何解决Ajax请求结果的缓存问题说明 什么是Ajax请求结果的缓存问题? 当使用Ajax向服务器请求数据时,服务器会向客户端返回数据,并在客户端上缓存该数据。然后,如果再次请求相同的数据,客户端将从缓存中获取数据,而不是重新向服务器请求数据。这看起来很好,因为可以提高应用程序的性能,但有时候会导致一些问题。例如,如果数据实时更新,但客户端总是获取缓存中的旧…

    jquery 2023年5月27日
    00
  • JAVA通过XPath解析XML性能比较详解

    为了更好地讲解JAVA通过XPath解析XML性能比较,本篇攻略将分为三部分,分别介绍XPath解析XML的概念、JAVA如何通过XPath解析XML以及性能比较实验的过程。 一、XPath解析XML概述 XPath是用于在XML文档中查找信息的语言,它可以定位到XML文档中的某个元素或者属性,从而将其提取出来。常见的XPath表达式包括以下几种: /:选择…

    jquery 2023年5月27日
    00
  • 如何用jQuery选择一个元素的所有同级元素

    要使用jQuery选择一个元素的所有同级元素,可以使用siblings()方法。下面是一个完整攻略,包括两个示例说明。 步骤1:创建HTML和CSS 首先,我们需要一个HTML和CSS以便在页面中显示一个元素。下面是示例HTML和CSS: <!DOCTYPE html> <html> <head> <title&gt…

    jquery 2023年5月9日
    00
  • Ajax修改数据即时显示篇实现代码

    以下是“Ajax修改数据即时显示篇实现代码”的完整攻略。 简介 Ajax是一种用于创建快速动态网页的技术,实现了无需重载整个页面就能更新部分页面的内容。这种技术通常用于异步更新数据,这就是该篇文章要介绍的实现代码。 步骤 编写HTML代码,包含需要更新的数据和表单: <div id="data">原始数据</div&gt…

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