zoukankan      html  css  js  c++  java
  • 下拉菜单demo---参考阿里云首页顶部下拉菜单

    前言:

    最近开始学习html+css,准备仿照各大网站写一些demo。

    正文:

    分析阶段:

    如下图:

    链接来自于: 

    阿里云:https://www.aliyun.com/


    实现过程:

    (一)用css3的transition属性来实现导航菜单的渐变效果。

     .head:hover {
                background-color: #00a2ca;
                transition: background-color 0.5s;
            }

    在0.5秒内背景颜色转化成#00a2ca。

    引用w3c上的例子:

     1 div
     2 {
     3 width:100px;
     4 height:100px;
     5 background:blue;
     6 transition:width 2s;
     7 -moz-transition:width 2s; /* Firefox 4 */
     8 -webkit-transition:width 2s; /* Safari and Chrome */
     9 -o-transition:width 2s; /* Opera */
    10 }
    11 
    12 div:hover
    13 {
    14 width:300px;
    15 }

    鼠标移动到div上时,div宽度从100px变为300px。如果改成:

     1 div
     2 {
     3 width:100px;
     4 height:100px;
     5 background:blue;
     6 
     7 }
     8 
     9 div:hover
    10 {
    11 width:300px;
    12 transition:width 2s;
    13 -moz-transition:width 2s; /* Firefox 4 */
    14 -webkit-transition:width 2s; /* Safari and Chrome */
    15 -o-transition:width 2s; /* Opera */
    16 }

    也能实现同样的效果,所以可知transition要配合鼠标单击、获得焦点、被点击或对元素任何改变事件来使用,实现圆滑地以动画效果改变CSS的属性值。

    (二)在下拉框隐藏这块的实现是采用绝对定位+堆叠顺序(z-index)来实现

    1 /*采用绝对定位的堆叠顺序*/
    2         .menu-drop {
    3             position: absolute;
    4             left: 0;
    5             top: 80px;
    6             width: 1000px;
    7             z-index: 1;
    8             height: 0;
    9         }

    当要显示下拉框的时候再将z-index属性值设为20(背景z-index设为10),也可以使用display:none;和display:block;来实现下拉框。

    下拉框js代码:

     1 $(document).ready(function () {
     2             //显示菜单下拉框
     3             $(".head-drop, .menu-drop").mouseover(function () {
     4                 if ($(".menu-drop").css("height") == "0px") {
     5                     $(".menu-drop").css("position", "absolute").css("background-color", "#FFF").css("z-index", "20");
     6                     $(".menu-drop").animate({height: "319px"}, 100);
     7                 }
     8             })
     9             //隐藏菜单下拉框
    10             $(".head-drop").mouseleave(function () {
    11                 $(".menu-drop").css("position", "absolute").css("height", "0").css("z-index", "1");
    12             })
    13             //下拉框链接
    14             $(".pro-menu li").mouseover(function () {
    15                 var index = $(".pro-menu li").index(this);
    16                 $(this).find("a").css("color","#00a2ca");
    17                 $(this).siblings().find("a").css("color","#fff");
    18                 $(".content div:eq(" + index + ")").show();
    19                 $(".content div:eq(" + index + ")").siblings().hide();
    20             })
    21         })

    最后的实现效果:

    最后附上具体代码:

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      6     <script type="text/javascript" src="../jquery/jquery-1.9.1.min.js"></script>
      7     <title>阿里云head-drop</title>
      8     <script>
      9         $(document).ready(function () {
     10             //显示菜单下拉框
     11             $(".head-drop, .menu-drop").mouseover(function () {
     12                 if ($(".menu-drop").css("height") == "0px") {
     13                     $(".menu-drop").css("position", "absolute").css("background-color", "#FFF").css("z-index", "20");
     14                     $(".menu-drop").animate({height: "319px"}, 100);
     15                 }
     16             })
     17             //隐藏菜单下拉框
     18             $(".head-drop").mouseleave(function () {
     19                 $(".menu-drop").css("position", "absolute").css("height", "0").css("z-index", "1");
     20             })
     21             //下拉框链接
     22             $(".pro-menu li").mouseover(function () {
     23                 var index = $(".pro-menu li").index(this);
     24                 $(this).find("a").css("color","#00a2ca");
     25                 $(this).siblings().find("a").css("color","#fff");
     26                 $(".content div:eq(" + index + ")").show();
     27                 $(".content div:eq(" + index + ")").siblings().hide();
     28             })
     29         })
     30     </script>
     31     <style>
     32         body {
     33             margin: 0;
     34         }
     35 
     36         ul {
     37             list-style: none;
     38             margin: 0;
     39             padding: 0;
     40         }
     41 
     42         a {
     43             text-decoration: none;
     44         }
     45 
     46         .nav > li > a {
     47             display: block;
     48             color: #000000;
     49             padding: 0 20px;
     50         }
     51 
     52         .nav > li {
     53             position: relative;
     54             float: left;
     55             text-align: center;
     56         }
     57 
     58         .warp {
     59             padding: 0;
     60             margin: 0;
     61             font-size: 20px;
     62         }
     63 
     64         .head {
     65             height: 80px;
     66             line-height: 80px;
     67             cursor: pointer;
     68         }
     69 
     70         .head:hover {
     71             background-color: #00a2ca;
     72             transition: background-color 0.5s;
     73         }
     74 
     75         .head:hover a {
     76             color: #fff;
     77             cursor: default;
     78         }
     79 
     80         .container {
     81             position: relative;
     82             height: 100%;
     83             max-width: 1200px;
     84             min-width: 1000px;
     85             margin: 0 auto;
     86         }
     87 
     88         /*采用绝对定位的堆叠顺序*/
     89         .menu-drop {
     90             position: absolute;
     91             left: 0;
     92             top: 80px;
     93             width: 1000px;
     94             z-index: 1;
     95             height: 0;
     96         }
     97         .pro-menu {
     98             height: 100%;
     99             width: 200px;
    100             line-height: 40px;
    101             font-size: 14px;
    102             float: left;
    103             background-color: #dddddd;
    104         }
    105 
    106         .pro-menu a {
    107             position: relative;
    108             display: block;
    109         }
    110 
    111         .pro-menu a:before {
    112             content: ".";
    113             display: block;
    114             height: 0;
    115             overflow: hidden;
    116         }
    117 
    118         .pro-menu a:after {
    119             content: ".";
    120             display: block;
    121             height: 0;
    122             overflow: hidden;
    123             clear: both;
    124         }
    125 
    126         .pro-menu a span {
    127             position: absolute;
    128             right: 0;
    129             top: 5%;
    130         }
    131 
    132         .pro-menu ul {
    133             height: 100%;
    134         }
    135         .menu-drop-content {
    136             padding: 10px 0 0 10px;
    137             overflow: hidden;
    138             height: 97%;
    139         }
    140         .content {
    141             background-color: #6ce26c;
    142             height: 100%;
    143         }
    144     </style>
    145 </head>
    146 <body>
    147 <div class="warp">
    148     <div class="head">
    149         <div class="container">
    150             <ul class="nav">
    151                 <li class="head-drop"><a href="#">产品</a>
    152                     <div class="menu-drop">
    153                         <div class="pro-menu">
    154                             <ul>
    155                                 <li><a href="">弹性计算<span>></span></a></li>
    156                                 <li><a href="">数据库<span>></span></a></li>
    157                                 <li><a href="">存储与CDN<span>></span></a></li>
    158                                 <li><a href="">网络<span>></span></a></li>
    159                                 <li><a href="">云盾<span>></span></a></li>
    160                                 <li><a href="">大规模计算<span>></span></a></li>
    161                                 <li><a href="">管理与监控<span>></span></a></li>
    162                                 <li><a href="">移动服务<span>></span></a></li>
    163                             </ul>
    164                         </div>
    165                         <div class="menu-drop-content">
    166                             <div class="content">
    167                                 <div style="display: block;">弹性计算</div>
    168                                 <div style="display: none">数据库</div>
    169                                 <div style="display: none;">存储与CDN</div>
    170                                 <div style="display: none">网络</div>
    171                                 <div style="display: none">云盾</div>
    172                                 <div style="display: none">大规模计算</div>
    173                                 <div style="display: none">管理与监控</div>
    174                                 <div style="display: none">移动服务</div>
    175                             </div>
    176                         </div>
    177                     </div>
    178                 </li>
    179                 <li><a href="#">解决方案</a></li>
    180                 <li><a href="#">软件市场</a></li>
    181                 <li><a href="#">开发者社区</a></li>
    182                 <li><a href="#">服务培训</a></li>
    183                 <li><a href="#">合作与生态</a></li>
    184                 <li><a href="#">大数据</a></li>
    185             </ul>
    186         </div>
    187     </div>
    188     <div style="100%;height: 500px;position: absolute;z-index: 10;background-color: #FFFFFF"></div>
    189 </div>
    190 </body>
    191 </html>
    View Code
  • 相关阅读:
    AUTOSAR-文档中所使用的UML文件
    开心一下-实现基于Java一个中文编程语言
    HDU 1026 Ignatius and the Princess I
    HDU 2553 (状压) N皇后问题 (2)
    UVa 11825 (状压DP) Hackers' Crackdown
    UVa 10891 (博弈+DP) Game of Sum
    LA 2965 Jurassic Remains
    HDU 2126 (背包方法数) Buy the souvenirs
    POJ 3984 迷宫问题
    POJ 3287 (基础BFS) Catch That Cow
  • 原文地址:https://www.cnblogs.com/liuyanhao/p/5499361.html
Copyright © 2011-2022 走看看