2017IFE-鼠標(biāo)懸浮模糊效果

前言

2017-百度前端技術(shù)學(xué)院編碼任務(wù):鼠標(biāo)懸浮模糊效果

任務(wù)描述

  • 實(shí)現(xiàn)圖示效果 點(diǎn)擊查看
  • 實(shí)現(xiàn)文字的流光漸變動畫
  • 背景圖需要進(jìn)行模糊處理
  • 實(shí)現(xiàn)按鈕邊框的從中間到兩邊擴(kuò)展開

DEMO

項(xiàng)目源碼


實(shí)現(xiàn)

這個任務(wù)主要是學(xué)習(xí)和使用CSS3大部分的屬性霹购,主要使用的屬性如下:

  • CSS3 背景 - background
  • CSS3 漸變 - gradients
  • CSS3 轉(zhuǎn)換 - transform
  • CSS3 過渡 - transition
  • CSS3 動畫 - animation
  • CSS3 濾鏡 - filter

頁面結(jié)構(gòu)

其實(shí)剛開始泉手,我就在結(jié)構(gòu)上面犯了錯誤。如果把圖片作為背景圖片使用,當(dāng)使用filter模糊效果的時候诅挑,任何子元素都會產(chǎn)生模糊效果,那么后面文字和邊框都是模糊不清的友鼻,所以應(yīng)該采用單獨(dú)使用圖片元素 img 來顯示背景圖片奋姿。

<article class="box-warp">
    
    <img  class="box-img" >
    <div class="box-background">
        <h2 class="box-background__title">浙江美術(shù)館</h2>
        <button type="button" class="box-background__btn">點(diǎn)擊查看</button>
    </div>
</article>

實(shí)現(xiàn)文字的流光漸變動畫

整體思路:利用漸變屬性來設(shè)置背景顏色效果,同時背景剪裁為文字區(qū)域古沥,設(shè)置文字顏色為透明色瘸右,最后給予動畫效果讓其動起來。

首先設(shè)置背景圖片為線性漸變linear-gradient岩齿,設(shè)置方向?yàn)閺淖蟮接也⑶以O(shè)置2段相同的顏色節(jié)點(diǎn)太颤,0%和100%為相同的顏色,這樣才可以更好的實(shí)現(xiàn)文字流光的效果盹沈。

漸變的方向其實(shí)是通過設(shè)置角度來控制龄章,角度是通過水平線和漸變線之間產(chǎn)生的。默認(rèn)方向從下到上就是0deg、從左到右就是90deg做裙。

漸變的方向
background-image: linear-gradient(left,red,orange 25%,red 50%,orange 75%,red ); /*背景漸變色*/

我們發(fā)現(xiàn)整個背景都是漸變色岗憋,我們只是需要文字的顏色變?yōu)闈u變而已。我們開始利用-webkit-background-clip屬性來背景剪裁為文字锚贱,同時設(shè)置文字的-webkit-text-fill-color或者color屬性讓其文字顏色為透明色仔戈,這樣才有讓文字顯示為漸變色。

這里需要注意的是:背景裁剪為文字當(dāng)前只有webkit內(nèi)核瀏覽器支持拧廊,同時設(shè)置-webkit-text-fill-color和color监徘,那么前者會覆蓋后者屬性值。

另外我們需要設(shè)置background-size: 200% 100%;卦绣,因?yàn)闈u變顏色設(shè)置為2段相同的顏色節(jié)點(diǎn)耐量,目的是為了重復(fù)2段相同的顏色,實(shí)現(xiàn)動畫文字流光效果滤港。

-webkit-text-fill-color: transparent; /*文字透明 color: transparent; 同樣的效果*/
-webkit-background-clip: text; /*背景裁剪為文字 當(dāng)前只有webkit內(nèi)核瀏覽器支持*/
background-size: 200% 100%;

