js vue 頁面添加水印

来源:https://www.cnblogs.com/jtwbdm/archive/2019/09/18/11544246.html
-Advertisement-
Play Games

vue 微信頁面添加水印 this.$nextTick(function() { watermark({ watermark_txt: "<div>" + '123' + "</div><div>" + '456' + "</div>"}); }) function watermark(settin ...


vue 微信頁面添加水印

                               this.$nextTick(function() {
                                   watermark({ watermark_txt: "<div>" + '123' + "</div><div>" + '456' + "</div>"});
                               })

 

 

 

function watermark(settings) {
        //預設設置
        var defaultSettings={
          watermark_txt:"text",
          watermark_x:70,//水印起始位置x軸坐標
          watermark_y:10,//水印起始位置Y軸坐標
          watermark_rows:100,//水印行數
          watermark_cols:2,//水印列數
          watermark_x_space:60,//水印x軸間隔
          watermark_y_space:40,//水印y軸間隔
          watermark_color:'#aaa',//水印字體顏色
          watermark_alpha:0.3,//水印透明度
          watermark_fontsize:'.26rem',//水印字體大小
          watermark_width:60,//水印寬度
          watermark_height:60,//水印高度
          watermark_angle:10//水印傾斜度數
        };
        //採用配置項替換預設值,作用類似jquery.extend
        if(arguments.length===1&&typeof arguments[0] ==="object" )
        {
          var src=arguments[0]||{};
          for(key in src)
          {
            if(src[key]&&defaultSettings[key]&&src[key]===defaultSettings[key])
              continue;
            else if(src[key])
              defaultSettings[key]=src[key];
          }
        }
   
        var oTemp = document.createDocumentFragment();
   
        //獲取頁面最大寬度
        var page_width = Math.max(document.body.scrollWidth,document.body.clientWidth) - 30;
        //獲取頁面最大高度
//        var page_height = Math.max(document.body.scrollHeight,document.body.clientHeight);
        var page_height = Math.max($("#iContainer").get(0).clientHeight,document.body.clientHeight,$("#iContainer").get(0).scrollHeight) - 20;
//        var page_height = $("#iContainer").get(0).scrollHeight;
       // console.log(page_height,$("#iContainer").outerHeight());
        
   
        //如果將水印列數設置為0,或水印列數設置過大,超過頁面最大寬度,則重新計算水印列數和水印x軸間隔
        if (defaultSettings.watermark_cols == 0 || (parseInt(defaultSettings.watermark_x + defaultSettings.watermark_width *defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (defaultSettings.watermark_cols - 1)) > page_width)) {
          defaultSettings.watermark_cols = parseInt((page_width-defaultSettings.watermark_x+defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
          defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
        }
        //如果將水印行數設置為0,或水印行數設置過大,超過頁面最大長度,則重新計算水印行數和水印y軸間隔
        if (defaultSettings.watermark_rows == 0 || (parseInt(defaultSettings.watermark_y + defaultSettings.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (defaultSettings.watermark_rows - 1)) > page_height)) {
          defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
          defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));
        }
        var x;
        var y;
        for (var i = 0; i < defaultSettings.watermark_rows; i++) {
          y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
          for (var j = 0; j < defaultSettings.watermark_cols; j++) {
            x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;
            var mask_div = document.createElement('div');
            mask_div.id = 'mask_div' + i + j;
            mask_div.className = 'mask_div';
            mask_div.innerHTML = defaultSettings.watermark_txt;
            
            //設置水印div傾斜顯示
            mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
            mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
            mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
            mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
            mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
            mask_div.style.visibility = "";
            mask_div.style.position = "absolute";
//            mask_div.style.left = x + 'px';
            mask_div.style.top = y + 'px';
            mask_div.style.overflow = "hidden";
            mask_div.style.zIndex = "9999999";
            mask_div.style.pointerEvents = "none";
            mask_div.style.opacity = defaultSettings.watermark_alpha;
            mask_div.style.fontSize = defaultSettings.watermark_fontsize;
            mask_div.style.fontFamily = defaultSettings.watermark_font;
            mask_div.style.color = defaultSettings.watermark_color;
            mask_div.style.textAlign = "center";
//            mask_div.style.width = defaultSettings.watermark_width + 'px';
//            mask_div.style.height = defaultSettings.watermark_height + 'px';
            mask_div.style.lineHeight = '.32rem';
            mask_div.style.display = "inline-block";
            oTemp.appendChild(mask_div);
          };
        };
        console.log($('.mask_div:odd'));
        document.body.appendChild(oTemp);
        $('.mask_div:odd').css({left:defaultSettings.watermark_x + 'px'});
      $('.mask_div:even').css({right:defaultSettings.watermark_x + 'px'});
}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQL SELECT INTO 語句可用於創建表的備份復件。 SELECT INTO 語句 SELECT INTO 語句從一個表中選取數據,然後把數據插入另一個表中。 SELECT INTO 語句常用於創建表的備份復件或者用於對記錄進行存檔。 SQL SELECT INTO 語法 您可以把所有的列插 ...
  • 原文作者: "Roman Elizarov" 原文地址: "Null is your firend, not a mistake" 譯者:秉心說 "Kotlin Island from Wikimedia by Pavlikhin, CC BY SA 4.0" 我使用 Java 語言編程已經很久很久 ...
  • 一、問題描述 初次安裝Android Studio,啟動後,報錯如下: 如圖: 二、原因分析 AS啟動後,會在預設路徑下檢測是否有Android SDK,如果沒有的話,就會報上述錯誤。 三、解決方案 3.1 主動設置SDK 如果本機有Android SDK的話,可以點擊cancel跳過,在下一個界面 ...
  • 目的: 圖片預載入能夠使得用戶在瀏覽後續頁面的時候,不會出現圖片載入一半導致瀏覽不流暢的情況。 一、方法一 項目打開的時候要對圖片進行預載入,在App.vue裡面的beforeCreate添加預載入程式 App.vue 二、方法二 創建兩個文件名稱分別為imgPreloader.js以及imgPre ...
  • 0918自我總結 JavaScript 三種彈窗方式 一.alert 用法: 二.confirm 用法: 三.prompt ...
  • 博客園美化夜間模式 一.點擊控制樣式 一.觸發點擊 二.修改按鈕樣式以及對於類名 三.將模式信息存入sessionStorage中 四.更具按鈕的類名,自己博客樣式進行跟換 二.時間控制切換 考慮情況: 1.時間到了提醒是不是要切換 2.已經是夜間模式了就用切換 3.有些人不喜歡這些提示 這段代碼解 ...
  • <script> // 使用索引位置來訪問字元串中的每個字元: var carname = 'Volvo XC60'; var character = carname[7]; console.log(character)</script><script> // 可以在字元串中使用引號,字元串中的引號 ...
  • 在使用javascript實現基本的數據結構中,練習了好幾周,對基本的數據結構如 棧、隊列、鏈表、集合、哈希表、樹、圖等內容進行了總結並且寫了筆記和代碼。 在 github中可以看到 點擊查看,可以關註一下我哈。 樹的基本術語 二叉樹節點的存儲結構 創建一個二叉搜索樹 二叉樹的先序、中序、後續遍歷算 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...