欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue項(xiàng)目中使用html2canvas解決截圖不全的問題

 更新時(shí)間:2023年11月24日 10:38:07   作者:吃葡萄不吐葡萄皮嘻嘻  
本文主要介紹了vue項(xiàng)目中使用html2canvas解決截圖不全的問題

話不多說,直接上代碼!??!

一、安裝插件

npm i html2canvas --save

二、頁面引入插件

import html2canvas from "html2canvas";
<div>
    <el-button @click="downloadPicture">下載</el-button>
    <div ref="imageDom">
      <el-table
        :data="tableData"
        style="width: 100%"
        :row-class-name="tableRowClassName"
      >
        <el-table-column prop="date" label="日期" width="180"> </el-table-column>
        <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
        <el-table-column prop="address" label="地址"> </el-table-column>
        <el-table-column prop="age" label="年齡"> </el-table-column>
      </el-table>
   </div>
</div>

頁面效果圖展示(有橫向和縱向的滾動(dòng)條):

在這里插入圖片描述

重點(diǎn)思路:

首先是獲取要截取頁面的父元素,通過clone并緊隨于body之后,在生成幕布的時(shí)候不再拿著父元素去截取,而是截取clone的div,這樣的話就可以實(shí)現(xiàn)整個(gè)頁面的截取了

 //截圖
    downloadPicture () {
      var width = this.$refs.imageDom.style.width
      var cloneDom = this.$refs.imageDom.cloneNode(true)
      cloneDom.style.position = 'absolute'
      cloneDom.style.top = '0px'
      cloneDom.style.zIndex = '-1'
      cloneDom.style.width = width
      document.body.appendChild(cloneDom)
      html2canvas(cloneDom).then(canvas => {
        // 轉(zhuǎn)成圖片,生成圖片地址
        var imgUrl = canvas.toDataURL('image/png')
        var eleLink = document.createElement('a')
        eleLink.href = imgUrl // 轉(zhuǎn)換后的圖片地址
        eleLink.download = 'pictureName'
        // 觸發(fā)點(diǎn)擊
        document.body.appendChild(eleLink)
        eleLink.click()
        // 然后移除
        document.body.removeChild(eleLink)
      })
      cloneDom.style.display = 'none'
    },

下載一鍵截屏效果圖展示如下(完美展示~~):

在這里插入圖片描述

!!!注意:以上代碼沒有設(shè)置table高度和列固定,如果table設(shè)置了高度或者設(shè)置了列固定會出現(xiàn)截圖不全的問題,此時(shí)需要?jiǎng)討B(tài)的給table設(shè)置高度和列固定, 不設(shè)置高度的時(shí)候高度設(shè)置為空值才生效,設(shè)置為none、auto、100%不生效

所有代碼如下:

<template>
  <div ref="imageDom" >
    <el-button @click="downloadPicture">下載</el-button>
    <div >
      <el-table
        class="tableX"
        :height="flag ? '400' : ''"
        :data="tableData"
        :row-class-name="tableRowClassName"
      >
        <el-table-column :fixed="flag?true:false" prop="date" label="日期" width="180">
        </el-table-column>
        <el-table-column  prop="name" label="姓名" width="180">
        </el-table-column>
        <el-table-column prop="address" label="地址"> </el-table-column>
        <el-table-column prop="age" label="年齡"> </el-table-column>
        <el-table-column prop="sex" label="性別"> </el-table-column>
        <el-table-column prop="hobby" label="愛好"> </el-table-column>
      </el-table>
    </div>
  </div>
</template>

