整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          27響應式網站欣賞

          27響應式網站欣賞

          、SocialTalents

          http://socialtalents.ch/

          2、Alessio Atzeni

          http://www.alessioatzeni.com/


          3、Creative Knight

          http://www.creative-knight.com/


          4、Goltz Group

          http://goltzgroup.com/

          5、Cleverbird Creative

          http://www.cleverbirds.com/


          6、Barbour 120 years

          http://thestory.barbour.com/

          7、Creature Technology

          http://www.creaturetechnology.com/

          8、We Are Visual Animals

          http://wearevisualanimals.com/

          9、Raz

          http://raz.is/


          10、Seize Your Power

          http://yourpower.panda.org/


          11、Piotr Swierkowski

          http://www.piotrswierkowski.com/

          12、Music is my style

          http://kampania.house.pl/


          13、Peppermint – The Pitch

          http://wybieramyklienta.pl/en


          14、Studio Songes

          http://studio-songes.fr/fr/

          15、Studio Up

          http://www.studioup.it/index-en.html


          16、Webflow Interactions

          http://interactions.webflow.com/

          17、Dropr

          http://dropr.com/

          18、Keep calm and WWW

          http://www.jotart.pl/

          19、Engage

          http://enga.ge/


          20、Universiteit van Nederland

          http://www.universiteitvannederland.nl/

          21、Gammel Dansk

          http://www.gammeldansk.dk/


          22、Ferenc Andahazy

          http://ferencandahazy.com/

          23、Nois3

          http://www.nois3.it/


          24、12Wave

          http://12wave.com/

          25、TheyCallMeBarry

          http://www.theycallmebarry.com/

          26、Thomas Li Vigni

          http://www.thomaslivigni.com/


          27、Lots of Donuts

          http://lotsofdonuts.com/

          切圖網(qietu.com)是首家專門從事web前端開發的公司,專注we前端開發,響應式布局,webapp手機端網頁制作,微信html5頁面制作,bootstrap布局等,關注用戶體驗。

          不知道大家有沒有和小編一樣,在微信朋友圈中,我們常常可以看到各種制作精美的電子邀請函、企業招聘廣告、時尚的電子海報、趣味測試或是抽獎紅包等營銷活動。這些移動端營銷內容畫質精良、體驗流暢,還支持播放音樂、小視頻等多媒體素材。那么,這些看上去很炫酷的內容是怎樣制作出來的呢?

          在這里,小編先給大家科普一下知識。簡單版:HTML5是萬維網的核心語言、標準通用標記語言下的一個應用超文本標記語言(HTML)的第五次重大修改。那么我們大家口中常說的H5跟這個是一個概念嗎?敲黑板!記住可以裝逼,別說我沒告訴你。


          HTML5有以下特性:(1)語義特性(Class:Semantic)

          HTML5賦予網頁更好的意義和結構。更加豐富的標簽將隨著對RDFa的,微數據與微格式等方面的支持,構建對程序、對用戶都更有價值的數據驅動的Web。

          (2)本地存儲特性(Class: OFFLINE & STORAGE)

          基于HTML5開發的網頁APP擁有更短的啟動時間,更快的聯網速度,這些全得益于HTML5 APP Cache,以及本地存儲功能。Indexed DB(html5本地存儲最重要的技術之一)和API說明文檔。

          (3)設備兼容特性 (Class: DEVICE ACCESS)

          從Geolocation功能的API文檔公開以來,HTML5為網頁應用開發者們提供了更多功能上的優化選擇,帶來了更多體驗功能的優勢。HTML5提供了前所未有的數據與應用接入開放接口。使外部應用可以直接與瀏覽器內部的數據直接相連,例如視頻影音可直接與microphones及攝像頭相聯。

          (4)連接特性(Class: CONNECTIVITY)

          (5)網頁多媒體特性(Class: MULTIMEDIA)

          (6)三維、圖形及特效特性(Class: 3D, Graphics & Effects)

          (7)性能與集成特性(Class: Performance & Integration)

          (8)CSS3特性(Class: CSS3)

          因為篇幅限制,小編只好不過多闡述。

          那么H5又是什么?

          HyperText Mark-up Language 5.0 → HTML5 → H5 但是,H5已經成為微信HTML5網頁的專有名詞。H5特指基于HTML5技術的交互網頁應用。對了,我們公司的程序猿說直接敲代碼不就行了。可以實現自己想要的效果是多么美妙的感覺啊。。。。。


          好了,小編直接奉上干貨:

          1、易企秀(eqxiu.com/home) 2、Maka(maka.im) 3、人人秀(rrxiu.net) 4、凡科微傳單(wcd.im) 5、兔展(rabbitpre.com) 6、iH5 (ih5.cn/) 7、we+(weplus.me/) 8、70C (70c.com/) 9、云來(http://www.liveapp.cn/) 10、BlueMP (www.bluemp.cn)


          如今圍繞微信生態相關開發已經非常常見,本期帶來如何通過 qrcode.js 實現微信內置瀏覽器動態生成二維碼并能夠長按識別 以及 通過 html2canvas 生成圖片并長按保存

          說幾個知識點

          微信長按彈出識別選項的原理

          • 微信客戶端檢測到用戶長按img標簽
          • 微信主動進行截屏并識別圖片,二維碼識別采用的是截屏而不是通過img標簽
          • 微信識別成功后執行相關操作

          Base64

          • Base64是網絡上最常見的用于傳輸8Bit字節碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進制數據的方法

          Blob

          • HTML5中的Blob對象與MySQL中的BLOB對象有區別,HTML5中的Blob對象除了存放二進制數據外還可以設置這個數據的MINE類型,這相當于對文件的存儲,其它很多二進制對象也是從這個對象繼承的

          canvas.toDataURL([type, encoderOptions])

          • type : 指定圖片類型,默認值 image/png
          • encoderOptions : 為 image/jpegimage/webp 類型的圖片設置圖片質量,取值0-1,超出則以默認值0.92替代
          • 作用: 通過canvas進行轉化圖片

          準備工作

          結合微信規范明確需求

          • 微信img標簽通過src屬性可實現長按彈出選項(保存至手機,圖片為二維碼的情況下會出現識別二維碼)
          • 二維碼圖片若為本地圖片或服務器圖片(即不需要進行動態生成)只需要正常編寫代碼即可實現
          • 微信針對內置瀏覽器內的頁面圖片有著自己的一套適應邏輯與規范,canvas的圖片和base64編碼格式的圖片在安卓與ios手機上會出現不同的問題

          確定實現方案

          • 本例采用第三方js庫實現生成二維碼
          • 針對生成的base64編碼的圖片微信無法長按識別需要在前端進行格式和image對象重新轉換
          • 生成的圖片彈窗展示,避免出現其他元素影響微信識別率

          開發環境

          開發平臺

          • MacOS

          開發環境

          • Vue + node

          客戶端環境

          • Google Chrome
          • Wechat Webview

          技術實現

          本例的技術實現方案均在Vue項目環境下實現的

          引入第三方js庫

          提供兩種引入方式,兩種方式是不同的js庫,方便大家選擇和使用

          // 第一種方式
          // qrcode.js官方GitHub文檔: https://github.com/davidshimjs/qrcodejs
          <script src="static/js/qrcode.js"></script>
          
          // 第二種方式
          npm install qrcodejs2
          import qrCode from 'qrcodejs2'

          組件中調用

          HTML

          <div class="qrcode-panel" id="qrcode"></div>

          JS

          // 簡單調用
          new QRCode(document.getElementById('qrcode'), 'your content');
          // new QRCode(element, option)
          // element 顯示二維碼的元素或該元素的 ID
          // option 參數配置
          
          // 標準調用
          var qrcode=new QRCode(document.getElementById("qrcode"), {
          	text: "https://www.xxx.com?did=123456&id=123&userid=456",
          	width: 160, //圖像寬度
          	height: 160, // 圖像高度
          	render: 'canvas', // 生成格式(table 和 canvas)
          	colorDark : "#000000", //前景色
          	colorLight : "#ffffff", //背景色
          	correctLevel : QRCode.CorrectLevel.H // 容錯級別
          });
          // 容錯級別,可設置為:
          QRCode.CorrectLevel.L(最大 7% 的錯誤能夠被糾正)
          QRCode.CorrectLevel.M(最大 15% 的錯誤能夠被糾正)
          QRCode.CorrectLevel.Q(最大 25% 的錯誤能夠被糾正)
          QRCode.CorrectLevel.H(最大 30% 的錯誤能夠被糾正)
          
          // 其他公共方法
          QRCode.makeCode(text) // 設置二維碼內容
          QRCode.clear() // 清除二維碼
          

          重置 Image 對象

          重置的原因是原JS生成的 image 和 canvas 對象無法在微信端長按識別

          var canvas=document.getElementsByTagName('canvas')[0];
          var img=this.convertCanvasToImage(canvas);
          document.getElementById("qrcode").append(img);
          
          convertCanvasToImage(canvas) {
          	//新建Image對象
          	var image=new Image();
          	// canvas.toDataURL 返回的是一串Base64編碼的URL
          	image.src=canvas.toDataURL("image/png");
          	image.id='qrcodeImg';
          	return image;
          }
          

          后續細節處理

          至此,一個能夠滿足長按識別的動態二維碼已經生成,不繼續處理的話會有兩張二維碼,長按對比就能看出,qrcode.js 生成的二維碼長按無法識別,而經過重置之后的對象是可以實現此功能的。

          我的處理方式是兩個二維碼都保留,將二維碼圖片進行重新定位,將重置的二維碼圖片置于不能識別二維碼上層,不去頻繁操作DOM節點的顯示隱藏。

          生成的二維碼通過 append 的方式插入到dom節點中,在關閉操作時需要將之前生成的 canvasimage 去除

          微信內置瀏覽器生成canvas圖片保存

          上述教程可以實現動態生成二維碼進行保存和長按識別,但是如果需要將HTML內容生成canvas保存就存在問題了。

          針對保存需要注意的幾個問題:

          • canvas禁止跨域
          • 安卓微信長按不能保存base64圖片
          • 微信限制Blob類型圖片的保存
          • 使用 canvas.toDataURL 繪制時的類型使用 image/jpeg 進行保存

          技術選型

          使用第三方JS庫 html2canvas 進行處理

          識別和生成原理:

          • 腳本直接在用戶瀏覽器上截取網頁或部分網頁的"屏幕截圖"
          • "屏幕截圖"基于DOM,因此它可能不是真實表示的100%準確,因為它沒有制作實際的屏幕截圖,而是根據頁面上可用的信息構建屏幕截圖

          存在的問題:

          • 正是因為 html2canvas 不是基于真正的屏幕截圖去識別處理,所以脫離了文檔流,或者文檔流異常的元素會無法被截取下來
          • html2canvas 只會截取到目標元素寬高范圍內的內容
          • 對部分css樣式支持不好,兼容性差的屬性列表請 后臺留言獲取

          一些可能需要的參數

          • useCORS : 是否嘗試使用CORS從服務器加載圖像
          • async : 是否異步解析和呈現元素
          • scale : 用于渲染的比例。默認為瀏覽器設備像素比率window.devicePixelRatio
          • allowTaint : 是否允許畫布被污染,被污染的canvas是沒法使用toDataURL()轉base64流的,部分細節請 后臺留言獲取
          • 更多 html2canvas 參數請 后臺留言獲取

          引入第三方JS庫

          使用 html2canvas

          import html2canvas from 'html2canvas'

          組件中調用

          HTML

          <div class="html2canvas-conetent" ref="canvasContent">
          	<img src="/static/images/canvas.jpg">
          	<span>測試Title</span>
          </div>
          <button @click="showCanvas()">生成canvas圖片</button>
          

          JS

          • 使用 html2canvas 推薦的promise方法
          showCanvas() {
          	let self=this;
          	html2canvas(self.$refs.canvasContent).then(function(canvas) {
                  self.imgUrl=canvas.toDataURL();
                  self.showCanvasImg=true;
          	});
          }
          // 異步解析調用和呈現元素
          showCanvas() {
          	let self=this;
          	html2canvas(self.$refs.canvasContent  {
          		async: true
          	}).then(canvas=> {
          		self.imgUrl=canvas.toDataURL();
          		self.showCanvasImg=true;
          	});
          }
          
          

          實現效果

          源碼地址

          • Github地址(請點擊原文鏈接查看)

          主站蜘蛛池模板: 日韩少妇无码一区二区三区| 人妻无码一区二区三区AV| 国产成人精品视频一区| 久久精品国产亚洲一区二区三区| 日本不卡一区二区三区| 日本强伦姧人妻一区二区| 亚洲一区二区久久| 亚洲AV美女一区二区三区| 精品人妻一区二区三区四区 | 91在线一区二区| 狠狠做深爱婷婷综合一区| 在线电影一区二区三区| 在线观看亚洲一区二区| 久久精品一区二区三区不卡| 免费萌白酱国产一区二区| 无码一区二区三区爆白浆| 国产精品揄拍一区二区久久| 亚洲电影一区二区| 亚洲国产精品乱码一区二区| 国产美女露脸口爆吞精一区二区| 秋霞日韩一区二区三区在线观看| 日日摸夜夜添一区| 亚洲一本一道一区二区三区| 亚洲一区中文字幕| 午夜视频在线观看一区| 中文精品一区二区三区四区| 无码人妻精品一区二区三区蜜桃| 久久久精品人妻一区二区三区| 亚洲综合色自拍一区| 久久国产一区二区三区| 日韩精品无码一区二区中文字幕 | 国产成人精品无码一区二区三区| 一区二区三区中文| 日韩精品无码一区二区三区AV | 麻豆国产在线不卡一区二区| 日韩色视频一区二区三区亚洲| 日本精品一区二区三区四区| 一区二区精品久久| 一区二区三区四区视频| 国模无码一区二区三区| 国产成人精品一区二区三在线观看|