zoukankan      html  css  js  c++  java
  • 天猫首页悬浮层制作原理

    悬浮层效果图:

    布局设计思路:

      右边的树形导航菜单使用一个ul囊括,在每个li中放入一个span标签用来存放导航信息,再放入一个div用来当作需要显示的悬浮层

      如:

        

    <ul>
           <li>
             <span>平板电视</span>
             <div class="submenu">
                 悬浮层中需要展示的内容
             </div>
          </li>
    </ul>

    实现悬浮层有两种方法:

      1、纯css模式:

       

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <link rel="stylesheet" href="css/悬浮层.css" />
        </head>
        <body>
            <ul>
                <li>
                    <span>平板电视</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>            
                <li>
                    <span>电脑</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>
                <li>
                    <span>手机</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>
                <li>
                    <span>洗衣机</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>
            </ul>
        </body>
    </html>
    ul{
        width:150px;
        background: #DDDDDD;
        padding:0px;
    }
    
    ul li{
        list-style-type: none;
        height:30px;
    }
    ul li span{
        display: block;
        line-height: 30px;    
        text-align: center;
    }
    .submenu{
        display: none;/*将悬浮层隐藏*/
        position: absolute;/*使用绝对定位的left和top属性将该盒子定位再导航栏附近*/
        left:158px;
        top:15px;
        height:125px;
        width:400px;
        background: pink;
        z-index: 4;/*设置该层的优先级指数,越大优先级越大*/
    }
    .submenu span{
        display: block;/*悬浮层中的内容,优先级设置要比底层盒子高避免被覆盖*/
        z-index: 6;
        color: #313131;
        border-bottom: 1px solid #CCCCCC;
    }
    ul li:hover{
        background: #FFFFFF;/*当鼠标移动到li标签区域时触发事件,并启用其下面设置的属性*/
    }
    ul li:hover .submenu{/*当鼠标移动到li标签区域时触发事件,并启用其.submenu下面设置的属性,将悬浮层显示出来*/
        display: block;
    }

    2、使用js+css实现

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <link rel="stylesheet" href="css/悬浮层.css" />
            <script type="text/javascript">
                window.onload = function(){//指定在页面加载时加载下面函数的 内容
                    var list = document.getElementsByTagName("li");//根据hmtl标签名获取对应的对象,并返回一个数组
                    for(i=0;i<list.length;i++){//循环每个对象并给每个对象设置鼠标事件
                        list[i].onmouseover = function(){//当鼠标移动到li区域上时执行
                            this.className = "lihover";//将li的class属性设置为lihover
                        }
                        list[i].onmouseout = function(){//鼠标移出
                            this.className ="";//将li的class属性设置为空
                        }
                    }
                }
            </script>
        </head>
        <body>
            <ul>
                <li>
                    <span>平板电视</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>            
                <li>
                    <span>电脑</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>
                <li>
                    <span>手机</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>
                <li>
                    <span>洗衣机</span>
                    <div class="submenu">
                        <span>平板电视</span>
                        <span>平板电视</span>
                        <span>平板电视</span>
                    </div>
                </li>
            </ul>
        </body>
    </html>
    ul{
        width:150px;
        background: #DDDDDD;
        padding:0px;
    }
    
    ul li{
        list-style-type: none;
        height:30px;
    }
    ul li span{
        display: block;
        line-height: 30px;    
        text-align: center;
    }
    .submenu{
        display: none;/*将悬浮层隐藏*/
        position: absolute;/*使用绝对定位的left和top属性将该盒子定位再导航栏附近*/
        left:158px;
        top:15px;
        height:125px;
        width:400px;
        background: pink;
        z-index: 4;/*设置该层的优先级指数,越大优先级越大*/
    }
    .submenu span{
        display: block;/*悬浮层中的内容,优先级设置要比底层盒子高避免被覆盖*/
        z-index: 6;
        color: #313131;
        border-bottom: 1px solid #CCCCCC;
    }
    ul .lihover{
        background: #FFFFFF;
    }
    ul .lihover .submenu{
        display: block;
    }

    具体实现看:http://how2j.cn/k/tmall-front/tmall-front-821/821.html?p=47048

  • 相关阅读:
    linux下安装启动rpc服务
    Red Hat5下源码安装mysql5.6过程记录
    安装使用Oracle OSWbb/OSWbba工具
    使用pip安装BeautifulSoup4模块
    部署Thomas Kyte 的 runstats 工具
    centos7之zabbix监控DELL磁盘阵列
    centos6.5之phpmyadmin安装
    centos7之zabbix服务器的常规优化及其它设置
    centos7之zabbix简单检查之端口监控
    mysql和mariadb备份工具xtrabackup和mariabackup(mariadb上版本必须用这个)
  • 原文地址:https://www.cnblogs.com/myfaith-feng/p/9223070.html
Copyright © 2011-2022 走看看