CSS3制作Dropdown下拉菜單的方法

:target 是CSS3 中新增的一個(gè)偽類,用以匹配當(dāng)前頁面的URI中某個(gè)標(biāo)志符的目標(biāo)元素(比如說當(dāng)前頁面URL下添加#comment就會(huì)定位到id=“comment”的位置,俗稱錨)。CSS3 為這個(gè)動(dòng)作賦予了更加多的功能——就如同:hover 一樣你可以做一些樣式定義。
先上效果圖
正如標(biāo)題所說,本文是教你如何巧用CSS3:target偽類制作Dropdown下拉菜單,原生HTML+CSS,無JavaScript。為了吸引各位往下看,先上實(shí)際例子,再進(jìn)行剖析。
Duang~ 實(shí)際例子其實(shí)就是DeveMobile 主題的右上角那個(gè)按鈕,你點(diǎn)一下就會(huì)有一個(gè)Dropdown下拉菜單出現(xiàn),在其他區(qū)域點(diǎn)擊返回原狀。請(qǐng)用手機(jī)掃碼查看:
或者直接看這個(gè)gif 圖片:
實(shí)例剖析
從解釋原理的角度我們將HTML 拉出來最小化代碼如下:
- <a href="#dropdown-box" class="dropdown-switcher"></a>
- <div id="dropdown-box">
- <a href="##" class="close"></a>
- <div class="dropdown">
- <ul>
- <li></li>
- <li></li>
- </ul>
- </div>
大體上上面的HTML代碼可以分為兩部分,一部分是一個(gè)出發(fā)下拉動(dòng)作的入口(我習(xí)慣稱為“開關(guān)”)——通常是一個(gè)button(實(shí)例是將a標(biāo)簽替換為一個(gè)button的功能);一部分就是觸發(fā)動(dòng)作的下拉菜單顯示了。
可能你會(huì)問close 這個(gè)類修飾的a標(biāo)簽?zāi)嵌问亲鍪裁吹???dāng)你觸發(fā)下拉菜單后,有時(shí)候需要做關(guān)閉(返回原狀)的動(dòng)作,而從具體情況(比如說如本實(shí)例觸發(fā)菜單后菜單將原來的開關(guān)都掩蓋了)或者用戶體驗(yàn)上考慮,最好是除菜單區(qū)域外的整個(gè)屏幕都隨便盲點(diǎn)就能關(guān)閉菜單。這個(gè)a標(biāo)簽就是實(shí)現(xiàn)在打開開關(guān)后產(chǎn)生一個(gè)透明的遮罩層覆蓋到屏幕上。
有了上面的思路,那么再具體化為下面的代碼(忽略個(gè)別無關(guān)緊要的樣式,SASS代碼):
- #dropdown-box {
- .dropdown {
- opacity: 0;
- @include transform(scale(0, 0));
- @include transition(all 0.3s ease);
- overflow: hidden;
- z-index: 100;
- transform-origin: 100% 0;
- -webkit-transform-origin: 100% 0;
- -ms-transform-origin: 100% 0;
- -moz-transform-origin: 100% 0;
- }
- }
- .close {
- display: none;
- position: fixed;
- top: 0;
- rightright: 0;
- bottombottom: 0;
- left: 0;
- z-index: 999;
- width: 100%;
- height: 100%;
- background: transparent;
- }
- &:target .dropdown {
- @include transform(scale(1, 1));
- opacity: 1;
- z-index: 9999;
- }
- &:target .close {
- display: block;
- }
- }
稍微解釋下上面的SASS代碼:默認(rèn)的情況下是隱藏下拉菜單(采用透明屬性opacity 與CSS3的transform的scale 縮小至0,遮罩層則默認(rèn)隱藏);當(dāng)開關(guān)觸發(fā)后透明度變?yōu)?且放到至正常的一倍,同時(shí)遮罩層顯示。為了讓下拉菜單更顯“下拉”的情況,采用CSS3的origin定位下轉(zhuǎn)換原點(diǎn)。
注意下兼容性,所有主流瀏覽器均支持 :target,除了 IE8 及更早的版本,移動(dòng)端的話直接用。稍微理解下你就可以運(yùn)用到自己的項(xiàng)目中了,have fun!
相關(guān)文章
- 這篇文章主要介紹了純html+css制作三級(jí)下拉菜單,如何制作下拉菜單效果,三級(jí)下拉菜單又是怎么實(shí)現(xiàn)的,本文為大家揭曉,感興趣的小伙伴們可以參考一下2016-03-10
基于HTML5代碼實(shí)現(xiàn)折疊菜單附源碼下載
基于html5代碼實(shí)現(xiàn)折疊菜單附源碼下載,效果逼真,非常方便使用,對(duì)html5折疊菜單感興趣的朋友可以參考下2015-11-27jQuery+HTML5實(shí)現(xiàn)的帶鏈接箭頭的多級(jí)下拉菜單導(dǎo)航特效源碼
是一段實(shí)現(xiàn)了擁有鏈接箭頭及鼠標(biāo)懸浮展開效果的多級(jí)下拉導(dǎo)航菜單代碼,此段代碼的實(shí)例中實(shí)現(xiàn)了四級(jí)菜單導(dǎo)航,有需要的朋友們也可以自己添加或刪除一級(jí)或幾級(jí)菜單導(dǎo)航,本段2014-12-24HTML5+CSS3實(shí)現(xiàn)的超級(jí)可愛的鬼臉表情下拉菜單效果源碼
這款HTML5/CSS3鬼臉表情下拉菜單真的很特別,雖然菜單的實(shí)現(xiàn)并沒有利用復(fù)雜的HTML5/CSS3技術(shù),但是創(chuàng)意的確不錯(cuò)2014-11-19HTML5/CSS3自定義浮動(dòng)Select 超炫下拉菜單動(dòng)畫源碼
今天我們要分享一款HTML5/CSS3懸浮的自定義Select下拉菜單,這個(gè)CSS3菜單利用CSS3特性可以浮動(dòng)在網(wǎng)頁上,并帶有陰影效果,同時(shí),展開下拉框時(shí)會(huì)以旋轉(zhuǎn)形式彈出一個(gè)二級(jí)菜單2014-11-08- 可輸入下拉菜單,不可思議是不是, 本例通過一些方法實(shí)現(xiàn)這個(gè)不可能的事情,感興趣的朋友可以參考下2014-09-06
- 這篇文章主要介紹了html下拉菜單提交后如何保留選中值而不返回默認(rèn)值,方法雖簡(jiǎn)單,但比較實(shí)用,需要的朋友可以參考下2014-09-06
jquery實(shí)現(xiàn)強(qiáng)大功能的下拉菜單(可以放任意html內(nèi)容)
下拉菜單項(xiàng)可以是任意形式的,比如你可以在下拉菜單里放上登陸框,圖文內(nèi)容,表格等等2013-05-06- 這篇文章主要介紹了CSS中下拉菜單和表單以及彈出層的簡(jiǎn)單筆記,是一些CSS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-07-16
純CSS3實(shí)現(xiàn)的華麗網(wǎng)站下拉菜單導(dǎo)航特效源碼
是一段實(shí)現(xiàn)了鼠標(biāo)放在導(dǎo)航時(shí),該導(dǎo)航會(huì)下拉出相應(yīng)內(nèi)容的二級(jí)菜單的效果代碼,本段代碼適應(yīng)于所有網(wǎng)頁使用,有興趣的朋友們可以前來下載使用2015-03-12