qrcodejs2–Vue生成二维码组件封装

qrcodejs2–Vue生成二维码组件封装1.安装qrcodejs2:npminstallqrcodejs2–saveyarnaddqrcodejs22.初步封装组件:/***@file生成二维码的组件*@authorWalker*@date2020-03-16*/<template><divclass=”emqrcode”><but…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1.安装qrcodejs2:

npm install  qrcodejs2 --save

Jetbrains全家桶1年46,售后保障稳定

yarn add  qrcodejs2

2.初步封装组件:

/** * @file 生成二维码的组件 * @author Walker * @date 2020-03-16 */
<template>
  <div class="emqrcode">
    <button @click="showQRcode">点击分享二维码</button>
    <div id="qrcode" ref="qrcode"></div>
  </div>
</template>

<script>
import QRCode from "qrcodejs2";
export default { 
   
  components: { 
    QRCode },
  data() { 
   
    return { 
   
      link: "https://www.baidu.com/"
    };
  },
  methods: { 
   
    /** * @description 生成二维码 * @param {number} qWidth 宽度 * @param {number} qHeight 高度 * @param {string} qText 二维码内容(跳转连接) * @param {string} qRender 渲染方式(有两种方式 table和canvas,默认是canvas) */
    qrcode(qWidth, qHeight, qText, qRender) { 
   
      let qrcode = new QRCode("qrcode", { 
   
        width: qWidth,
        height: qHeight,
        text: qText,
        render: qRender
      });
    },

    /** * @description 点击显示二维码 */
    showQRcode() { 
   
      //二维码初始化 点击一次添加一个二维码
      this.$refs.qrcode.innerHTML = "";
      this.$nextTick(function() { 
   
        this.qrcode(124, 124, this.link, "canvas");
      });
    }
  }
};
</script>

<style lang="less">
.emqrcode { 
   
  width: 100%;
  background-color: #f00;
}
</style>

最后的样式:

在这里插入图片描述

3.结合ElementUI:

/** * @file 生成二维码的组件 * @author Walker * @date 2020-03-16 */
<template>
  <div class="emqrcode">
    <el-button type="primary" class="left_transition" @click="showShare = !showShare">
      <i class="el-icon-caret-left"></i>
    </el-button>

    <div class="share_box">
      <transition name="el-zoom-in-center">
        <div v-show="showShare" class="transition-box">
          <el-button type="text" class="share_QRcode" @click="showQRcode">点击分享二维码</el-button>
        </div>
      </transition>
    </div>

    <el-dialog
      title="分享二维码"
      custom-class="dialog_style"
      :visible.sync="centerDialogVisible"
      width="40%"
      center
      @open="showQRcode"
    >
      <div :append-to-body="false" id="qrcode" ref="qrcode"></div>
      <span slot="footer" class="dialog-footer">
        <a class="linl_style">复制链接:{ 
   { 
   link}}</a>
        <!-- <el-button @click="centerDialogVisible = false">取 消</el-button> -->
        <!-- <el-button type="primary" @click="centerDialogVisible = false">确 定</el-button> -->
      </span>
    </el-dialog>
  </div>
</template>

<script>
import QRCode from "qrcodejs2";
export default { 
   
  components: { 
    QRCode },
  data() { 
   
    return { 
   
      link:"https://www.baidu.com/",
      centerDialogVisible: false,
      showShare: false
    };
  },
  methods: { 
   
    /** * @description 生成二维码 * @param {number} qWidth 宽度px * @param {number} qHeight 高度px * @param {string} qText 二维码内容(跳转连接) * @param {string} qRender 渲染方式(有两种方式 table和canvas,默认是canvas) */
    qrcode(qWidth, qHeight, qText, qRender) { 
   
      let qrcode = new QRCode("qrcode", { 
   
        width: qWidth,
        height: qHeight,
        text: qText,
        render: qRender
      });
    },

    /** * @description 遮罩打开的回调 点击显示二维码 */
    showQRcode() { 
   
      //收回抽屉
      this.showShare = false;
      //调用函数生成二维码
      this.$nextTick(function() { 
   
      	//二维码初始化 点击一次添加一个二维码
        this.$refs.qrcode.innerHTML = "";
        this.qrcode(124, 124, this.link, "canvas");
      });
	  //打开遮罩
      this.centerDialogVisible = true;
    }
  }
};
</script>

