当前位置:首页 > 前端 > 正文内容

H5模拟微信菜单下拉菜单

Z先生8年前 (2017-03-14)前端5363

核心HTML代码:

核心点:外层类“submenu-warp

子菜单类:“submenu

<div data-href="#mainurl" class="submenu-warp">
    <p>常见问题</p>
    <div class="submenu">
        <a href="#suburl1"><span>营销文案</span></a>
        <a href="#suburl2"><span>常见问题</span></a>
    </div>
</div>

遮蔽层:

<div id="submenu_masklayer" class="submenu_masklayer">&nbsp;</div>

CSS代码:

.submenu-warp {
	position: relative;
}

.submenu-warp .submenu {
	display: none;
	position: absolute;
	z-index: 998;
	bottom: 60px;
	left: 50%;
	width: 100px;
	margin-left: -50px;
	background: red;
	background: #e4e3e2;
	border-radius: 5px;
	-webkit-box-shadow: inset 0 0 3px #fff;
	background: url(../img/submenu_bg_2.svg#3) no-repeat center center;
	-webkit-background-size: 100%;
	background-size: 100%;
}

.submenu-warp .submenu:before {
	content: "";
	display: inline-block;
	position: absolute;
	z-index: 999;
	bottom: 0;
	left: 50%;
	width: 10px;
	height: 8px;
	background: url(../img/submenu_bg_1.svg#2) no-repeat center -55px;
	-webkit-background-size: 10px auto;
	bottom: -7px;
	margin-left: -5px;
}

.submenu-warp .submenu a {
	font-size: 12px;
	display: inline-block;
	width: 100%;
	line-height: 45px;
	text-align: center;
	background: -webkit-gradient(linear, 0 0, 100% 0, from(rgba(194, 194, 194, 0.8)), to(rgba(194, 194, 194, 0.8)), color-stop(50%, rgba(194, 194, 194, 0.8)));
	background-size: 80% 1px;
	background-repeat: no-repeat;
	background-position: center bottom;
}

.submenu_masklayer {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 180;
	background: rgba(0, 0, 0, 0);
	display: none;
}


核心JS代码:

	(function($) {
		$(document).on("click", ".submenu-warp", function() {
			var the = $(this),
				submenu, href;
			$(".submenu").hide();
			submenu = the.children(".submenu");
			if(submenu.length) {
				if($("#submenu_masklayer").css("display") == "none") {
					$("#submenu_masklayer").show();
					submenu.show();
				} else {
					$("#submenu_masklayer").hide();
					return true;
				}
			} else if(the[0].tagName != "a") {
				href = the.attr("href");
				href = href == undefined || href == null ? the.data("href") : href;
				href = href == undefined || href == null ? "" : href;
				if((href.indexOf("#") != 0 && href.indexOf("javascript:") == -1 && href != "")) {
					document.location.href = href;
					return false;
				}
				return false;
			}
		}).on("click", "#submenu_masklayer", function() {
			$(".submenu").hide();
		});
	})(jQuery);


图片资源文件:

img.zip

主菜单自己随意发挥吧。

分享给朋友:

相关文章

【原创】api接口模拟器(NodeJS版)

最近遇到一个项目,内网的APP,后端数据和前段开发属于异地,没法直接做接口数据测试。因此用NodeJs简单写了个API模拟器,只要将响应的数据放在对应目录下json.json文件中即可。请求地址全静态...

npm删除掉所有模块并重新安装的方法

1、删除目录:node_modules2、运行清理命令npm cache clean -f3、安装npm install...

微信小程序强制热更新

微信小程序强制热更新

微信小程序分为冷启动和热启动,在更新后,一般需要一个周期,用户端才会重新更新。官方从小程序基础库版本1.9.90开始支持强制更新异步更新 + 强制更新方案介绍从基础库 1.9.90 开始,我们提供了&...

记vue/uniapp本地调试以及部署代理服务器设置哪些事

接触vue差不多也一年有余,很多概念性的东西都不懂,逐步已经习惯了npm来安装,之前其他同事做的一些项目,npm自己拿过来也踩了很多坑,比如换个环境再npm就跑不起来了等等之类的,遇到最多的就是scs...

巨坑:API在某些情况下POST请求会自动变成GET的解决方案

这个问题我已经不是第一次遇到了。之前没有收集整理,一般情况下,出现这种情况,都是有2次请求,一次301,在一次200,然后post就变成了get。一般出现这个情况,API接口和?之间不是反斜杠,导致3...

一个很漂亮的404页面

一个很漂亮的404页面

下载地址:404.zip...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。