Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
TML 基礎
非常簡單的HTML文檔
HTML 標題
HTML 段落
HTML 鏈接
HTML 圖片
實例解析
HTML 標題
HTML 標題
在html源碼中插入注釋
插入水平線
實例解析
HTML 段落
HTML 段落
更多段落
本例演示在 HTML 文檔中折行的使用。
HTML 格式化的某些問題。
實例解析
HTML 文本格式化
文本格式化
此例演示如何使用 pre 標簽對空行和空格進行控制。
此例演示不同的"計算機輸出"標簽的顯示效果。
此例演示如何在 HTML 文件中寫地址。
此例演示如何實現縮寫或首字母縮寫。
此例演示如何改變文字的方向。
此例演示如何實現長短不一的引用語。
文本下劃線與刪除線
實例解析
HTML 樣式
HTML Style 元素
背景色樣式
字體樣式,顏色,大小
文本對齊樣式
設置文本字體
設置文本字體大小
設置文本字體顏色
設置文本字體,字體大小,字體顏色
HTML使用不同樣式
沒有下劃線的鏈接
鏈接到一個外部樣式表
實例解析
HTML 鏈接
創建超級鏈接
將圖像作為鏈接
在新的瀏覽器窗口打開鏈接
鏈接到同一個頁面的不同位置
跳出框架
創建電子郵件鏈接
創建電子郵件鏈接 2
實例解析
HTML 圖像
插入圖像
從不同的位置插入圖片
排列圖片
本例演示如何使圖片浮動至段落的左邊或右邊。
制作圖像鏈接
創建圖像映射
實例解析
HTML 表格
簡單的表格
沒有邊框的表格
表格中的表頭
帶有標題的表格
跨行或跨列的表格單元格
表格內的標簽
單元格邊距(Cell padding)
單元格間距(Cell spacing)
實例解析
HTML 列表
無序列表
有序列表
不同類型的有序列表
不同類型的無序列表
嵌套列表
嵌套列表 2
定義列表
實例解析
HTML Forms 和 Input
創建文本域(Text fields)
創建密碼域
復選框
單選按鈕
簡單的下拉列表
預選下拉列表
本例演示如何創建一個文本域(多行文本輸入控件)。
創建一個按鈕
本例演示如何在數據周圍繪制一個帶標題的框。
帶有文本域與輸入域的表單
帶有復選框與提交按鈕的form表單
帶有單選框與提交按鈕的表單
發送郵件表單
實例解析
HTML iframe
內聯框架 (HTML頁面中插入框架)
實例解析
HTML 頭部元素
描述了文檔標題
HTML頁面中默認的URL鏈接
提供文檔元數據
實例解析
HTML 腳本
插入一個腳本
使用 <noscript> 標簽
實例解析
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
章作者分享了一種基于設備模板的移動端原型設計方法,相信能夠對你的原型設計工作帶來幫助,值得馬克。
在使用Axure設計移動端原型的應用方面,我總結出了兩種常用的方法。第一種是更適合在移動端進行演示的設計方法,大家可以參考我之前已經分享過的一篇教程:使用Axure打造最佳的移動端交互原型教程,使用這種方法輸出的原型在手機設備上進行演示時可以達到跟真實APP幾乎一致的展示效果及交互體驗。在今天我將分享另外一種基于設備模板的移動端原型設計方法。
什么是基于設備模板的移動端原型設計方法?簡而言之就是在Axure的編輯界面中放置對應的機型模板,使輸出的原型達到更規范和真實的演示效果。其實這是一種很常見的移動端原型的設計方法,很多同行在設計原型的時候也都用過。這篇分享教程將對個設計方法進行了總結和梳理,并基于這個方法制作了一套可快速復用的模板。這套模板具有幾個方面的特點:
● 結構化,根據APP界面結構進行搭建;
● 標準化,非常方便進行編輯和維護;
● 高保真,可高度還原移動端交互效果;
在本篇分享的結尾我會提供模板的Axure源文件下載,其中包含了最新的IPhoneX和IPhone8等多套IOS設備機型,以及一些常見的界面元素和交互效果。在開始正式的介紹之前,大家可以查看使用這套模板還原IOS中兩款官方應用的設計演示。
由于這套模板是基于IOS系統進行設計的,所以相關界面元素和交互方式均以IOS為標準。目前主流的移動端系統除了IOS還有Android,這兩種系統設計標準和交互方式其實是存在一些差異的,不過目前市面上大部分APP在設計時并沒有爭對兩種系統做單獨的處理。
所以如果沒有特珠需求的話,我們一般也只需要輸出一套原型方案就可以了,不過設計過程中需要盡量兼顧這兩個主流的系統。當然,如果你的產品明確需要按照Android的系統規范來設計,你也可以參照本教程設計一套Android的原型模板,相關交互方式可以參照Android版的交互指南規范。
在開始介紹模板的搭建和使用方法之前,需要先對APP的界面結構做一個簡單的介紹,熟悉了界面結構可以方便我們后續的設計。常見APP的界面主要由以下元素或組件組成:
狀態欄顯示設備的關鍵信息,包含設備模型或網絡提供商、網絡信號強度、電池使用量、時間等。在特殊界面中可以對狀態欄做隱藏處理,或根據需要自定義狀態欄背景。
導航欄位于app內容區的上方,系統狀態欄的下方,并且提供在一系列頁面中的導航能力。可在導航欄中顯示當前視圖的標題,如果標題非常冗長且無法精簡,可以空缺,避免用過多的元素填滿導航欄。導航欄中可以添加文字和圖標控件,相關控件的可點擊區域需要大于控件的可視大小。
內容區域根據需要進行自定義設計,常見的設計形式有菜單列表、圖標列表、卡片列表、圖文組合等。
標簽欄位于APP底部,方便用戶在不同功能模塊之間進行快速切換。標簽欄一般用作APP的一級分類,數量控制在3-5個之間。建議使用Badge進行提示,讓用戶知道有內容更新。
工具欄一般會出現在視圖的的底部,提供給用戶相關可操作的功能按紐。如,郵件應用程序里的收件箱欄中有刪除、分享、答復等等。
移動端的彈出層根據彈出方式不同,共分為模態窗口、動作面板、彈出面板等幾種不同的類型。在實際使用中,可根據界面的交互方式選擇對應的類型。
一種輕量級反饋提示,可以用來顯示不會打斷用戶操作的內容,適合用于頁面轉場、數據交互的等場景中。一次只顯示一個輕提示,有圖標的提示字數為4-6個,沒有圖標的輕提示字數不宜超過14個。
列表視圖是移動端APP中一種通用的界面元素。很多應用程序在一定程度上,都有使用表視圖來顯示數據列表。常見的例如IOS的聯系人應用中聯系人信息列表,另外還有Mail中使用列表視圖顯示郵箱和郵件。列表視圖不僅可以用來顯示文本數據,也可以用來呈現圖像數據。
以上是豆瓣APP的一個界面截圖示例,界面的結構用顏色進行了區分,從上至下分別為:狀態欄、導航欄、內容區、標簽欄。
在介紹完APP的界面結構之后,接下來說明一下模板的搭建方法。在本篇教程的結尾會提供了已經制作好的模板的文件,大家可以下載并參考本部分介紹進行使用,也可以參照介紹制作自己的原型模板。
在制作模板時需要用到對應的機型設備的圖片素材,可以通過Dribbble等設計分享平臺找到對應的素材文件,然后對素材做一些簡單的處理。處理的過程首先是去掉多余的元素,只保留機型設備的框架圖片。另外還需要對圖片的尺寸進行調整,例如在制作手機等移動端模板時我們將內容區域定為375px,需要根據所定的內容區域對圖片的尺寸進行相應的調整。
為什么模板的內容區域是375px?這個問題我在上篇教程中進行過介紹,所以不再進行展開說明。但是需要記住的這個尺寸是一個重要的標準,后續在設計過程中相關元件的寬度尺寸都需要參照這個標準。機型設備的圖片素材準備好之后,我們在Axure中創建一個對應的母版,然后將機型設備圖片拖入到母版中。母版的名稱可以按該機型設備的名稱命名,后面在使用時在新建的頁面中拖入該母版即可。
下一步需要創建前面介紹過的APP界面中常見元素或組件,首先大家可以看一下這張圖片中已經創建好的模板,其中包含了機型母版、輕提示、彈層、導航欄、標簽欄、內容框架等元素。
在這個模板頁面的概要視圖中可以看到相關的對象,所有對象我都創建了一個對應的動態面板。這樣的處理主要出于兩個方面的考慮,一是方便對相關元素進行編輯維護,二是相關對象的顯示是有順序的,這樣可以方便在概要視圖中進行排序處理。
界面的主要內容在內容框架動態面板中進行編輯和維護,由于該動態面板設置了自動顯示滾動條,如果你的界面內容超出了一屏,在演示時可以通過在內容框架區域滾動鼠標滾輪查看更多內容。
模板中的界面元素的尺寸并沒有非常嚴格的標準,以下尺寸是我根據比例進行設置的,僅供參考。IphoneX狀態欄:44px、IphoneX標簽欄:80px、Iphone8狀態欄:28px、IphoneX標簽欄:60px、導航欄:40px。另外,內容區域的高度因為機型設備的素材圖片不統一可能略有差異,基本上可以忽略。
在設計原型時建議每一個界面創建一個對應的頁面,通過添加頁面鏈接進行界面跳轉,這樣方便對原型進行編輯和維護。不建議將多個界面用動態面板堆砌在一起頁面內,這樣會使輸出的原型在演示時出現卡頓現象。
在概要視圖中可以看到相關元素對應動態面板的層級順序,在使用該模板的時候請盡量參照此順序,否則可能在演示時出現顯示錯誤的情況。
為了方便維護可以將標簽欄創建為母版,然后添加到需要顯示標簽欄的頁面中。另外,在對應的頁面中需要顯示對應的標簽選中效果,只需要在該頁面中的標簽欄動態面板中添加一個選中效果的標簽元件。
如果頁面中添加了標簽欄或工具欄,由于標簽頁的動態面板在內容框架的動態面板之上,在演示時會出現內容有一部分被擋住的情況。可以創建一個高度為100px的熱區元件為母版,將母版拖入對應的頁面底部,用來解決內容區域被擋住的問題。
經常有朋友向我咨詢如何設計出更漂亮美觀的原型,雖然原則上原型能完整的體現出需求細節即可,好看并不是我們在原型輸出時應該關注的重點,但是如果能滿足說明需求的同時能把原型做得更漂亮一些更好,這也算是體現專業程度和工作態度的一個方面,而且很多人對自己的輸出物也是有強烈的美感追求的。
其實原型設計不需要了解太復雜的設計方法,只要掌握一點簡單的技巧就能達到美觀的效果,同時能讓整體更統一和標準。在分享的這套模板中包含了一些基本的設計元素,我下面對其中的一些規范細節進行說明,供大家進行參考。
Axure中的配色板提供了一些常用的顏色色值,可用作一些常用元素的顏色配色。例如截圖中標注1中的縱向的灰色色值可用于相關字體元素的顏色,標注2中橫向的灰色色值可用于相關元素的背景和線條的顏色。另外,點擊標注3中的更多按紐,可以將其它的常用色值加入到自定義顏色中,方便快速的使用。
在以前的教程中已經介紹過輔助線的使用方法,合理的使用輔助線可以幫助我們提升設計效率,同時能讓輸出的原型效果更標準,所以強烈建議大家在設計過程中使用。以下是模板中內容框架編輯區域的截圖,是我常用使用輔助線用來排版的方式。截圖中的輔助線均為橫向x軸輔助線,可以看到其中共有4條,分別介紹一下它們的作用和位置:
這些輔助線的用法只是作為參考,可以根據自己的需要新建對應的輔助線。鼠標光標移動到編輯區域的左側和頂部的標尺區域,按住鼠標左鍵并往編輯區域拖動時,就可以生成橫向x軸或縱向y軸的輔助線,然后將輔助線拖動到對應的位置即可。輔助線還有一個特性就是當拖動元件靠近它時,元件會自動吸附到輔助線的邊緣達到快速對齊的效果。
移動端原型中最常用的交互效果就是彈出層和輕提示兩種,模板中已經包含了這種兩交互效果的相關元件和事件,這里再單獨簡單的介紹一下。
在模板頁面的概要視圖中可以看到名為“提示”的動態面板,需要顯示的提示信息在這個動態面板中編輯就可以了。當前的動態面板中有一個“操作成功”的提示狀態,如果在一個頁面中顯示多個提示,可以新增對應的狀態然后修改相關的提示內容。
選中提示的動態面板的狀態右擊選擇復制狀態可以快速創建新的提示。建議對每個對應的提示狀態進行命名,這樣方便后續進行管理。關于輕提示的基本使用規范請參照前面的介紹內容。
Toast提示的顯示方式設置很簡單,只需要在對應的元件事件上加入以上的交互動作。首先設置提示動態面板中對應的狀態,然后設置顯示動態面板,顯示時有一個逐漸的動畫效果。
Toast提示顯示以后會在3秒后自動逐漸隱藏,模板中的這個交互動作已經加在提示動態面板的顯示時事件中了,不需要再單獨的進行設置。
移動端的彈層共分為模態窗口、動作面板、彈出面板等幾種不同的類型。在模板頁面的概要視圖中可以看到名為“彈層”的動態面板,可以根據需要創建更多其它的彈層狀態,還能在對應的面板狀態屬性中設置透明背景的遮罩效果。
上面截圖中的為比較常見的模態窗口彈層效果,設置方式是在對應的元件事件上加入以上的交互動作。另外,根據模態窗口、動作面板、彈出面板這幾種彈層類型的彈出方式不同,需要設置顯示時為向上滑動和逐步等動畫效果。
最后介紹一下如何實現內容區域滾動時,導航欄自動切換的交互效果。首先需要在導航欄的動態面板中創建對應的狀態,然后選中內容框架動態面板,在它的滾動時事件中按照上面的格式加入對應的條件判斷即可。
在這個設置用到了條件判斷和函數,條件的詳細設置見上方的截圖。它的原理是當內容框架垂直滾動高度大于70時設置導航欄動態面板的顯示狀態為2,當內容框架垂直滾動高度大小于70設置導航欄動態面板的顯示狀態為1。其中用到的This.scrollY函數是獲取當前元件的直滾動高度,70的值可以根據需要自己設置。
好了,到此這篇基于設備模板的移動端原型設計方法的分享基本介紹完了。最后提供的是iPhoneX And iPhone8 Mockup 原型模板的源文件下載,大家可以結合本文中的相關介紹進行使用。
最后再給大家分享一套本人整理設計的移動端元件庫,這套元件庫中的相關元件是可以在這個模板中復用的,后續也會不斷的進行優化和完善,有需要的朋友可以關注一下。
在學習和工作中,我們經常需要使用日志來記錄程序的運行狀態和調試信息。而為了更好地區分不同的日志等級,我們可以使用不同的顏色來呈現,使其更加醒目和易于閱讀。
在下圖運行結果中,我們使用了 colorlog 庫來實現彩色日志輸出。通過定義不同日志等級對應的顏色,我們可以在控制臺中以彩色的方式顯示日志信息。例如,DEBUG 級別的日志使用白色,INFO 級別的日志使用綠色,WARNING 級別的日志使用黃色,ERROR 級別的日志使用紅色,CRITICAL 級別的日志使用藍色。
但是在查看日志文件時,我們會發現日志信息是系統默認的字體顏色,并且前后多了一些特殊符號,例如 [32m 等。這是因為在控制臺中使用的是 ANSI 轉義序列來實現彩色文本效果,而這些特殊符號是 ANSI 轉義序列的一部分。如下圖所示:
現在有一個需求,在前端頁面直接查看日志內容并還原彩色文本效果,因此,我們將進行以下內容講解:
本文代碼點擊此處跳轉,往期系列文章請訪問博主的 項目實戰專欄,博文中的所有代碼全部收集在博主的 GitHub 倉庫中;
ANSI 轉義序列是美國國家標準化組織(American National Standards Institute,ANSI)制定的標準,是一種用于控制文本終端顯示的特殊字符序列。它們以 3[ 開頭,以字母和數字組合的形式表示不同的控制功能。
ANSI 轉義序列可以用于控制文本的顏色、背景色、文本樣式(如粗體、斜體等)、光標位置、清屏等操作。通過在輸出文本中插入適當的 ANSI 轉義序列,可以實現豐富的終端顯示效果。
以下是一些常用的 ANSI 轉義序列示例:
需要注意的是,ANSI 轉義序列在不同的終端和操作系統上的支持程度可能會有所不同。在某些終端中,可能無法正確解釋和顯示 ANSI 轉義序列。
我們以 3[31m 和 3[42m 為例,輸出一個綠底紅字的句子 Hello World! --sidiot.,代碼如下所示:
log.debug("3[42m3[31mHello World! --sidiot.3[0m3[0m")
運行結果:
這里的話,我們使用 Python 的 http.server 模塊來啟動一個簡單的 HTTP 服務器。
比較快捷的方式就是在日志文件夾中打開終端,輸入 python -m http.server 8888 即可,運行結果如下所示:
不過這種方式相對來說還是不太安全的,因此我們可以通過設置白名單的方式,來規避一些潛在的安全隱患,代碼如下所示:
import http.server
import socketserver
class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
def check_client_address(self):
# 設置白名單,只允許特定的IP地址或主機訪問
whitelist = ['127.0.0.1', 'localhost']
client_address = self.client_address[0]
if client_address not in whitelist:
self.send_response(403)
self.end_headers()
self.wfile.write(b'Forbidden. Please contact sidiot.')
return False
return True
def do_GET(self):
if not self.check_client_address():
return
super().do_GET()
with socketserver.TCPServer(('0.0.0.0', 8888), HTTPRequestHandler) as httpd:
httpd.serve_forever()
目前本機的 IP 為 192.168.124.23,當我們以 127.0.0.1 來訪問 8888 服務端口時,訪問是成功的,但是當我們用 192.168.124.23 來訪問服務端口時,訪問是失敗的。
運行結果:
現在我們點擊文件,它會直接通過瀏覽器直接下載,但是我們需要的是在網頁上能夠直接閱覽文件中的內容,因此我們可以從 do_GET() 下手。
我們可以設計一個根據傳入的文件名參數,讀取本地文件并作為響應結果進行返回的方法,然后根據一定的規則進行觸發,代碼如下所示:
def read_file(self):
try:
self.send_response(200)
self.send_header("Content-Type", "text/plain; charset=utf-8")
self.end_headers()
self.wfile.write(open(self.path[6:], 'rb').read())
except FileNotFoundError:
self.send_response(404)
self.end_headers()
self.wfile.write(b'File not found!')
def do_GET(self):
if self.check_client_address():
if self.path.startswith("/?log="):
self.read_file()
else:
super().do_GET()
上述代碼通過檢查請求的資源路徑來處理 GET 請求。如果請求的資源路徑前綴是 /?log=,且是當前目錄下存在的日志文件,它會讀取文件并將其內容作為響應發送。否則,它會使用基類的默認行為處理普通的 GET 請求。
運行結果:
至此,我們已經實現了前端頁面直接查看日志內容的功能。
原理分析
當我們想要在前端頁面展示 ANSI 字體的彩色效果時,我們只需要簡單地將 ANSI 轉義序列轉換成相應的 HTML 代碼就可以實現了。這個轉換過程實際上可以通過編寫一個 Python 函數來實現,該函數可以接受包含 ANSI 控制碼的字符串作為輸入,并將其轉換為帶有相應樣式的 HTML 代碼輸出,代碼如下所示:
def convert_ansi_to_html(ansi_text):
ansi_to_html = {
'\x1b[31m': '<span style="color: red;">',
'\x1b[42m': '<span style="background-color: green;">',
...,
}
html_text = re.sub(r'\x1b[[0-9;]*m', lambda match: ansi_to_html.get(match.group(0), ''), ansi_text)
return html_text
if __name__ == '__main__':
ansi = "\033[42m\033[31mHello World! --sidiot.\033[0m\033[0m"
print(ansi)
html = convert_ansi_to_html(ansi)
print(f"convert content: {html}")
需要注意的是,在 ANSI 轉義序列中,\x1b 和 3 都代 表ASCII 碼中的 Escape 字符,用于開始一個轉義序列。
運行結果:
使用 ansiconv 轉換
接下來,我們借助已有的庫函數 ansiconv 進行 ANSI 的轉換。
通過 pip 進行安裝:
pip install ansiconv
根據 ansiconv 的官方文檔使用其中的三個方法 to_plain(),to_html() 和 base_css() 來實現在前端頁面展示 ANSI 字體的彩色效果,代碼如下所示:
import ansiconv
ansi = "\033[42m\033[31mHello World! --sidiot.\033[0m\033[0m"
print(f"Ansi: {ansi}")
plain = ansiconv.to_plain(ansi)
html = ansiconv.to_html(ansi)
print(f"Convert Plain: {plain}")
print(f"Convert HTML: {html}")
在 base_css() 中會有相關的 CSS 映射表,如下所示:
css_rule('.ansi31', color="#FF0000"),
css_rule('.ansi42', background_color="#00FF00"),
運行結果:
研究 ansiconv 源碼
我們將通過研究 ansiconv 的源碼,以便深入了解它是如何將 ANSI 轉換成純文本或 HTML 代碼的工作原理。
to_plain() 的源碼如下所示:
上述代碼使用正則表達式匹配字符串中的 ANSI 轉義序列,并將其替換為空字符串,從而得到不包含轉義序列的純文本。
正則表達式的含義如下:
我們通過 re.findall() 方法來獲取所有匹配的結果,這樣夠清晰地捕獲所有符合條件的匹配項,從而更好地理解 ansiconv 是如何進行 ANSI 到純文本的轉換,代碼如下所示:
ansi = "\033[42m\033[31mHello World! --sidiot.\033[0m\033[0m"
print(re.findall(r'\x1B[[0-9;]*[ABCDEFGHJKSTfmnsulh]', ansi))
運行結果:
to_html() 的源碼如下所示:
上述代碼將 ANSI 字符串分割成塊,并對每個塊調用 _block_to_html() 函數進行解析和轉換,同時還處理了 ANSI 命令 "A",模擬向上移動光標的行為。如果 replace_newline 為 True,則 HTML 字符串中的換行符 \n 將替換為 <br />\n 以保留 HTML 輸出中的換行符。
其中 _block_to_html() 的源碼如下所示:
上述代碼使用正則表達式匹配 ANSI 代碼,并根據匹配結果生成對應的 HTML 代碼。
正則表達式的含義:
我們可以通過運行源碼里的部分代碼來幫助理解,代碼如下所示:
text = ("\x1B[0;32;45msidiot\n"
"\033[42m\033[31mHello World! --sidiot.\033[0m\033[0m")
print(text)
blocks = text.split('\x1B')
print(blocks)
for block in blocks:
match = re.match(r'^[(?P<code>\d+(?:;\d+)*)?(?P<command>[Am])', block)
if match is not None:
print("\nmatch:", match, ", code:", match.group('code'), ", command:", match.group('command'))
運行結果:
實際應用
通過深入理解 ANSI 轉換思路和 ansiconv 源碼,我們可以為之前的 http.server 服務帶來全新的優化。
首先,將原先的 read_file() 方法進行優化,代碼如下所示:
def read_file(self, content_type, file_io):
try:
self.send_response(200)
self.send_header("Content-Type", f"{content_type}; charset=utf-8")
self.end_headers()
self.wfile.write(file_io)
except FileNotFoundError:
self.send_response(404)
self.send_header("Content-Type", "text/plain; charset=utf-8")
self.end_headers()
self.wfile.write(b'File not found!')
上述代碼通過接收 content_type 和 file_io 兩個參數,實現將自定義內容作為響應返回給客戶端。
然后修改請求路徑,使其能夠返回純文本和 HTML 兩種不同類型的內容,代碼如下所示:
def do_GET(self):
if self.check_client_address():
if self.path.startswith("/?plain="):
file = open(self.path[8:], 'rb').read()
plain = ansiconv.to_plain(file.decode('UTF-8'))
self.read_file("text/plain", plain.encode())
elif self.path.startswith("/?html="):
file = open(self.path[7:], 'rb').read()
conv = ansiconv.to_html(file.decode('UTF-8'))
css = ansiconv.base_css()
html = """
<html>
<head><style>{0}</style></head>
<body>
<pre class="ansi_fore ansi_back">{1}</pre>
</body>
</html>
""".format(css, conv)
print(html)
self.read_file("text/html", html.encode())
else:
super().do_GET()
這里要注意的是,需要設置 CSS 樣式,不然 class 類是無法進行渲染的。
純文本運行結果:
HTML 運行結果:
在本文中,我們探討了如何實現將 ANSI 字體在前端頁面進行彩色展示的方法。在前端頁面中直接顯示 ANSI 轉義序列是不起作用的,因為瀏覽器不會解析和處理這些轉義序列。
為了在前端頁面實現彩色展示,我們介紹了一種方法,即將 ANSI 轉義序列轉換為對應的 HTML 代碼。通過解析 ANSI 轉義序列并將其轉換為適當的 HTML 標簽和樣式,我們可以在前端頁面上還原彩色文本的效果。
在本文中,我們使用了 Python 中的 ansiconv 庫來實現 ANSI 轉換。該庫提供了 to_plain 和 to_html 兩個方法,分別用于將 ANSI 轉義序列轉換為純文本和 HTML 代碼。我們還展示了如何使用這些方法來轉換 ANSI 字符串,并在前端頁面上顯示轉換后的結果。
通過本文的介紹,讀者可以了解到如何在前端頁面實現彩色文本的展示,從而提升用戶體驗和可讀性。無論是在日志查看器、終端模擬器還是其他需要展示彩色文本的應用中,這種技術都能發揮重要作用。
以上就是 從終端到瀏覽器:實現 ANSI 字體在前端頁面的彩色展示 的所有內容了,希望本篇博文對大家有所幫助!歡迎大家持續關注我的博客,一起分享學習和成長的樂趣!?
作者:sidiot
鏈接:https://juejin.cn/post/7381820436274184202
*請認真填寫需求信息,我們會在24小時內與您取得聯系。