整合營銷服務商

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

          免費咨詢熱線:

          使用CSS3 box-decoration-brea

          使用CSS3 box-decoration-break特性實現多行文本樣式

          文章中的長文本被自動斷行為多行文本時,其樣式可能會出乎我們的設計。本文介紹如何使用CSS3中的box-decoration-break特性來處理多行元素樣式。

          按照規范定義,box-decoration-break被用來處理分頁(page-break)或斷行(line-break)時元素的樣式。默認情況下,當我們設置元素背景(background)或邊界(border)時,這個樣式被應用在整個元素上,

          即使被斷行也是如此,比如下面的塊元素:

          樣式代碼如下:

          div.test{background: orange;}

          塊狀元素的樣式被應用在整個block上,結果如下:

          如果我們想實現下面的背景效果:

          可以把塊元素(block)換成行內元素(inline):

          span.test{background: orange;}

          可以看到盡管被斷成了多行,border和padding樣式仍然被當作整行作用在文本上。如果要想把樣式應用到每個斷行文本上,即如下的預期效果:

          這個時候就需要使用CSS3新引入的“實驗”特性:box-decoration-break,把box-decoration-break設置為clone,即可獲得上面的效果,其實現原理是把長文本切分成多個短文本,然后分別在每個短文本上應用樣式。

          IV+CSS標準化布局的優勢

          使用“DIV+CSS”對網站進行布局符合W3C標準,采用這種方式布局通常是為了說明與HTML表格定位方式的區別。因為現在的網站設計標準中,已經不再使用表格定位技術,而是采用DIV+CSS的方式實現各種定位。通過使用div盒子模型結構將各部分內容劃分到不同的區塊,然后用css來定義盒子模型的位置、大小、邊框、內外邊距、排列方式等。簡單地說,div用于搭建網站結構(框架)、css用于創建網站表現(樣式/美化)。該標準簡化了HTML頁面代碼,獲得一個較優秀的網站結構,有利于日后網站維護、協同工作和便于搜索引擎抓取。當然并不是所有的網頁都需要用div布局,例如數據頁面、報表之類的頁面,還是使用HTML的表格會比較方便,web標準里并沒有說要拋棄table。

          DIV+CSS標準的優點

          • 表現和內容相分離
          • 代碼簡潔,提高頁面瀏覽速度
          • 易于維護和改版
          • 提高搜索引擎對網頁的索引效率

          各個瀏覽器之間的差異

          • 安裝多種瀏覽器,對比差異進行調試
          • 在FF瀏覽器中安裝firebug

          Firebug 為你的 Firefox 集成了瀏覽網頁的同時隨手可得的豐富開發工具。你可以對任何網頁的 CSS、HTML 和 JavaScript 進行實時編輯、調試和監控

          就算在不同的瀏覽器中效果不完全一致,也要做到大概一至

          “無意義”的元素div和span

          • HTML只是賦予內容的手段,大部分HTML標簽都有其意義(例如,標簽p創建段落,h1標簽創建標題等等)的,然而div和span標簽似乎沒有任何內容上的意義,聽起來就像一個泡沫做成的錘子一樣無用。但實際上,與CSS結合起來后,它們被用得十分廣泛。你所需要記住的是span和div是“無意義”的標簽。它們的存在純粹是應用樣式,所以當樣式表失效時它就沒有任何的作用
          • 它們被用來組合成一大塊的HTML代碼并賦予一定的信息,大部分用類屬性class和標識屬性id與元素聯系起來。span和div的不同之處在于span是內聯的,用在一小塊的內聯HTML中。而div(division)元素是塊級的(簡單地說,它等同于其前后有斷行),用于組合一大塊的代碼,為HTML 文檔內大塊的內容提供結構和背景的元素,可以包含段落、標題、表格甚至其他部分,這使div便于建立不同集成的類。
          • div的起始標簽和結束標簽之間的所有內容都是用來構成這個塊的,其中所包含元素的特性由div標簽的屬性來控制,或者是通過使用樣式表格式化這個塊來進行控制。

          盒子模型

          每個HTML元素都可以看作一個裝了東西的盒子,盒子具有寬度(width)和高度(height),盒子里面的內容到盒子的邊框之間的距離即填充(padding),盒子本身有邊框(border),而盒子邊框外和其他盒子之間,還有邊界(margin)。

          布局中的主要樣式

          • font
          • line-height
          • color
          • margin
          • padding
          • border
          • text-align
          • background

          定位屬性

          區塊屬性(區塊模型)

          區塊框浮動

          雖然使用絕對定位可以實現頁面布局,但由于調整某個區塊框時其它區塊的位置并不會跟隨著改變,所以并不是布局的首選方式。而使用浮動的區塊框可以向左或向右移動,直到它的外邊緣碰到包含它區塊的邊框或另一個浮動框的邊框為止。并且由于浮動框不在文檔的普通流中,所以文檔的普通流中的區塊框表現得就像浮動框不存在一樣。

          設置浮動

          行框和清理

          在進行頁面布局時,經常需要設置多個區塊框并列在一行中排列。最常見的方式就是使用float屬性,再通過left或right值移動區塊框向左或向右浮動。但當前面并列的多個區塊框總寬度不足包含框的100%時,就會在行框中留出一定的寬度,而下面的某個區塊框又恰好滿足這個寬度,則很可能會向上提,和上一行并列的區塊框在同一行排列。而這不并是我們想要的結果,所以可以使用clear屬性解決這一問題,該屬性的值可以是 left、right、both 或 none,它表示框的哪些邊不應該挨著浮動框。

          使用區塊框設計頁面布局

          • 區塊居中設計

          高度和寬度固定的區塊居中(position)

          高度和寬度可變的區塊居中(margin)

          • 布局頁面居中
          • 設置兩列浮動的布局
          • 設置三列浮動的布局
          • 設置多列浮動的布局

          零寬空格的實現原理

          零寬空格(Zero Width Space, ZWSP)是一個特殊的Unicode字符,編碼為U+200B。它是一個不可見的字符,其寬度為零,不占用任何可見空間。在文本處理系統中,盡管它在視覺上是不可見的,但它在文本中確實存在,并可以作為潛在的斷點,即允許在此位置斷開行。這意味著如果一行文本過長需要自動換行時,文本可以在零寬空格的位置進行折行,而不影響單詞的完整性。

          應用場景

          1. 文本格式化和斷行控制
          2. 在不允許在單詞內自動換行的語言或特定格式中,零寬空格可以插入到長單詞或URL中,允許這些文本在不影響閱讀的情況下進行合適的換行。
          3. 在HTML和其他Web內容中,零寬空格常用于長無空格字符串的斷行控制。
          4. 隱秘標記和文本隱藏
          5. 零寬空格可以用于在文本中隱藏信息,因為它在視覺上不可見。例如,可以通過在特定位置插入零寬空格來編碼額外信息,這種技術有時用于數字水印或隱藏的標記。
          6. 在某些安全領域,零寬字符用于對抗自動文本分析工具,通過在文本中嵌入這些字符來“污染”數據,使自動處理變得更困難。
          7. 程序和網頁開發
          8. 在編程中,特別是在Web開發中,零寬空格可以幫助處理和顯示不斷行的長字符串,如路徑或特定代碼段。
          9. 在用戶界面開發中,零寬空格可以用來調整或微調文本顯示,盡管這通常不是最佳實踐。
          10. 排版和設計
          11. 在復雜的排版設計中,設計師可能使用零寬空格來精確控制文本的布局和行間距,尤其是在多語言排版中。
          12. 在電子書和PDF文檔中,零寬空格可以幫助實現更優雅的文本格式,尤其是在處理多種語言和腳本時。

          注意事項

          雖然零寬空格在許多情況下都是有用的,但它也可能引起問題,特別是在文本處理和數據清洗中。不注意這些看不見的字符可能導致數據的意外錯誤、搜索失敗、數據不一致等問題。因此,在處理來自不同源的文本數據時,了解和考慮這些不可見字符是非常重要的。

          2 在Python中處理零寬空格

          (Zero Width Space, Unicode編碼為U+200B)通常可以通過字符串的替換操作來實現。這里有幾種常見的方法來去除字符串中的零寬空格:

          方法1: 使用str.replace()

          str.replace() 方法是去除字符串中特定字符的一種直接方式。你可以使用它來替換零寬空格為一個空字符串:

          original_string="This is a test\u200b string with zero width space."
          cleaned_string=original_string.replace('\u200b', '')
          print(cleaned_string)
          

          這個方法將去除字符串中所有的零寬空格。

          方法2: 使用正則表達式

          如果你需要去除字符串中的多種不可見字符,包括零寬空格,使用正則表達式是一個更強大的選擇。Python的 re 模塊可以幫助實現這一功能:

          import re
          
          original_string="This is a test\u200b string with zero width space."
          cleaned_string=re.sub(r'\u200b', '', original_string)
          print(cleaned_string)
          

          這個方法同樣可以針對多種類型的不可見字符進行調整,只需修改正則表達式即可。

          方法3: 使用translate()

          另一個選項是使用字符串的 translate() 方法。這種方法可以在一個步驟中刪除字符串中的多個不同類型的字符:

          original_string="This is a test\u200b string with zero width space."
          remove_chars=dict.fromkeys([0x200b], None)
          cleaned_string=original_string.translate(remove_chars)
          print(cleaned_string)
          

          這里,我們創建了一個字典,指定要刪除的字符(零寬空格的Unicode編碼是0x200B)映射到 None,這意味著這些字符將被刪除。

          方法4: 清除所有Unicode控制字符

          去除字符串中所有的Unicode控制字符(包括但不限于零寬空格),可以使用更通用的正則表達式:

          import re
          
          original_string="This is a test\u200b string with zero width space."
          cleaned_string=re.sub(r'[\u200B-\u200D\uFEFF]', '', original_string)
          print(cleaned_string)
          

          這里,正則表達式涵蓋了多個常見的Unicode控制字符。

          3 常見的Unicode控制字符

          在 Unicode 中,\u200B, \u200C, \u200D 以及 \uFEFF 分別代表一些特定的不可見字符,它們的用途和行為在文本處理中各有不同。這里是每個字符的詳細說明:

          \u200B - 零寬空格 (Zero Width Space, ZWS)

          • Unicode 編碼:U+200B
          • 描述:一個不可見的分隔符,不占任何空間,用于可能的換行點。它允許在其點處斷行,而不顯示任何字符。

          \u200C - 零寬非連接符 (Zero Width Non-Joiner, ZWNJ)

          • Unicode 編碼:U+200C
          • 描述:在需要字符獨立顯示而不是與前后字符聯合時使用。在一些書寫系統如阿拉伯語和波斯語中非常有用,用于控制字符的連寫表現。

          \u200D - 零寬連接符 (Zero Width Joiner, ZWJ)

          • Unicode 編碼:U+200D
          • 描述:用于促使兩個字符生成一個單獨的合成字符。常用于一些復雜書寫系統的特定字形顯示,或在新興的表情符號序列中,如家庭組合或膚色變化的表情符號。

          \uFEFF - 字節順序標記 (Byte Order Mark, BOM)

          • Unicode 編碼:U+FEFF
          • 描述:在 UTF-16 和 UTF-32 的編碼序列中用作字節序的標記。在 UTF-8 中,雖然不必要,但有時用作標識文件是以 UTF-8 編碼的標記。當用作普通文本中時,它通常被視為零寬不換行空格 (Zero Width No-Break Space)。

          用途和影響

          這些字符在現代文本處理和網絡內容中扮演著關鍵角色,尤其是在多語言和多腳本環境中,它們幫助實現了細微的文本格式控制和視覺表現。然而,它們也可能導致文本處理上的問題,比如字符串匹配失敗、文本渲染異常等,因此在處理文本數據時需要特別注意這些不可見字符的存在。在數據清洗和預處理階段移除或適當處理這些字符,是確保數據質量和應用穩定性的重要步驟。


          主站蜘蛛池模板: 日本一区二区三区在线观看视频| 成人精品一区久久久久| 国产综合精品一区二区三区| 久久久av波多野一区二区| 麻豆精品人妻一区二区三区蜜桃| 曰韩精品无码一区二区三区| 精品日韩一区二区| 亚洲国产av一区二区三区丶| 久久se精品一区二区影院| 国产色欲AV一区二区三区| 精品欧洲AV无码一区二区男男| 成人一区二区免费视频| 亚洲性日韩精品国产一区二区| 一区二区无码免费视频网站| 亚洲视频一区二区在线观看| 亚洲AV日韩AV天堂一区二区三区 | 亚洲一区二区三区影院| 日韩精品一区二区三区视频| 国产伦理一区二区三区| 天堂成人一区二区三区| 无码一区二区波多野结衣播放搜索 | 日亚毛片免费乱码不卡一区| 美日韩一区二区三区| 在线免费观看一区二区三区| 国产成人久久一区二区不卡三区| 欧美日韩国产免费一区二区三区 | 日本一区二区不卡在线| 亚洲夜夜欢A∨一区二区三区| 国产一区二区三区在线视頻| 久久99久久无码毛片一区二区| 久久国产高清一区二区三区| 国产成人精品一区二区三区无码| 丰满人妻一区二区三区免费视频| 亲子乱av一区二区三区| 无码国产精品一区二区免费3p | 久久精品国产一区| 亚洲AV美女一区二区三区| 制服丝袜一区在线| 又硬又粗又大一区二区三区视频| 亲子乱av一区二区三区| 91一区二区三区四区五区 |