昨天在家看電視時(shí),退出的時(shí)候發(fā)現(xiàn)了一個(gè)彈窗效果,整個(gè)背景模糊,覺得這樣的效果好炫,要比純色加透明度高大上好多,連續(xù)試了幾個(gè)界面,最終確定效果由css實(shí)現(xiàn)的,于是今天一大早來到公司便趕緊搜索了一下,雖然兼容性奇差,但是一個(gè)css屬性就可以搞定。瞬間感覺自己知道的真是太少了~~
首先回憶一下彈窗的實(shí)現(xiàn),一般我們分為兩層,彈出窗口層(popus)和遮罩層(mask),通常情況下我習(xí)慣就這兩元素全部設(shè)成fixed定位,具體和absolute區(qū)別一試便知。對(duì)于mask層自不用多少,我們?nèi)缦陆o他設(shè)置屬性,讓他鋪滿整個(gè)屏幕。
.mask{position:fixed;top:0px;bottom:0px;left:0px;right:0px;background-color:#000;opacity:0.6;filter:alpha(opacity=60)}
popus層則要稍微麻煩點(diǎn)兒,這里我們有兩種實(shí)現(xiàn)方法
1.已知大小的彈窗,如下,主要通過top,left與負(fù)的margin來實(shí)現(xiàn)。
.popus{width:300px;height:200px;position:fixed;left:50%;top:50%;margin-left:-150px;margin-top:-100px;background-color:#000}
2.未知彈窗大小,則通過js獲取彈窗層的width與height,然后在進(jìn)行如上設(shè)置,在此不多述。
3.在支持css3的情況下,我們不需要知道彈窗的寬高,便可進(jìn)行如下設(shè)置
.popus{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%)}
主要通過translate屬性來設(shè)置,偏移的值百分比是相對(duì)于本身的寬高,因此從原理上來說跟第一種寫法有異曲同工之妙,不過使用卻更方便。