前端插件踩坑日记(持续更新,有遇到的话)

615 阅读3分钟

ECharts图表绘画(基于Vue)

www.echartsjs.com/index.html 里面的x轴和y轴字体变化,官方文档的好像不生效,下面的才会生效

    xAxis : [
        {
            type : 'category',
            data : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
            axisTick: {
                alignWithLabel: true
            },
            axisLabel:{
                textStyle:{
                fontSize:64,
                color:'red'
            }   
            }
        }
    ],

关于显示百分百 数据一定要是百分比的,目前不知道数据怎么转为百分比,所以只能先将数据进行百分比处理

    series : [
        {
            name:'直接访问',
            type:'bar',
            barWidth: '60%',
            label: {
                normal: {
                  show: true,
                  position: "top",
                  fontSize: 22,
                  color: "#fe8b1e",
                  formatter: "{c}%" 这里的c是指数据
                }
            data:[20,20,20,20,20]
        }
    ]

关于视图窗口更新但是图表并没有更新

<div id="dataHistogram"></div>
//先获取dom中的图表元素
this.myChart = echarts.init(
    document.getElementById("dataHistogram")
);
//使用this.myChart.resize();
this.myChart.resize();

截图并转为图片文件保存(html2canvas插件)

    //获取截图区域
     function html2canvas(document.getElementById("xxxx").get, {
        backgroundColor: null,
        useCORS: true
      }).then(canvas => {
        let dataURL = canvas.toDataURL("image/png");
        let formObj = new FormData();
        formObj.append("uploadFile", this.base64ToBlob(dataURL));
      });
    //进行转换
   function base64ToBlob(urlData) {
      var arr = urlData.split(",");
      var mime = arr[0].match(/:(.*?);/)[1] || "image/png";
      // 去掉url的头,并转化为byte
      var bytes = window.atob(arr[1]);
      // 处理异常,将ascii码小于0的转换为大于0
      var ab = new ArrayBuffer(bytes.length);
      // 生成视图(直接针对内存):8位无符号整数,长度1个字节
      var ia = new Uint8Array(ab);
      for (var i = 0; i < bytes.length; i++) {
        ia[i] = bytes.charCodeAt(i);
      }
      console.log(new Blob([ab], { type: mime }));
      return new Blob([ab], {
        type: mime
      });
    }

画布实现动态粒子背景(Vue插件)

vue-particles.netlify.com/ 忘记截图效果 可以去官网看一下

npm install vue-particles --save-dev
import Vue from 'vue'
import VueParticles from 'vue-particles'
Vue.use(VueParticles)
<template> 
  <p id="app">
   <vue-particles
    color="#dedede"
    :particleOpacity="0.7"
    :particlesNumber="80"
    shapeType="circle"
    :particleSize="4"
    linesColor="#dedede"
    :linesWidth="1"
    :lineLinked="true"
    :lineOpacity="0.4"
    :linesDistance="150"
    :moveSpeed="3"
    :hoverEffect="true"
    hoverMode="grab"
    :clickEffect="true"
    clickMode="push"
   >
   </vue-particles>
  </p>
 </template>
名称 基础类型 默认值 说明
color String类型 默认'#dedede' 粒子颜色。
particleOpacity Number类型 默认0.7 粒子透明度
particlesNumber Number类型 默认80 粒子数量
shapeType String类型 默认'circle' 可用的粒子外观类型有:"circle","edge","triangle", "polygon","star"
particleSize Number类型。默认80 单个粒子大小
linesColor String类型 默认'#dedede' 线条颜色
linesWidth Number类型 默认1 线条宽度
lineLinked 布尔类型 默认true 连接线是否可用
lineOpacity Number类型 默认0.4 线条透明度
linesDistance Number类型 默认150 线条距离
moveSpeed Number类型 默认3 粒子运动速度
hoverEffect 布尔类型 默认true 是否有hover特效
hoverMode String类型 默认true 可用的hover模式有: "grab", "repulse", "bubble"
clickEffect 布尔类型 默认true 是否有click特效
clickMode String类型 默认true 可用的click模式有: "push", "remove", "repulse", "bubble"

如果要在画布里面添加组件,则需要把组件绝对定位

<template>
  <div id="app" class="wrap-banner">
    <div >
        <!-- <logo class="control"></logo> -->
        <loginform class="control"></loginform>
    </div>
    <vue-particles
      class="sky"
      color="#dedede"
      :particleOpacity="0.7"
      :particlesNumber="80"
      shapeType="circle"
      :particleSize="4"
      linesColor="#dedede"
      :linesWidth="1"
      :lineLinked="true"
      :lineOpacity="0.4"
      :linesDistance="150"
      :moveSpeed="3"
      :hoverEffect="true"
      hoverMode="grab"
      :clickEffect="true"
      clickMode="push"
    ></vue-particles>
  </div>
</template>
<script>
import logo from '../components/logo.vue'
import loginform from '../components/loginform.vue'
export default{
  data(){
    return{
    }
  },
  components:{
    logo,loginform
  }
}
</script>
<style lang="scss" scoped>
.control{
   height: 320px;
   position: absolute;
   left: 60%;
   top: 30%;
   border-radius: 2em;
}
   //固定属性 对画布背景进行修改
#particles-js{
   // background-color: #000000;
   background-image: url('../assets/bk5.jpg');
   background-repeat: no-repeat;
   background-size: 100%;
}
.sky{
   position: relative;
   top: 0;
   width: 100%;
   height: 100%;
   z-index: -1;   //这个z-index 要是不设置 会对登录表单的点击产生干扰
}
.wrap-banner {
   display: flex;
}
</style>

有什么问题可以提出来 如果我会的话就尽量回答 或者文章中有什么错误也帮忙指出来 谢谢