目前就差動畫了廊蜒,首先需要設(shè)置動畫規(guī)則 keyframes ,然后設(shè)置animation動畫周期時間溅漾、速度曲線和播放次數(shù)山叮。因?yàn)楸尘伴L度為200%,所以動畫規(guī)則設(shè)置100% {background-position: -100% 0;}添履,讓其沿著X軸變化從而產(chǎn)生流動效果屁倔。

/*文字流光動畫*/
@keyframes flowLight
{
    0%   {background-position: 0 0;}
    100% {background-position: -100% 0;}
}

/*規(guī)則名稱為flowLight,周期時間為3s暮胧,速度曲線為勻速锐借,播放次數(shù)為無限次(永遠(yuǎn)*/

animation: flowLight 3s linear infinite;

到此文字流光效果實(shí)現(xiàn)了

文字流光效果

背景圖模糊處理

背景圖模糊處理是設(shè)置filter: blur(3px);,CSS3的filter(濾鏡) 屬性主要是針對圖片進(jìn)行處理往衷,比如黑白钞翔、對比和亮度等等。

.box-warp:hover .box-img{  filter: blur(3px);  }

這樣背景模糊的效果就實(shí)現(xiàn)了席舍。

按鈕邊框的從中間到兩邊擴(kuò)展開

剛開始沒什么思路布轿,后來搜索才知道通過偽元素::before::after可以實(shí)現(xiàn)這樣的效果。思路是通過絕對定位設(shè)置前后偽元素來顯示上下和左右邊框来颤,設(shè)置元素上下邊框的偽元素left:50%汰扭,左右top:50%,通過改變其定位福铅、寬度和高度來實(shí)現(xiàn)效果萝毛。

.box-background::before{
    position: absolute;
    left: 50%;
    top:0;
    content: '';
    border: 3px solid #ffcc00;
    border-width: 3px 0;
    width: 0;
    height: 100%;
    box-sizing: border-box;
    transition: all 1s; /*過渡*/
}

.box-background::after{
    position: absolute;
    left: 0;
    top:50%;
    content: '';
    border: 2px solid #ffcc00;
    border-width: 0 2px;
    width: 100%;
    height: 0;
    box-sizing: border-box;
    transition: all 1s;
}

.box-warp:hover .box-background::before{
     left: 0;
     width: 100%;
 }
.box-warp:hover .box-background::after{
    top: 0;
    height: 100%;
}

隱藏和顯示

隱藏和顯示是通過設(shè)置opacity屬性來實(shí)現(xiàn),初始狀態(tài)為0,鼠標(biāo)滑動為1來實(shí)現(xiàn)滑黔。

.box-warp:hover .box-background{  opacity: 1;  }

由于CSS3的兼容性珊泳,在完成此效果時鲁冯,只在webkit內(nèi)核的瀏覽器進(jìn)行測試,如需兼容其他瀏覽器色查,請自行加上瀏覽器前綴薯演。

CSS3的許多新特效非常酷炫秧了,可以實(shí)現(xiàn)非常復(fù)雜的效果和動畫跨扮,值得大家好好看看。

問題

當(dāng)我想鼠標(biāo)移動到a元素上面時產(chǎn)生手指效果验毡,但是卻發(fā)現(xiàn)無效衡创。通過排查是偽元素覆蓋在a元素上面,導(dǎo)致根本無法接觸晶通。那么怎么能改變其它們的層疊關(guān)系呢璃氢?我想到了z-index屬性,因?yàn)檫@個問題我重新學(xué)習(xí)了z-index屬性的使用狮辽。

  • z-index什么時候有效?

對于一個已經(jīng)定位的元素(即position屬性值是非static的元素)

  • z-index值越大元素越靠前一也,對嗎?

我們現(xiàn)在div(A)和div(B)中再分別創(chuàng)建一個小的div(c)和div(d)

我們試試把div(A)的Z-index設(shè)置成auto喉脖。


再試試只把div(a)設(shè)置為auto

其實(shí)主要是找到對比元素之間的基準(zhǔn)堆疊上下文椰苟,以此數(shù)字越大層級越高。

