LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

【Web开发】在页面上提供一个分享图标,当鼠标光标点击图标时自动弹出一个分享二维码,用手机微信、QQ等扫码就可以将这个帖子分享给好友

admin
2026年5月21日 16:41 本文热度 43

​需求:

我想在我论坛的页面上加一个功能,在页面上提供一个分享图标,当鼠标光标点击图标或者浮在图标上时,自动弹出一个分享二维码,我用手机微信、QQ等扫码时,就可以将这个帖子分享到微信或QQ好友,请提供一下相关JS和HTML代码。


论坛页面微信/QQ分享二维码功能实现

根据您的需求,我将为您提供一个完整的解决方案,包含HTML结构和JS代码,实现点击或悬停图标时弹出分享二维码的功能。

完整实现代码

HTML部分

html
<!-- 分享按钮容器 -->
<div class="share-container">
  <!-- 微信分享按钮 -->
  <div class="share-icon" id="wechatShareBtn">
    <img src="https://example.com/wechat-icon.png" alt="微信分享" width="32">
    <div class="qrcode-popup" id="wechatQrcode"></div>
  </div>
  
  <!-- QQ分享按钮 -->
  <div class="share-icon" id="qqShareBtn">
    <img src="https://example.com/qq-icon.png" alt="QQ分享" width="32">
    <div class="qrcode-popup" id="qqQrcode"></div>
  </div>
</div>

<!-- 分享弹窗遮罩 -->
<div id="shareModal" class="share-modal">
  <div class="modal-content">
    <span id="closeModal" class="close-modal">×</span>
    <h4>扫码分享</h4>
    <div id="modalQrcodeBox"></div>
    <p>扫码后分享到微信或QQ</p>
  </div>
</div>

CSS样式

css
/* 分享按钮基础样式 */
.share-container {
  display: flex;
  gap: 15px;
  margin: 20px 0;
}

.share-icon {
  position: relative;
  display: inline-block;
  cursor: pointer;
}

/* 悬停时显示的二维码弹窗 */
.qrcode-popup {
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.2s, visibility 0.2s;
  z-index: 100;
  background: #fff;
  border: 1px solid #ddd;
  padding: 8px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
  width: 160px;
  height: 160px;
  margin-bottom: 10px;
}

.share-icon:hover .qrcode-popup {
  visibility: visible;
  opacity: 1;
}

/* 弹窗遮罩样式 */
.share-modal {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.7);
  z-index: 9999;
  justify-content: center;
  align-items: center;
}

.modal-content {
  background: #fff;
  padding: 25px;
  border-radius: 14px;
  text-align: center;
  position: relative;
  width: 260px;
}

.close-modal {
  position: absolute;
  top: 10px;
  right: 15px;
  font-size: 20px;
  cursor: pointer;
  color: #666;
}

.close-modal:hover {
  color: #333;
}

JavaScript部分

javascript
// 引入二维码生成库
document.addEventListener('DOMContentLoaded', function() {
  // 动态加载二维码库
  const script = document.createElement('script');
  script.src = 'https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcode.min.js';
  document.head.appendChild(script);
  
  script.onload = function() {
    // 获取当前页面URL
    const currentUrl = encodeURIComponent(window.location.href);
    const shareTitle = encodeURIComponent(document.title);
    
    // 微信分享二维码
    const wechatBtn = document.getElementById('wechatShareBtn');
    const wechatQrcode = document.getElementById('wechatQrcode');
    new QRCode(wechatQrcode, {
      text: `https://example.com/wechat-share?url=${currentUrl}&title=${shareTitle}`,
      width: 160,
      height: 160
    });
    
    // QQ分享二维码
    const qqBtn = document.getElementById('qqShareBtn');
    const qqQrcode = document.getElementById('qqQrcode');
    new QRCode(qqQrcode, {
      text: `https://example.com/qq-share?url=${currentUrl}&title=${shareTitle}`,
      width: 160,
      height: 160
    });
    
    // 点击图标显示大弹窗
    wechatBtn.addEventListener('click', function() {
      showModal(wechatQrcode.querySelector('img').src);
    });
    
    qqBtn.addEventListener('click', function() {
      showModal(qqQrcode.querySelector('img').src);
    });
    
    // 关闭弹窗
    document.getElementById('closeModal').addEventListener('click', function() {
      document.getElementById('shareModal').style.display = 'none';
    });
    
    // 点击遮罩外区域关闭弹窗
    document.getElementById('shareModal').addEventListener('click', function(e) {
      if (e.target === this) {
        this.style.display = 'none';
      }
    });
  };
  
  function showModal(qrcodeSrc) {
    const modal = document.getElementById('shareModal');
    const qrcodeBox = document.getElementById('modalQrcodeBox');
    
    qrcodeBox.innerHTML = '';
    const img = document.createElement('img');
    img.src = qrcodeSrc;
    img.width = 200;
    img.height = 200;
    qrcodeBox.appendChild(img);
    
    modal.style.display = 'flex';
  }
});

功能说明

  1. 悬停显示小二维码:当鼠标悬停在分享图标上时,会显示一个小尺寸的二维码2
  2. 点击显示大弹窗:点击分享图标会显示一个居中大弹窗,包含更大的二维码和关闭按钮3
  3. 多平台支持:代码同时实现了微信和QQ的分享功能
  4. 自适应内容:二维码自动包含当前页面URL和标题信息3
  5. 交互体验:弹窗可以通过点击关闭按钮或点击遮罩区域关闭3

使用说明

  1. 将上述HTML、CSS和JS代码添加到您的论坛页面中
  2. 替换示例中的图标URL(https://example.com/wechat-icon.png)为您实际的图标路径
  3. 根据您的实际需求修改分享链接的生成逻辑(示例中使用了https://example.com/wechat-share作为示例)
  4. 如果需要添加更多分享平台,可以按照相同的模式扩展

注意事项

  • 二维码生成使用了第三方库QRCode.js,通过CDN引入3
  • 实际部署时需要将分享链接替换为真实的微信/QQ分享API
  • 样式可以根据您论坛的现有风格进行调整
  • 如果需要在移动设备上使用,可能需要调整交互方式(移动设备没有悬停事件)

这个实现结合了搜索结果中的最佳实践23,提供了灵活的交互方式和良好的用户体验。您可以根据实际需求进一步定制样式和功能。


该文章在 2026/5/22 9:45:29 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号