SO熱門問答:可以為半個字元應用CSS樣式嗎?

Carman發表於2014-06-13

Mathew MacLean 提問

我正在尋找:

一種方法為半個字元應用樣式(在這種情況下,一半的字母是透明的)。

我目前已經搜尋並嘗試的(不走運)

  • 渲染一半字元/字母的方法
  • 用CSS或JavaScript渲染字元的一部分
  • 對一個字元的50%應用CSS

以下是我嘗試實現的一個例子:

01

這個是否有一個CSS或者JavaScript的解決方法存在,還是我必須採用圖片的方法?我不願意採用圖片的方法,因為文字將最終是動態生成的。

 

來自 Arbel 的最佳回答:(1280+ 贊)

已做成一個外掛,放 Github 上了!

演示 | 下載 Zip | Half-Style.com (重定向到GitHub)


  • 單個字元的純css
  • JavaScript用來自動覆蓋文字或多字元
  • 保護文字的可讀性,盲人或視障人士使用的螢幕閱讀器可識別

第一部分: 基本解決方案

演示: http://jsfiddle.net/pd9yB/817/


這種方法用於任何動態文字或單個字元,並且都是自動適用的。所有你需要做的就是在目標文字上新增一個class,剩下的就解決了。

同時,保留了原文的可訪問性,可以被盲人或視障人士使用的螢幕閱讀器識別。

單個字元的實現

純CSS。所有你需要做的就是把.halfStyle class用在每個你想要渲染一半樣式字元的元素上。

對於每個包含字元的span元素,你可以新增一個data屬性,比如data-content=”X”,並且在偽元素上使用content:attr(data-content);這樣,.halfStyle:before class將會是動態的,你不需要為每個例項進行硬編碼

任意文字的實現

只需新增textToHalfStyle class到包含文字的元素上。


CSS:

HTML


它會自動生效,只要新增 textToHalfStyle class到包含文字的元素上。

jQuery 自動模式:

演示: http://jsfiddle.net/pd9yB/819/


第二部分:先進的解決方案-獨立的左邊和右邊

使用這種方法你可以分別單獨的渲染左邊和右邊部分。

一切都是相同的,只是更高階的CSS在發揮作用。

演示: http://jsfiddle.net/pd9yB/819/



第三部分:混合-匹配和改進

現在我們知道什麼是可能的,讓我們來新增一些花樣。


-水平一半

Demo



-垂直1/3

Demo



-水平 1/3

Demo



-HalfStyle改進 @KevinGranger

DEMO



 -PeelingStyle 改進的 HalfStyle @SamTremaine

Demo and on samtremaine.co.uk

演示 和 samtremaine.co.uk



第四部分:準備生產

定製不同的Half-Style樣式集可以用在同一個頁面的所需元素上。你可以定義多個樣式集並告訴外掛要用哪一個。

外掛在目標.textToHalfStyle元素上使用data屬性data-halfstyle=”[-CustomClassName-]”,所有都會自動改變。

所以,只要含有文字的元素新增了textToHalfStyle class和data屬性 data-halfstyle="[-CustomClassName-]",外掛將完成剩下的工作。

相同頁面中多個Half-Styles的 演示

此外,CSS樣式集class的定義匹配上述的 [-CustomClassName-] 部分,並且鏈到.halfStyle,因此我們將有.halfStyle.[-CustomClassName-]

HTML:

相同頁面中多個Half-Styles的 演示

相關文章