最近几个月一直从事微信开发,从刚开始的懵懂渐渐成长了一点。今天觉得微信底部自定义菜单,如果能在html的页面上也能显示就好了.

记得以前看过某个网页有类似效果.查找了该网页的css.  ok现在html css 实现微信自定义菜单效果.

不多说直接上代码。

/**
 * 仿微信自定义菜单
 * 
 * @author xuyw
 * @email xyw10000@163.com
 * @date 2014-07-27
 */
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <link rel="stylesheet" type="text/css" href="menu.css" media="all">
 </head>

 <body>
 <div class="bg">
        <img src="imgs/home-default17.jpg" width="100%" height="100%;">
      </div>
<div data-role="widget" data-widget="nav4" class="nav4">
      <nav>
        <div id="nav4_ul" class="nav_4">
          <ul class="box">
                <li>
                                  <a href="javascript:;" class=""><span>关于我们</span></a>
                                  
                
                                  <dl>
                                          <dd>
                                                  <a href="#"><span>电话</span></a>
                                              </dd>
                                          <dd>
                                                  <a href="#"><span>地址</span></a>
                                              </dd>
                                          <dd>
                                                  <a href="#"><span>在线客服</span></a>
                                              </dd>
                                          <dd>
                                                  <a href="#"><span>在线QQ</span></a>
                                        </dd>
</dl>
</li>
<li>
<a href="javascript:;" class=""><span>电商</span></a>
<dl>
<dd>
<a href="#"><span>微信会员卡</span></a>
</dd>
<dd>
<a href="#"><span>微社区</span></a>
</dd>
<dd>
<a href="#"><span>微投票</span></a>
</dd>
<dd>
<a href="#"><span>微调研</span></a>
</dd>
</dl>
</li>
<li>
<a href="javascript:;" class="on"><span>会员专区</span></a>
<dl>
<dd>
<a href="#"><span>微商城</span></a>
</dd>
<dd>
<a href="#"><span>微餐饮</span></a>
</dd>
<dd>
<a href="#"><span>微团购</span></a>
</dd>
<dd>
<a href="#"><span>微汽车</span></a>
</dd>
</dl>
</li>
</ul>
</div>
</nav>
<div id="nav4_masklayer" class="masklayer_div on"> </div>
<script src="nav4.js"></script>
<script type="text/javascript">  nav4.bindClick(document.getElementById("nav4_ul").querySelectorAll("li>a"), document.getElementById("nav4_masklayer"));
</script>
</div>
</body>
</html>

css

*{padding:0; margin:0;}
.bg {
position: absolute;
z-index: -1;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0.8;
}
ul, ol, li, dl {
list-style-type: none;
}
.box {
width: 100%;
display: -webkit-box;
display: -moz-box;
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
}
.box > * {
-webkit-box-flex: 1;
-moz-box-flex: 1;
}
a:link, a:visited {
color: #575757;
text-decoration: none;
}
a {
text-decoration: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0.35);
}
a:link, a:visited {
color: #575757;
text-decoration: none;
}
a {
text-decoration: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0.35);
}

.nav4{
  height:45px;
}
.nav4 ul{
  position:fixed;
  z-index:200;
  bottom:0;
  left:0;
  width:100%
}
.nav4 li{
  border:1px solid rgba(190,190,190,1);
  height:45px;
  border-bottom:0;
  border-right:0;
  position:relative;
  -webkit-box-shadow:inset 0 0 3px #fff;
}
.nav4 li:nth-of-type(1){border-left;0;}
.nav4 li>a{
  font-size:15px;
  -webkit-box-sizing:border-box;
  box-sizing:border-box;
  /*border:1px solid #f9f8f9;*/
  -webkit-tap-highlight-color:rgba(0,0,0,0);
  border-bottom:0;
  display:block;
  line-height:45px;
  text-align:center;
  background:-webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), to(#dcdcdc), color-stop(35% ,#ededed), color-stop(50%, #e3e3e3) );
}
.nav4 li>a:only-child span{
  background:none;
  padding-left:0;
}
.nav4 li>a.on + dl{
  display: block;
}
.nav4 li>a span{
  color: #4f4d4f;
  display: inline-block;
  padding-left: 15px;
  background: url(imgs/1.svg#2) no-repeat 4px 18px;
  -webkit-background-size: 9px auto;
  text-shadow:0px 1px 0px #ffffff;
}
/***********************/
.nav4 dl{
  display:none;
  position:absolute;
  z-index:220;
  bottom:60px;
  left:50%;
  width:100px;
  margin-left:-50px;
  background:red;
  /*min-height:100px;*/
  background:#e4e3e2;
  /*border:1px solid #afaeaf;*/
  border-radius:5px;
  -webkit-box-shadow:inset 0 0 3px #fff;
  background:url(imgs/2.svg#3) no-repeat center center;
  -webkit-background-size:100%;
  background-size:100%;
}
/*, .nav4 dl:after*/
.nav4 dl:before{
  content:"";
  display:inline-block;
  position:absolute;
  z-index:240;
  bottom:0;
  left:50%;
  /*width:0;
  height:0;
  border:8px solid red;
  border-color:#afaeaf transparent transparent transparent;
  margin-left:-8px;
  margin-bottom:-16px;*/
  width:10px;
  height:8px;
  background: url(imgs/1.svg#2) no-repeat center -55px;
  -webkit-background-size: 10px auto;
  bottom: -7px;
  margin-left: -5px;
}
/*.nav4 dl:after{
  z-index:241;
  border-color:#e4e3e2 transparent transparent transparent;
  margin-bottom:-15px;
}*/
.nav4 dl dd{
  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;
  /*background: url(imgs/3.svg#4) no-repeat center bottom;
  -webkit-background-size:100px 1px;*/
}
.nav4 dl dd:last-of-type{
  background:none;
}
.nav4 dl dd a{
  font-size: 15px;
  display:block;
  color:#4f4d4f;
  text-shadow:0px 1px 0px #ffffff;
  white-space: pre;
  overflow: hidden;
  text-overflow: ellipsis;
}
.nav4 .masklayer_div{
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 180;
  background: rgba(0,0,0,0);
}
.nav4 .masklayer_div.on{display: block;}

js

var nav4 =(function(){
  bindClick = function(els, mask){
    if(!els || !els.length){return;}
    var isMobile = "ontouchstart" in window;
    for(var i=0,ci; ci = els[i]; i++){
      ci.addEventListener("click", evtFn, false);
    }

    function evtFn(evt, ci){
      ci =this;
      for(var j=0,cj; cj = els[j]; j++){
        if(cj != ci){
          console.log(cj);
          cj.classList.remove("on");
        }
      }
      if(ci == mask){mask.classList.remove("on");return;}
      switch(evt.type){
        case "click":
          var on = ci.classList.toggle("on");
          mask.classList[on?"add":"remove"]("on");
        break;
      }
    }
    mask.addEventListener(isMobile?"touchstart":"click", evtFn, false);
  }
  return {"bindClick":bindClick};
})();

微信自定义菜单

效果图