思路
思路很簡單,就是一個字寫兩遍,一個字只顯示部分,不過不能真的把一個字寫兩遍。這裡就需要用到CSS虛擬元素:before和:after,記住這個“虛擬元素”的“偽”字,表明它本來是不存在的。我們的方法就是在虛擬元素裡放置相同的字元,只顯示半個,而原字元顯示另外一半,最後把它們拼成一個字。
CSS Code
CSS Code複製內容到剪貼簿
- .hf {
- display: inline-block;
- font-size: 80px;
- line-height:80px;
- color: #000;
- position: relative;
- overflow: hidden;
- whitewhite-space: pre;/* 處理空格 */
- }
- .hf:before {
- position: absolute;
- left: 0;
- top: 0;
- color: #f00;
- display: block;
- width: 30%;/*如果想變色一半文字,就設定50%*/
- content: attr(data-content);/* 虛擬元素的動態擷取內容 */
- overflow: hidden;
- }
HTML Code
XML/HTML Code複製內容到剪貼簿
- <span class="hf" data-content="W">W</span>
- <span class="hf" data-content="e">e</span>
- <span class="hf" data-content="b">b</span>
- <span class="hf" data-content="前">前</span>
- <span class="hf" data-content="端">端</span>
Demo
附:w3school對:before和:after虛擬元素的講解
CSS2 - :before 虛擬元素
":before" 虛擬元素可以在元素的內容前面插入新內容。
下面的例子在每個 <h1> 元素前面插入一幅圖片:
CSS Code複製內容到剪貼簿
- h1:before
- {
- content:url(logo.gif);
- }
親自試一試
CSS2 - :after 虛擬元素
":after" 虛擬元素可以在元素的內容之後插入新內容。
下面的例子在每個 <h1> 元素後面插入一幅圖片:
CSS Code複製內容到剪貼簿
- h1:after
- {
- content:url(logo.gif);
- }
親自試一試