html下拉菜单制作⽅法,CSS3制作Dropdown下拉菜单的⽅法:target 是CSS3 中新增的⼀个伪类,⽤以匹配当前页⾯的URI中某个标志符的⽬标元素(⽐如说当前页⾯URL下添加#comment就会定位到id=“comment”的位置,俗称锚)。CSS3 为这个动作赋予了更加多的功能——就如同:hover ⼀样你可以做⼀些样式定义。
先上效果图
正如标题所说,本⽂是教你如何巧⽤CSS3:target伪类制作Dropdown下拉菜单,原⽣HTML+CSS,⽆JavaScript。为了吸引各位往下看,先上实际例⼦,再进⾏剖析。
Duang~ 实际例⼦其实就是DeveMobile 主题的右上⾓那个按钮,你点⼀下就会有⼀个Dropdown下拉菜单出现,在其他区域点击返回原状。请⽤⼿机扫码查看:
或者直接看这个gif 图⽚:
实例剖析
从解释原理的⾓度我们将HTML 拉出来最⼩化代码如下:
html下拉菜单的制作方法CSS Code复制内容到剪贴板
⼤体上上⾯的HTML代码可以分为两部分,⼀部分是⼀个出发下拉动作的⼊⼝(我习惯称为“开关”)——通常是⼀个button(实例是将a标签替换为⼀个button的功能);⼀部分就是触发动作的下拉菜单显⽰了。
可能你会问close 这个类修饰的a标签那段是做什么的?当你触发下拉菜单后,有时候需要做关闭(返回原状)的动作,⽽从具体情况(⽐如说如本实例触发菜单后菜单将原来的开关都掩盖了)或者⽤户体验上考虑,最好是除菜单区域外的整个屏幕都随便盲点就能关闭菜单。这个a标签就是实现在打开开关后产⽣⼀个透明的遮罩层覆盖到屏幕上。
有了上⾯的思路,那么再具体化为下⾯的代码(忽略个别⽆关紧要的样式,SASS代码):
CSS Code复制内容到剪贴板
#dropdown-box {
.dropdown {
opacity: 0;
@include transform(scale(0, 0));
@include transition(all0.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代码:默认的情况下是隐藏下拉菜单(采⽤透明属性opacity 与CSS3的transform的scale 缩⼩⾄0,遮罩层则默认隐藏);当开关触发后透明度变为1且放到⾄正常的⼀倍,同时遮罩层显⽰。为了让下拉菜单更显“下拉”的情况,采⽤CSS3的origin定位下转换原点。
注意下兼容性,所有主流浏览器均⽀持 :target,除了 IE8 及更早的版本,移动端的话直接⽤。稍微理解下你就可以运⽤到⾃⼰的项⽬中了,have fun!