整合營銷服務商

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

          免費咨詢熱線:

          技術貼:一篇文章看懂鏈接(超鏈接)設計

          人人都是產品經理【起點學院】,BAT實戰派產品總監手把手系統帶你學產品、學運營。

          產品設計時細節是產品經理最頭疼的問題,一個button,一個鏈接都要考慮太多的細節問題。作者整理了常見的一些功能設計問題,一篇文章看懂這些功能設計。來學習吧。

          定義

          鏈接也稱為超鏈接,所謂的超鏈接是指從一個網頁指向一個目標的連接關系,這個目標可以是另一個網頁,也可以是相同網頁上的不同位置,還可以是一個圖片,一個電子郵件地址,一個文件,甚至是一個應用程序。而在一個網頁中用來超鏈接的對象,可以是一段文本或者是一個圖片。當瀏覽者單擊已經鏈接的文字或圖片后,鏈接目標將顯示在瀏覽器上,并且根據目標的類型來打開或運行。

          樣式

          鏈接可以是一個字或是一段字這樣的文本,也可以是一個按鈕,一張圖片,當你點擊后跳轉到另一個目標,當你把鼠標指針移到某個鏈接時會變成一個小手,當然在手機上沒有這一特點。

          1. 文本樣式的鏈接

          文本樣式的鏈接一般在搜索引擎的網站呈現藍色字樣,大多會在下面加上下劃線以便識別,不過現如今考慮到不影響文本的可讀性與用戶體驗,逐漸取消了下劃線。而在一些別的網站考慮到界面設計風格各方面的因素而不用藍色。

          谷歌的文本鏈接是藍色,沒有下劃線

          百度的文本鏈接也是藍色,關鍵詞是紅色,有下劃線

          而京東的文本鏈接有灰色,有白色,有黑色

          2. 按鈕樣式的鏈接

          按鈕樣式的鏈接比文本樣式的更容易識別,每一個按鈕都是一樣鏈接。

          按鈕樣式鏈接

          3. 圖片樣式的鏈接

          圖片樣式的鏈接可以是單獨的一張圖片,也可以是文字與按鈕一起組成一張圖片,只是鼠標指針掃過圖片的任何一個部位都會變成小手。

          如桌面彈出這種游戲小窗口的圖片式鏈接

          由文字/圖/按鈕樣式一起構成的一張圖片式按鈕,鼠標可以點擊圖中任何一部位

          打開方式

          鏈接打開的方式有三種:第一種是在當前頁面刷新跳轉,國外的網站大多是這樣的打開式;第二種是在新標簽頁面打開鏈接,國內大多采用這種;第三種是提示用APP打開。當然現在出現了一種新的打開方式,那就是二維碼掃描。

          提示用美拍APP打開

          類型

          按照連接路徑的不同,網頁中超鏈接一般分為以下3種類型:內部鏈接,錨點鏈接和外部鏈接。

          鏈接還可以分為動態鏈接和靜態鏈接。動態超鏈接指的是可以通過改變HTML代碼來實現動態變化的鏈接,例如我們可以實現將鼠標移動到某個文字鏈接上,文字就會象動畫一樣動起來或改變顏色的效果,也可以實現鼠標移到圖片上圖片就產生反色或朦朧等等的效果。而靜態鏈接,顧名思義,就是沒有動態效果的鏈接。

          1. 內部鏈接

          與外部鏈接(即反向鏈接)相反,內部鏈接是指同一網站域名下的內容頁面之間互相鏈接。如頻道、欄目、終極內容頁之間的鏈接,乃至站內關鍵詞之間的Tag鏈接都可以歸類為內部鏈接,因此內部鏈接我們也可以稱之為站內鏈接,對內部鏈接的優化其實就是對網站的站內鏈接的優化。

          2. 錨點鏈接

          HTML中的鏈接,正確的說法應該稱作"錨點",它命名錨點鏈接(也叫書簽鏈接)常常用于那些內容龐大繁瑣的網頁,通過點擊命名錨點,不僅讓我們能指向文檔,還能指向頁面里的特定段落,更能當作"精準鏈接"的便利工具,讓鏈接對象接近焦點。便于瀏覽者查看網頁內容。類似于我們閱讀書籍時的目錄頁碼或章回提示。在需要指定到頁面的特定部分時,標記錨點是最佳的方法。

          3. 外部鏈接

          外部鏈接,又常被稱為:“反向鏈接”或“導入鏈接”,是指通過其他網站鏈接到你的網站的鏈接。

          外部鏈接指的是針對搜索引擎,與其它站點所做的友情鏈接。高質量的外部鏈接指:和你的網站建立鏈接的網站知名度高,訪問量大,同時相對的外部鏈接較少,有助于快速提升你的網站知名度和排名的其他網站的友情鏈接。

          如果按照使用對象的不同,網頁中的鏈接又可以分為:文本超鏈接,圖像超鏈接,E-mail鏈接,錨點鏈接,多媒體文件鏈接,空鏈接等。

          鏈接是一種對象,它以特殊編碼的文本或圖形的形式來實現鏈接,如果單擊該鏈接,則相當于指示瀏覽器移至同一網頁內的某個位置,或打開一個新的網頁,或打開某一個新的WWW網站中的網頁。

          鏈接狀態

          鏈接在交互上一般會呈現4種狀態,即默認狀態/懸停時狀態/點擊時狀態/點擊后狀態。比如谷哥網站的交互體驗。如下圖:

          點擊前

          懸停時,下面浮現半透明線條

          點擊時,有波紋暈開的動態效果

          點擊后,下面線條粗

          有時候是3種狀態,比如百度網和知乎應用:

          默認狀態

          點擊時鏈接變紅

          點擊后鏈接變成紫色

          IOS系統知乎應用的3種狀態,而在Android系統沒有用力點擊這一狀態。

          默認狀態

          點擊狀態

          用力點擊會彈出預覽小窗口

          有些時候只有2種狀態,如下圖谷歌網:

          默認和點擊后狀態一樣

          鼠標懸停時出現下劃線

          默認狀態

          點擊時

          而有時候比如在APP里有時候就一直只有一種狀態,也可以稱靜態鏈接,之前的可以稱之為動態鏈接。在不同的使用場景會因為當時的情況選擇最合適的交互體驗設計。有的情況下還會加上點擊的音效,使用戶體驗更暢快,這在移動端用的使用情況多一些。

          總之鏈接是網頁不可缺少的構成部分,每一個鏈接的呈現都是經過深思熟慮的。

          作者:潘瑤瓊(簡書作者)

          本文由 @潘瑤瓊 授權發布于人人都是產品經理,未經作者許可,禁止轉載。

          、背景

          今天項目中牽涉到一個html圖片生成的需求,然后就發現了這個第三方的js -- html2canvas

          PS: 附上官方使用文檔 http://html2canvas.hertzen.com/

          二、說一下簡明使用教程吧

          ①引入JS

          可以在官方下載,也可以使用CDN

          ②在需要的html中指定操作元素

          <div id="capture" style="padding:2rem;">

          // your code ...

          </div>


          ③調用指定的方法

          export(){

          html2canvas(document.querySelector("#capture")).then(canvas => {
          saveFile(canvas.toDataURL(),"ccc.png");
          });
          }

          saveFile(data, filename){
          const save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
          save_link.href = data;
          save_link.download = filename;
          const event = document.createEvent('MouseEvents');
          event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
          save_link.dispatchEvent(event);
          };


          三、附上主要代碼段

          迎點擊右上角關注小編,除了分享技術文章之外還有很多福利,私信學習資料可以領取包括不限于Python實戰演練、PDF電子文檔、面試集錦、學習資料等。

          前言

          將圖片的每個像素用文字代替,最后生成一個HTML文檔,在瀏覽器中可以顯示出圖像,只不過圖像全是由文字組成的。

          實現這樣的效果并不復雜,只不過是用標簽代替像素而已,接下來我會演示如何用 PIL/Pillow 庫去實現這樣的效果。

          PIL 圖像處理庫

          PIL(Python Imaging Library) 是 Python 平臺的圖像處理標準庫。不過 PIL 暫不支持 Python3,可以用 Pillow 代替,API是相同的。

          安裝 PIL 庫

          如果你安裝了 pip 的話可以直接輸入 pip install PIL 命令安裝 Pillow。

          或者在 PyCharm 中打開 [File] >> [settings] >> [project github] >> [project interpreter] 添加標準庫:

          PIL 使用方法

          圖片處理過程

          圖片轉換成網頁的過程,可以分成五個步驟。首先要選擇一個合適的HTML模板,控制好字體的大小和字符間的間距。

          然后通過 Python 的 網絡訪問模塊,根據URL獲取圖片。接著使用 PIL 模塊載入二進制圖片,將圖片壓縮到合適的尺寸。

          遍歷圖片的每一個像素,得到該像素的顏色值,應用到HTML的標簽上。最后把字符串信息輸出到文件中,生成HTML文檔。

          定制模板

          大括號代表一個占位符,最后會被替換成實際內容,雙大括號中的內容則不會被替換。

          獲取圖片

          通過 URL 得到 byte 數組形式的圖片。

          from urllib import request
          url = 'https://pic.cnblogs.com/avatar/875028/20160405220401.png'
          binary = request.urlopen(url).read()
          

          處理圖片

          byte 類型的 圖片需要通過 BytesIO 轉換為 string 類型,才能被 PIL 處理。

          from PIL import Image
          from io import BytesIO
          img = Image.open(BytesIO(binary))
          img.thumbnail((100, 100)) # 圖片壓縮
          

          生成HTML

          使用<font>標簽包裹文字,并根據相應像素的RGB值,設置<font>標簽的color屬性。

          piexl = img.load() # 獲取像素信息
          width, height = img.size # 獲取圖像尺寸
          body, word = '', '博客園'
          font = '<font color="{color}">{word}</font>'
          for y in range(height):
           for x in range(width):
           r, g, b = piexl[x, y] # 獲取像素RGB值
           body += font.format(
           color='#{:02x}{:02x}{:02x}'.format(r, g, b),
           word=word[((y * width + x) % len(word))]
           )
           body += '\n<br />\n'
          

          導出網頁

          向HTML模板中填充處理完成的數據,使用文件流將字符串以utf8格式輸出到文檔。

          html = TEMPLATE.format(title=word, body=body)
          fo = open('index.html', 'w', encoding='utf8')
          fo.write(html)
          fo.close()
          

          img2html

          wo把上面五個步驟封裝了起來,這樣一來就可以很方便的調用了。

          from io import BytesIO
          from PIL import Image
          from PIL import ImageFilter
          from urllib import request
          TEMPLATE = '''
          <!DOCTYPE html>
          <html>
          <head>
           <meta charset="UTF-8">
           <title>{title}</title>
           <style>
           body {{
           line-height: 1em;
           letter-spacing: 0;
           font-size: 0.6rem;
           background: black;
           text-align: center;
           min-width: {size}em;
           }}
           </style>
          </head>
          <body>
           {body}
          </body>
          </html>
          '''
          class Converter(object):
           def __init__(self, word='田', size=100):
           self.word, self.size = word, size
           self.font = '<font color="{color}">{word}</font>'
           # 讀取url內容
           def __network(self, url):
           return request.urlopen(url).read()
           # 處理圖片信息
           def __handle(self, binary):
           img = Image.open(BytesIO(binary)) # 打開制圖片
           img.thumbnail((self.size, self.size)) # 壓縮圖片
           img.filter(ImageFilter.DETAIL) # 圖片增強
           return img
           # 分析圖片像素
           def __analysis(self, img):
           body = ''
           piexls = img.load()
           width, height = img.size
           for y in range(height):
           for x in range(width):
           r, g, b = piexls[x, y]
           body += self.font.format(
           color='#{:02x}{:02x}{:02x}'.format(r, g, b),
           word=self.word[((y * width + x) % len(self.word))]
           )
           body += '\n<br />\n'
           return body
           # 寫入文件內容
           def __writefile(self, file, str):
           fo = open(file, 'w', encoding='utf8')
           try:
           fo.write(str)
           except IOError:
           raise Exception
           finally:
           fo.close()
           # 生成html文檔
           def buildDOC(self, url, output):
           try:
           binary = self.__network(url)
           img = self.__handle(binary)
           html = TEMPLATE.format(
           title=self.word,
           body=self.__analysis(img),
           size=self.size
           ) # 向模板中填充數據
           self.__writefile(output, html)
           except Exception as err:
           print('Error:', err)
           return False
           else:
           print('Successful!')
           return True
          

          導入 img2html.Converter,調用 buildDOC(url, out) 方法

          程序會在當前目錄生成 index.html 文件,需要用瀏覽器打開后才可以看到效果。

          from img2html import Converter
          conv = Converter('卷福', 120)
          url = 'http://www.sznews.com/ent/images/attachement/jpg/site3/20140215/001e4f9d7bf91469078115.jpg'
          out = 'index.html'
          conv.buildDOC(url, out)
          

          轉換效果


          主站蜘蛛池模板: 日本在线一区二区| 无码少妇精品一区二区免费动态| 日韩AV无码一区二区三区不卡毛片 | 久久国产精品最新一区| 久久国产午夜精品一区二区三区| 国产一区二区精品久久91| 无码人妻精品一区二区三区不卡 | 成人一区二区免费视频| www.亚洲一区| 伊人精品视频一区二区三区| 中文字幕一区二区三区免费视频| 久久亚洲色一区二区三区| 果冻传媒一区二区天美传媒| 日本亚洲国产一区二区三区| 成人影片一区免费观看| 精品一区二区三区中文字幕| 色偷偷av一区二区三区| 精品动漫一区二区无遮挡| 国产成人欧美一区二区三区| 精品在线一区二区| 岛国无码av不卡一区二区 | 亚洲综合无码一区二区| 久久久久人妻一区精品色| 亚洲乱码一区二区三区国产精品 | 日韩精品中文字幕视频一区| 免费观看日本污污ww网站一区| 一区二区三区视频观看| 国产午夜精品免费一区二区三区 | 无码少妇一区二区三区| 任你躁国产自任一区二区三区| 国产一区二区三区不卡AV| 亚洲福利一区二区三区| 精品人妻系列无码一区二区三区| 亚洲欧洲专线一区| 亚洲电影一区二区三区| 国产一区二区三区手机在线观看| 日韩精品无码视频一区二区蜜桃| 无码乱码av天堂一区二区 | 四虎永久在线精品免费一区二区 | 无码中文字幕乱码一区| 国产一区内射最近更新|