取值:

auto: 元素不會建立一個新的本地堆疊上下文树叽。當(dāng)前堆疊上下文中新生成的元素和父元素堆疊層級相同舆蝴。

<integer>: 整型數(shù)字是生成的元素在當(dāng)前堆疊上下文中的堆疊層級。元素同時會創(chuàng)建一個堆疊層級為0的本地堆疊上下文题诵。這意味著子元素的 z-indexes 不與元素外的其余元素的 z-indexes 進(jìn)行對比洁仗。

通俗說,設(shè)置auto時元素堆疊等級和父元素一樣性锭,遇到堆疊上下文之后根據(jù)大小來判斷層級赠潦。設(shè)置具體數(shù)字的元素同樣遇到堆疊上下文根據(jù)大小來判斷層級,它的子元素和外界元素進(jìn)行比較時,采用父元素的Z-index進(jìn)行比較, 和兄弟元素比較采用自身的Z-index篷店。

  • z-index 不設(shè)置和設(shè)置為0有什么區(qū)別?

    如果不設(shè)置Z-index那么默認(rèn)值為auto,則不建立層疊上下文祭椰。設(shè)置為0則會脫離文檔流,建立層疊上下文臭家。

由于CSS3的兼容性疲陕,在完成此效果時,只在webkit內(nèi)核的瀏覽器進(jìn)行測試钉赁,如需兼容其他瀏覽器蹄殃,請自行加上瀏覽器前綴。

CSS3的許多新特效非衬悴龋酷炫诅岩,可以實(shí)現(xiàn)非常復(fù)雜的效果和動畫讳苦,值得大家好好看看。


參考鏈接

  1. CSS3實(shí)現(xiàn)文字流光漸變動畫

  2. CSS3 教程

  3. css元素position定位和z-index

  4. z-index

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吩谦,一起剝皮案震驚了整個濱河市鸳谜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌式廷,老刑警劉巖咐扭,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滑废,居然都是意外死亡蝗肪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蠕趁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薛闪,“玉大人,你說我怎么就攤上這事俺陋』硌樱” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵倔韭,是天一觀的道長术浪。 經(jīng)常有香客問我,道長寿酌,這世上最難降的妖魔是什么胰苏? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮醇疼,結(jié)果婚禮上硕并,老公的妹妹穿的比我還像新娘。我一直安慰自己秧荆,他們只是感情好倔毙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乙濒,像睡著了一般陕赃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颁股,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天么库,我揣著相機(jī)與錄音,去河邊找鬼甘有。 笑死诉儒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亏掀。 我是一名探鬼主播忱反,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泛释,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了温算?” 一聲冷哼從身側(cè)響起怜校,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎注竿,沒想到半個月后韭畸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔓搞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年胰丁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喂分。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锦庸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒲祈,到底是詐尸還是另有隱情甘萧,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布梆掸,位于F島的核電站扬卷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酸钦。R本人自食惡果不足惜怪得,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卑硫。 院中可真熱鬧徒恋,春花似錦、人聲如沸欢伏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硝拧。三九已至径筏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間障陶,已是汗流浹背滋恬。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咸这,地道東北人夷恍。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓魔眨,卻偏偏與公主長得像媳维,于是被迫代替她去往敵國和親酿雪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color侄刽,font指黎,text-align,li...
    wzhiq896閱讀 1,749評論 0 2
  • 一:在制作一個Web應(yīng)用或Web站點(diǎn)的過程中州丹,你是如何考慮他的UI醋安、安全性、高性能墓毒、SEO吓揪、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,156評論 0 1
  • 1、屬性選擇器:id選擇器 # 通過id 來選擇類名選擇器 . 通過類名來選擇屬性選擇器 ...
    Yuann閱讀 1,631評論 0 7
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案所计? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評論 1 92
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color柠辞,font,text-align主胧,li...
    love2013閱讀 2,314評論 0 11