zoukankan      html  css  js  c++  java
  • vue 水印插件

    vue 水印插件


    插件:

    directives.js

    import Vue from 'vue'
    /**
     * author: zuokun
     * 水印
     * text:水印文字
     * font:字体
     * textColor:文字颜色
     * width:宽度
     * height:高度
     * textRotate:偏转度 -90到0, 负数值,不包含-90
     */
    Vue.directive('watermark',(el,binding)=>{
        let text = binding.value.text;
        let font = binding.value.font || "16px Microsoft JhengHei";
        let textColor = binding.value.textColor || "rgba(215, 215, 215, 0.2)";
        let width = binding.value.width || 400;
        let height = binding.value.height || 200;
        let textRotate = binding.value.textRotate||-20;
        
        function addWaterMarker(parentNode){
            var can = document.createElement('canvas');
            parentNode.appendChild(can);
            can.width = width;
            can.height = height;
            can.style.display = 'none';
            var cans = can.getContext('2d');
            cans.rotate(textRotate * Math.PI / 180);
            cans.font = font;
            cans.fillStyle = textColor ;
            cans.textAlign = 'left';
            cans.textBaseline = 'Middle';
            cans.fillText(text, 0,  can.height);
            parentNode.style.backgroundImage = "url(" + can.toDataURL("image/png") + ")";
        }
        addWaterMarker(el)
    })

    使用:

    1.引入:

    import  '@/utils/directives.js';

    2.设置配置:


    watermarkConfig:{//水印
    text:'测试水印',
    font:'20px 微软雅黑',
    textColor:'#bcbcbc',
    width : 150, //水印文字的水平间距
    height : 100, //水印文字的高度间距(低于文字高度会被替代)
    extRotate : -30 //-90到0, 负数值,不包含-90
    },

    3.页面使用:

    <div  v-watermark="watermarkConfig">
    </div>

    效果:


    页面完整代码:

    <template>
        <div id="test">
            <div class="bodydiv" v-watermark="watermarkConfig">
                
            </div>
        </div>
    </template>
    
    <script>
        import Vue from 'vue';
        import  '@/utils/directives.js';
        export default {
            data() {
                return {
                    watermarkConfig:{//水印
                        text:'测试水印',
                        font:'20px 微软雅黑',
                        textColor:'#bcbcbc',
                        width : 150, //水印文字的水平间距
                        height : 100,  //水印文字的高度间距(低于文字高度会被替代)
                        extRotate : -30 //-90到0, 负数值,不包含-90
                    },
                }
            },
            methods: {
                
            },
            created() { //初始化加载
            
            },
            mounted() { //加载完成回调
        
            },
        }
    </script>
    
    <style>
        #test .bodydiv {
            width: 100%;
            height:1000px;
        }
    </style>

    结束

  • 相关阅读:
    打印出从1到最大的n位十进制数
    排序算法--(二)
    排序算法 (-)
    两个栈实现一个队列
    C++ 模板类解析
    根据先序遍历中序遍历重建二叉树
    格式化时间
    用js实现冒泡排序
    接口和抽象类的区别
    解析json
  • 原文地址:https://www.cnblogs.com/zktww/p/14139206.html
Copyright © 2011-2022 走看看