<style lang="less" scoped>
.left_transition { 
   
  border-radius: 0;
  border: none;
  border-right: 1px solid #ccc;
  background-color: #4157ff;
  height: 36px;
  padding: 0 4px 0 3px;
}
.share_box { 
   
  display: inline-block;
  height: 36px;
  border: none;
  vertical-align: top;
}
.emqrcode { 
   
  position: fixed;
  right: 17px;
  top: 20px;
  width: auto;
  // background-color: #4157ff;
  z-index: 3000;
  color: #ffffff;
}
.share_QRcode { 
   
  height: 36px;
  color: #ffffff;
  font-size: 10px !important;
}
.share_QRcode :hover { 
   
  color: #eef;
}
.emqrcode :hover { 
   
  // background-color: rgb(167, 206, 255);
}
.transition-box { 
   
  background-color: #4157ff;
  text-align: center;
  color: #fff;
  padding: 0 2px;
  box-sizing: border-box;
  border: none;
}
.linl_style { 
   
  color: #4157ff;
  font-size: 12px;
}
</style>
<style lang="less">
#qrcode { 
   
  img { 
   
    margin: 0 auto;
  }
}
</style>

效果如图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234557.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 云计算仿真框架CloudSim介绍

    云计算仿真框架CloudSim介绍幻灯片1云计算仿真框架CloudSim介绍jiangzw#ihep.ac.cn(以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开)(本文基于署名2.5中国大陆许可协议发布,欢迎转载、演绎,但是必须保留本文的署名John并包含本文链接。)欢迎交流2013年04月09日

    2022年10月13日
    3
  • [Elasticsearch] 邻近匹配 (三) – 性能,关联单词查询以及Shingles

    [Elasticsearch] 邻近匹配 (三) – 性能,关联单词查询以及Shingles提高性能短语和邻近度查询比简单的match查询在性能上更昂贵。match查询只是查看词条是否存在于倒排索引(InvertedIndex)中,而match_phrase查询则需要计算和比较多个可能重复词条(Multiplepossiblyrepeated)的位置。在LuceneNightlyBenchmarks中,显示了一个简单的term查询比一个短语查询快大概10倍,比一

    2025年6月12日
    6
  • 百度地图api文档_奥维互动地图使用教程

    百度地图api文档_奥维互动地图使用教程新版百度地图API增加了发布版SHA1,开发版SHA1按官方教程操作即可,这里介绍一下发布版SHA1的获取方法。为apk签名,生成keystore文件(如果已经有keystore文件,跳过此步骤)打开cmd,定位文件夹到.andorid下,默认路径是users/用户名/.android输入keytool-list-v-keystore*.jks,*.jks为keystor

    2022年8月11日
    22
  • C#计算矩阵的秩

    C#计算矩阵的秩

    2021年8月29日
    55
  • jsp调用getParameterValues获取表单信息

    jsp调用getParameterValues获取表单信息1.新建一个DynamicWebProject项目,里面新建两个jsp文件,整体的结构如下所示:2.one.jsp文件里面的代码如下所示:<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>example 选择你去过的城市:

    2022年7月22日
    14
  • transactionscope mysql,如何将TransactionScope与MySql和多个数据库服务器一起使用[通俗易懂]

    transactionscope mysql,如何将TransactionScope与MySql和多个数据库服务器一起使用[通俗易懂]TransactionOptionsTransOpt=newTransactionOptions();TransOpt.IsolationLevel=System.Transactions.IsolationLevel.ReadCommitted;TransOpt.Timeout=newTimeSpan(0,2,0);using(TransactionScopescope…

    2022年7月19日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号