<script>
import html2canvas from "html2canvas";
export default {
  data() {
    return {
      tableData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "開始",
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市",
        },
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市",
        },
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市",
        },
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市",
        },
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海",
          age: 30,sex:'女',hobby:'愛好'
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "結(jié)尾",
        },
      ],
      h: 400,
      flag: true,
    };
  },
  methods: {
    tableRowClassName({ rowIndex }) {
      if (rowIndex % 2 === 0) {
        return "warning-row";
      } else if (rowIndex % 2 !== 0) {
        return "success-row";
      }
      return "";
    },
    //截圖
    downloadPicture() {
      this.flag = false;
      this.$nextTick(() => {
        var width = this.$refs.imageDom.style.width;
        var cloneDom = this.$refs.imageDom.cloneNode(true);
        cloneDom.style.position = "absolute";
        cloneDom.style.top = "0px";
        cloneDom.style.zIndex = "-1";
        cloneDom.style.width = width;
        console.log(cloneDom);
        document.body.appendChild(cloneDom);
        html2canvas(cloneDom).then((canvas) => {
          // 轉(zhuǎn)成圖片,生成圖片地址
          var imgUrl = canvas.toDataURL("image/png");
          var eleLink = document.createElement("a");
          eleLink.href = imgUrl; // 轉(zhuǎn)換后的圖片地址
          eleLink.download = "pictureName";
          // 觸發(fā)點(diǎn)擊
          document.body.appendChild(eleLink);
          eleLink.click();
          // 然后移除
          document.body.removeChild(eleLink);
        });
        cloneDom.style.display = "none";
        this.flag = true;
      });
    },
  },
};
</script>

<style>
.el-table .warning-row {
  background: oldlace;
}

.el-table .success-row {
  background: #f0f9eb;
}
</style>

到此這篇關(guān)于vue項(xiàng)目中使用html2canvas解決截圖不全的問題的文章就介紹到這了,更多相關(guān)vue html2canvas截圖不全內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 在Vue中使用scoped屬性實(shí)現(xiàn)樣式隔離的原因解析

    在Vue中使用scoped屬性實(shí)現(xiàn)樣式隔離的原因解析

    scoped是Vue的一個(gè)特殊屬性,可以應(yīng)用于<style>標(biāo)簽中的樣式,這篇文章給大家介紹在Vue中,使用scoped屬性為什么可以實(shí)現(xiàn)樣式隔離,感興趣的朋友一起看看吧
    2023-12-12
  • Vue頁面中引入img圖片的方法

    Vue頁面中引入img圖片的方法

    本文主要介紹了Vue頁面中引入img圖片的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 深入理解Vue.js3中Reactive的實(shí)現(xiàn)

    深入理解Vue.js3中Reactive的實(shí)現(xiàn)

    reactive是Vue 3的Composition API中的一個(gè)函數(shù),它允許你創(chuàng)建一個(gè)響應(yīng)式的數(shù)據(jù)對象,本文主要介紹了深入理解Vue.js3中Reactive的實(shí)現(xiàn),感興趣的可以了解一下
    2024-01-01
  • vue復(fù)制內(nèi)容到剪切板代碼實(shí)現(xiàn)

    vue復(fù)制內(nèi)容到剪切板代碼實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于vue復(fù)制內(nèi)容到剪切板代碼實(shí)現(xiàn)的相關(guān)資料,在Web應(yīng)用程序中剪貼板(Clipboard)操作是非常常見的操作之一,需要的朋友可以參考下
    2023-08-08
  • 如何解決element-ui中select下拉框popper超出彈框問題

    如何解決element-ui中select下拉框popper超出彈框問題

    這篇文章主要介紹了如何解決element-ui中select下拉框popper超出彈框問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue中如何給多個(gè)按鈕動(dòng)態(tài)添加類名

    vue中如何給多個(gè)按鈕動(dòng)態(tài)添加類名

    這篇文章主要介紹了vue中如何給多個(gè)按鈕動(dòng)態(tài)添加類名問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Vue常用指令V-model用法

    Vue常用指令V-model用法

    本篇文章主要介紹了Vue常用指令_V-model用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • Vue.js2.0中的變化小結(jié)

    Vue.js2.0中的變化小結(jié)

    最近小編在學(xué)習(xí)vue.js ,發(fā)現(xiàn)里面有好多好玩的東東,今天小編給大家分享Vue.js2.0中的變化,小編會在日后給大家持續(xù)更新的,感興趣的朋友參考下吧
    2017-10-10
  • vue 組件間的通信之子組件向父組件傳值的方式

    vue 組件間的通信之子組件向父組件傳值的方式

    這篇文章主要介紹了vue 組件間的通信之子組件向父組件傳值的方式總結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Vue使用$set和$delete操作對象屬性

    Vue使用$set和$delete操作對象屬性

    這篇文章介紹了Vue使用$set和$delete操作對象屬性的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評論