使用CSS實(shí)現(xiàn)outline切換的動(dòng)畫效果
我記得有個(gè)版本的迅雷軟件,會(huì)發(fā)現(xiàn)focus文本框時(shí)候,其外發(fā)光的外掛會(huì)跟著動(dòng)畫移動(dòng)。據(jù)說(shuō)這一系列N動(dòng)畫交互引擎的維護(hù)成本還是挺高的。
今天,偶然看到一個(gè)名叫Nikita Vasilyev的兄弟在web頁(yè)面上折騰了個(gè)類似效果,您有興趣可以點(diǎn)擊這里瞅瞅。Github地址為:https://github.com/NV/flying-focus/
焦點(diǎn)飛來(lái)飛去~
使用很簡(jiǎn)單,只要在頁(yè)面上加載了下面這個(gè)JS: flying-focus.js 就可以實(shí)現(xiàn)Tab切換焦點(diǎn)框的時(shí)候,焦點(diǎn)框是飛過(guò)去的~~
看上去很酷。
不過(guò),對(duì)于實(shí)際的對(duì)外項(xiàng)目而言,價(jià)值并不大。首先是兼容性,其次是JS依賴,再者是全局處理(影響頁(yè)面所有元素)。由于借助pointer-events:none,只有Chrome以及Safari支持。不過(guò),在一些特殊或重要的表單上使用這種增強(qiáng)的交互可能會(huì)有出彩的效果。也就是只適合局部使用?;蛘咴趥€(gè)人網(wǎng)站上用用。對(duì)于大多數(shù)內(nèi)網(wǎng)項(xiàng)目,華而不實(shí)的效果沒(méi)有任何意義。
但是,作者的想法與創(chuàng)意是相當(dāng)好的。于是,我們可以再其創(chuàng)造性的idea上揉進(jìn)自己的技術(shù),折騰出其他些東西。
例如,我就有個(gè)蛋疼的想法:“哈,使用純CSS可不可以實(shí)現(xiàn)類似效果呢?”
一頓啪啪啪,喲,有個(gè)略有模樣的demo還真出來(lái)了。再次賣弄下。
CSS實(shí)現(xiàn)的outline動(dòng)畫
哈,說(shuō)到現(xiàn)在,估計(jì)大多數(shù)人還不清楚我叨叨到現(xiàn)在的效果是個(gè)什么樣子呢?
gif截圖走起~~~~~
首先是Chrome瀏覽器下:
然后是FireFox瀏覽器下:
您可以狠狠地點(diǎn)擊這里:使用CSS實(shí)現(xiàn)focus outline動(dòng)畫效果demo
相比JS方法,我這里的CSS只是針對(duì)demo中的表單有效果,支持的瀏覽器多了一類,就是IE10+.
使用了focus偽類和相鄰選擇器對(duì)外發(fā)光的元素進(jìn)行了位置和尺寸的控制,配合transition就有了動(dòng)畫效果啦!
相關(guān)CSS如下:
- .focus-trans {
- // 那個(gè)移動(dòng)的外發(fā)光的框框的初始位置和大小
- position: absolute; left: 99px; top: -100px;
- width: 100px; height: 30px;
- // Chrome瀏覽器下使用瀏覽器自帶的focus效果,這里的5px其實(shí)是醬油
- outline: 5px auto -webkit-focus-ring-color;
- // IE10+, FireFox瀏覽器下藍(lán)色的藍(lán)色框框效果(模擬Safari)
- box-shadow: 0 0 2px 3px #78aeda, 0 0 2px #78aeda inset;
- -webkit-box-shadow: none;
- border-radius: 3px;
- // 為的是失去焦點(diǎn)時(shí)候,框框立即消失
- -webkit-transition: none;
- transition: none;
- // Firefox有bug,所以這里補(bǔ)丁了下
- -moz-transition: all .15s;
- }
form *:focus ~ .focus-trans { transition: all .15s;}
哈哈,應(yīng)該不難理解。
~選擇器表示相鄰的兄弟元素。于是,我們就可以控制外發(fā)光的框框了,例如:
- .code:focus ~ .focus-trans { width: 130px; height: 42px; left: 99px; top: 66px; }
看上去效果還不錯(cuò)。
實(shí)際上,還是有諸多限制的。首先,表單元素必須相鄰,否則無(wú)法控制同一個(gè)元素,也就無(wú)法實(shí)現(xiàn)連續(xù)的動(dòng)畫;其次,每個(gè)控件的outline位置以及大小都是要沖定義的,實(shí)現(xiàn)的工時(shí)成本比較高,只能在局部重用位置使用。
相關(guān)文章
利用CSS3實(shí)現(xiàn)圓角的outline效果的教程
這篇文章主要介紹了利用CSS3實(shí)現(xiàn)圓角的outline效果的教程,一般用于實(shí)現(xiàn)相框效果,需要的朋友可以參考下2015-06-05css去掉點(diǎn)擊連接時(shí)所產(chǎn)生的虛線邊框技巧兼容符合w3c標(biāo)準(zhǔn)的瀏覽器
可能很多人不大會(huì)注意,當(dāng)點(diǎn)擊一個(gè)鏈接時(shí)會(huì)出現(xiàn)一個(gè)虛線框,其實(shí)也沒(méi)什么影響,可以忽略,但有時(shí)候有人會(huì)提出想把這個(gè)虛線框隱藏掉,該用什么方法做?2011-10-18CSS教程:text-indent隱藏文字出現(xiàn)虛線框outline-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)
鏈接用圖片做背景,text-indent:-9999px; 隱藏文字,此效果在 IE 中是正常的,但在 Firefox 里,鼠標(biāo)點(diǎn)擊該鏈接時(shí),虛線框卻會(huì)包住被縮進(jìn)的文字,結(jié)果顯示為虛線框 N2008-10-17
輪廓是繪制于元素周圍的一條線,位于邊框邊緣的外圍,可起到突出元素的作用,這篇文章主要介紹了CSS輪廓outline的具體使用的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,2018-04-08


