当前位置:首页 > 前端

H5模拟微信菜单下拉菜单

Z先生9年前 (2017-03-14)前端5511

核心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

主菜单自己随意发挥吧。

分享给朋友:

相关文章

小程序二维码传参处理&UNIAPP H5传参兼容处理

首先小程序生成二维码,我这里调用的接口是:getUnlimited,我传递的参数是:invite=10001接着就是小程序中处理,如果直接扫二维码在App.vue的onLaunch中,使用decode…

MUMU模拟器调试APP注意事项

MUMU模拟器默认ADB端口7555,所以要么修改MUMU默认端口,要么修改IDE编辑器链接端口为7555。做好这个MARK!…

微信小程序强制热更新

微信小程序强制热更新

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

微信html链接小程序原始写法(暂未测试)

微信html链接小程序原始写法(暂未测试)

无意间发现了微信的这个链接,这几天比较忙,暂时还没有测试,等空了再测试一下。…

js获取指定文件的路径

获取指定js文件的路径var src = '/static/js/demo.js'; var path = src.sub…

VUE/UNIAPP事件传参

第一种方式使用data<view @click="handleClick" data-info="大家好">点击按钮</v…

发表评论

访客

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