如何在網(wǎng)頁(yè)交互中使用純CSS實(shí)現(xiàn)元素懸停時(shí)寬度不變且內(nèi)容內(nèi)縮并顯示圖標(biāo)的效果?

在網(wǎng)頁(yè)交互設(shè)計(jì)中,如何在元素懸停時(shí)保持其寬度不變,同時(shí)使內(nèi)容內(nèi)縮并顯示圖標(biāo),是一個(gè)常見(jiàn)的需求,尤其當(dāng)元素寬度受動(dòng)態(tài)數(shù)據(jù)影響時(shí),實(shí)現(xiàn)這一效果更為復(fù)雜。本文將探討如何通過(guò)css實(shí)現(xiàn)這種效果,并展示如何在懸停時(shí)使內(nèi)容內(nèi)縮并顯示圖標(biāo)。

問(wèn)題描述

假設(shè)我們有一個(gè)元素,其內(nèi)容由變量data決定,寬度會(huì)隨著data的長(zhǎng)度變化而變化。我們希望在鼠標(biāo)懸停在這個(gè)元素上時(shí),保持其寬度不變,同時(shí)在元素內(nèi)部顯示一個(gè)圖標(biāo),并讓原有的文本內(nèi)容向內(nèi)擠壓,生成省略號(hào),類(lèi)似于3….的效果。

嘗試與挑戰(zhàn)

最初嘗試是通過(guò)JavaScript編寫(xiě)一個(gè)組件,動(dòng)態(tài)設(shè)置和重置元素的寬度。這種方法雖然可行,但我們希望找到一種更簡(jiǎn)潔的純css解決方案。

純CSS解決方案

通過(guò)純CSS,我們可以實(shí)現(xiàn)懸停時(shí)寬度不變,內(nèi)容內(nèi)縮并顯示圖標(biāo)的效果。以下是實(shí)現(xiàn)這種效果的html和CSS代碼:

HTML結(jié)構(gòu)

<div class="fonttext">   ABCabcdsfes<i class="texticon">?</i>DEFGHIGK </div>

CSS樣式

.fonttext {   position: relative;   display: inline-block;   overflow: hidden;   vertical-align: bottom;   border: 2px dashed red;   box-sizing: border-box;   border-radius: 4px; }  .texticon {   position: absolute;   width: 20px;   height: 100%;   background-color: #fff;   border: 2px dashed red;   font-style: normal;   right: -21px;   border-left: none;   cursor: pointer;   border-radius: 4px;   top: -2px;   display: inline-table; }  .texticon:hover {   background-color: #2d77ed; }  .fonttext:hover {   overflow: visible;   border-top-right-radius: 0;   border-bottom-right-radius: 0;   border-right-color: transparent; }  .fonttext:hover .texticon {   border-top-left-radius: 0;   border-bottom-left-radius: 0;   border-left-color: transparent; }

如何在網(wǎng)頁(yè)交互中使用純CSS實(shí)現(xiàn)元素懸停時(shí)寬度不變且內(nèi)容內(nèi)縮并顯示圖標(biāo)的效果?

立即學(xué)習(xí)前端免費(fèi)學(xué)習(xí)筆記(深入)”;

效果說(shuō)明

  • 初始狀態(tài):元素顯示正常文本內(nèi)容,圖標(biāo)隱藏在元素右側(cè)。
  • 懸停狀態(tài):當(dāng)鼠標(biāo)懸停在元素上時(shí),元素的overflow屬性變?yōu)関isible,使得圖標(biāo)顯示出來(lái)。同時(shí),文本內(nèi)容向內(nèi)擠壓,產(chǎn)生省略號(hào)效果。

通過(guò)這種方法,我們可以實(shí)現(xiàn)元素懸停時(shí)寬度不變,內(nèi)容內(nèi)縮并顯示圖標(biāo)的效果。這種純CSS的解決方案不僅簡(jiǎn)潔高效,還避免了使用JavaScript帶來(lái)的性能開(kāi)銷(xiāo)。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享