首頁 > web前端 > js教程 > 主體

如何用JS和CSS3製作酷炫的彈跳窗效果

不言
發布: 2018-06-25 16:00:49
原創
2293 人瀏覽過

本文要跟大家分享使用js和css3製作的酷炫彈窗效果,整個背景模糊,比純色加透明度高大好多。對js彈窗效果有興趣的朋友一起學習吧

昨天在家看電視時,退出的時候發現了一個彈窗效果,整個背景模糊,覺得這樣的效果好炫,要比純色加透明度高大上好多,連續試了幾個介面,最後確定效果由css實現的,於是今天一大早來到公司便趕緊搜索了一下,雖然兼容性奇差,但是一個css屬性就可以搞定。瞬間感覺自己知道的真是太少了~~

       首先回想一下彈窗的實現,一般我們分為兩層,彈出視窗層(popus)和遮罩層(mask),通常情況下我習慣就這兩元素全部設成fixed定位,具體和absolute區別一試便知。對於mask層自不用多少,我們如下給他設定屬性,讓他鋪滿整個螢幕。

.mask{position:fixed;top:0px;bottom:0px;left:0px;right:0px;background-color:#000;opacity:0.6;filter:alpha(opacity=60)}
登入後複製

popus層則要稍微麻煩點兒,這裡我們有兩種實作方法

      ## 1.已知大小的彈跳窗,如下,主要透過top,left與負的margin來實現。

.popus{width:300px;height:200px;position:fixed;left:50%;top:50%;margin-left:-150px;margin-top:-100px;background-color:#000}
登入後複製

      2.未知彈窗大小,則透過js取得彈窗層的width與height,然後在進行如上設置,在此不多述。

      # 3.在支援css3的情況下,我們不需要知道彈窗的寬高,可進行下列設定

.popus{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%)}
登入後複製

    主要透過translate屬性來設定,偏移的值百分比是相對於本身的寬高,因此從原理上來說跟第一種寫法有異曲同工之妙,不過使用卻更方便。

     言歸正傳,以下我們回歸到正題,也就是讓元素實現ps中高斯模糊的效果。  

    這裡引出css屬性:filter,注意這裡的filter不是ie中的filter,filter有許多價值,有興趣的可以點選這裡,作者講的非常詳細。我們今天只講其中的一個blur,首先看下面的預覽圖

    ps:目前來說該屬性只支援webkit瀏覽器,所以我們直接使用了css3屬性,效果也需要在webkit瀏覽器中看

      是不是很神奇,其中起作用的程式碼就這一行-webkit-filter:blur(8px) ,後面的像素值即代表模糊程度,當然在在日常專案中,我們也可以加入一些動畫,讓頁面更加的生動,本案例完整程式碼如下:

<p class=&#39;bg&#39;>
 <img src=&#39;bg.jpg&#39; />
</p>
<p class=&#39;popus&#39;>
 效果是不是要好过纯色加透明呢
 <p>
 <p class=&#39;left btn &#39;>确实不错</p>
 <p class=&#39;right btn&#39;>也就那样</p>
 </p>
</p>
登入後複製

css:

*{padding:0px;margin:0px}
img{width:100%;margin:0px auto;display:block}
.bg.blur{-webkit-filter:blur(8px)}
.popus{width:400px;color:#000;;position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);font-family:"微软雅黑";padding:20px 0px;font-weight:bold;background-color:rgba(255,255,255,0.6);border-radius:18px;text-align:center;padding:30px 0px;box-shadow:0px 0px 10px rgba(0,0,0,0.4);display:none}
.popus p{width:220px;margin:10px auto}
.popus p.btn{width:80px;padding:5px 10px;color:#000}
.left{float:left;border:1px solid #000}
.popus p.btn.right{float:right;color:#666}
登入後複製

js:

$(&#39;.bg&#39;).on(&#39;click&#39;,function(){
 console.log(98)
 $(this).addClass(&#39;blur&#39;);
 $(&#39;.popus&#39;).show();
})
$(&#39;.btn&#39;).on(&#39;click&#39;,function(){
 $(&#39;.bg&#39;).removeClass(&#39;blur&#39;);
 $(&#39;.popus&#39;).hide();
})
登入後複製

      這樣是不是就結束了?很明顯不是,看控制台

      當我們彈出視窗外,肯定要禁止掉我們其他層的點擊事件,但是我們發現目前我們雖然將其他層模糊化了,但是並沒有禁止掉相應的事件,當然解決辦法也很簡單,我們可以加一層沒有背景顏色的遮罩層,覆蓋在頁面上,這樣我們每次點擊作用在遮罩層上,自然不會觸發底層的事件了。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

js和css3實作旋轉效果

#JS和Canves實作點擊按鈕水波紋效果

javascript實作瀑布流動態載入圖片

#

以上是如何用JS和CSS3製作酷炫的彈跳窗效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
js
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板