首先看要实现的效果, 主要是关心技术实现, 所以没怎么美化

我也是初学html, 所以写的比较啰嗦

1. 使用列表将内容显示出来

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        /*写css的地方*/
    </style>
</head>
<body>
    <div id="leftMenu">
        <ul>
            <li><a href="#">一级目录1</a>
                <ul>
                    <li><a href="#">100001</a></li>
                    <li><a href="#">100002</a></li>
                </ul>
            </li>
            <li><a href="#">一级目录2</a></li>
            <li><a href="#">一级目录3</a>
                <ul>
                    <li><a href="#">300001</a></li>
                    <li><a href="#">300002</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>

这样会显示如下效果

这里不好看的地方是:

A. 二级目录预想是排在一级目录右边的, 但现在却是在下面的

B. 目录前面的小黑点和小圆圈是不需要的

2. 修改css

<style>
    *{margin: 0;padding: 0;}   /*消除各种浏览器的边距默认值*/
    #leftMenu ul{                     /*作用于id=leftMenu的元素所有含有的ul*/
        width: 100px;                 /*宽度设置为100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;           /*去除列表的小圆点*/
    }
   
    #leftMenu li{                  /*作用于id=leftMenu的元素所有含有的li*/
        width: 100px;             /*宽度设置为100*/
    }
</style>

嗯, 这样好看多了, 但是二级目录还是没有排版到一级目录的右边

3. 给ul加上 position:absolute; 使ul脱离文档流, 悬浮在原来文档流的上面

*{margin: 0;padding: 0;}   /*消除各种浏览器的边距默认值*/
    #leftMenu ul{              /*作用于id=leftMenu的元素所有含有的ul*/
        width: 100px;            /*宽度设置为100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;        /*去除列表的小圆点*/
        position:absolute;
    }
   
    #leftMenu li{              /*作用于id=leftMenu的元素所有含有的li*/
        width: 100px;            /*宽度设置为100*/
    }
</style>

4. 增加功能: 二级目录默认不显示, 鼠标悬停在一级目录上时, 才显示

<style>
    *{margin: 0;padding: 0;}   /*消除各种浏览器的边距默认值*/
    #leftMenu ul{              /*作用于id=leftMenu的元素所有含有的ul*/
        width: 100px;            /*宽度设置为100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;        /*去除列表的小圆点*/
        position:absolute;
    }
   
    #leftMenu li{              /*作用于id=leftMenu的元素所有含有的li*/
        width: 100px;            /*宽度设置为100*/
    }
    #leftMenu li>ul{       /*作用于 li的直接子元素ul */
        left: 100px;            /*一级目录本身宽度100px, 所以二级目录显示的时候要向右偏移100px, 为什么使用的是left呢? 自己学习css吧*/
        display: none;    /*二级目录默认是不显示的*/
    }
    #leftMenu li:hover>ul /*当鼠标悬停在li上时, li的直接子元素ul就显示出来*/
    {display: block;}     /*显示出来*/
</style>

5. 上面的问题是 100001 没有与 一级目录1 同一高度

<style>
    *{margin: 0;padding: 0;}   /*消除各种浏览器的边距默认值*/
    #leftMenu ul{              /*作用于id=leftMenu的元素所有含有的ul*/
        width: 100px;            /*宽度设置为100*/
        background: #DADADA;     /*增加背景色方便查看*/
        list-style: none;        /*去除列表的小圆点*/
        position:absolute;
    }
   
    #leftMenu li{              /*作用于id=leftMenu的元素所有含有的li*/
        width: 100px;            /*宽度设置为100*/
        position: relative;      /*设置为相对位置*/
    }
    #leftMenu li>ul{       /*作用于 li的直接子元素ul */
        left: 100px;            /*一级目录本身宽度100px, 所以二级目录显示的时候要向右偏移100px, 为什么要用left呢? 自己学习css吧*/
        top: 0;           /*top的偏移位置相对于父元素为0*/
        display: none;    /*二级目录默认是不显示的*/
    }
    #leftMenu li:hover>ul /*当鼠标悬停在li上时, li的直接子元素ul就显示出来*/
    {display: block;}     /*显示出来*/
</style>

6. 给一个完整界面

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <style>
        *{margin:0;padding:0;}
        #leftMenu ul{width:100px;position:absolute;background:#DADADA;list-style:none;}
        #leftMenu li{width:100px;position: relative;}
        #leftMenu li>ul{left: 100px;top: 0;display: none;}
        #leftMenu li:hover>ul{display: block;}
    </style>
</head>
<body>
    <div id="leftMenu">
        <ul>
            <li><a href="#">一级目录1</a>
                <ul>
                    <li><a href="#">100001</a></li>
                    <li><a href="#">100002</a>
                        <ul>
                            <li><a href="#">100021</a></li>
                            <li><a href="#">100022</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li><a href="#">一级目录2</a></li>
            <li><a href="#">一级目录3</a>
                <ul>
                    <li><a href="#">300001</a></li>
                    <li><a href="#">300002</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>

CSS实现左侧多级菜单栏的更多相关文章

  1. 左侧多级菜单,高亮显示js

    左侧多级菜单,如果本页面是当前栏目,则左侧菜单高亮显示 <ul class="nav navbar-stacked" id="navs"> {ded ...

  2. CSS浮动布局与菜单栏设计

    公司周六停电,终于可以双休了.用周五空余时间再夯实一下css基础,<CSS权威指南>概念性的内容看起来容易犯困,不如实践来得快,动手操作吧. 一.浮动布局 浮动存在问题:浮动使元素脱离文档 ...

  3. CSS布局 -- 左侧定宽,右侧自适应

    左侧定宽,右侧自适应 有很多种方法可以实现 缩小窗口试试看? 方案一: 左边左浮动,右边加个margin-left 查看 demo <!DOCTYPE html PUBLIC "-// ...

  4. css实现左侧固定宽,右侧自适应的7中方法

    一个面试会问的问题,如何实现两个盒子,左侧固定宽度,右侧自适应. 1.利用 calc 计算宽度的方法 css代码如下: .box{overflow: hidden;height: 100px;marg ...

  5. CSS 实现左侧固定,右侧自适应两栏布局的方法

    "左边固定,右边自适应的两栏布局",其中有老生常谈的float方法,BFC方法,也有CSS3的flex布局与grid布局.并非所有的布局都会在开发中使用,但是其中也会涉及一些知识点 ...

  6. HTML和CSS实现左侧固定宽度右侧内容可滚动

    在做移动端页面的时候,经常会碰到一个div中分左右两个div,左侧div固定宽度或百分比,右侧div中内容左右溢出,需要左右滑动才可以浏览到全部内容,为此写了一个demo. 处理这个问题的核心关键点是 ...

  7. [转]css实现左侧宽度自适应,右侧固定宽度

    原文地址:https://segmentfault.com/a/1190000008411418 页面布局中经常用会遇到左侧宽度自适应,右侧固定宽度,或者左侧宽度固定,右侧自适应.总之就是一边固定宽度 ...

  8. css中左侧固定,右侧自适应

    谈谈我开始出来工作时候的一道面试题吧 当初我记得在太平洋网络面试的时候,面试官给我出了这么一道题: 有一个外层的div 中间有左右两个div 要求左侧的div 1.只告诉你宽度;       2.只告 ...

  9. layui 左侧三级菜单栏

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

随机推荐

  1. webpack 中,module、chunk、bundle 的区别(待补充)

    项目 区别 module 是开发中的单个模块 chunk 中文意思是"块",是指 webpack 在进行模块依赖分析的时候,代码分割出来的代码块 bundle

  2. ubuntu18关闭系统自动更新

    ubuntu18.04关闭系统自动更新有两个方法:1.修改配置文件 修改配置文件/etc/apt/apt.conf.d/10periodic#0是关闭,1是开启,将所有值改为0vi etc/apt/a ...

  3. js 缓存后端的数据

    var power = (function () { var cacheObj=[] ; return { get: function (key) { if (cacheObj.length === ...

  4. 初识DMA

    初识DMA 关于AXI4-Memory Map 与 AXI4-Stream之间的转换: 查阅UG1037 重点关注DataMover这一块 此图似乎有错误之处,需要再次确认.

  5. c++11 关于typelist的foreach

    建好一个typelist,其中都是类型信息而已,很重要的一个应用,循环迭代干些事情. 看了下boost的for_each实现,用我自己的typelist,大概代码如下: template<typ ...

  6. 轻量应用服务器安装 phpMyAdmin

    第一步:在phpMyAdmin官方网站http://www.phpmyadmin.net/downloads/下载源码包并解压 cd /usr/local/src wget https://files ...

  7. 如何判断ACCESS数据库有无密码

    因为没有密码的数据库即使加上密码选项连接也不报错,所以如果通过连接来判读就无法识别无密码的数据库. 通过设置密码可以来测试数据库是否有密码,这是由于修改数据库密码的前提是数据库必须先有密码才行,如果数 ...

  8. 20165312 2017-2018-2《Java程序设计》课程总结

    20165312 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:C语言基础调查和java学习展望 预备作业3:Linux安 ...

  9. 1、根"/"目录结构

    1.目录结构 FSH [root@localhost /]# tree -L . ├── bin -> usr/bin #普通用户使用的命令 ├── boot #存放系统启动相关文件,例如ker ...

  10. java多线程中最佳的实践方案是什么?

    java多线程中最佳的实践方案是什么? 给你的线程起个有意义的名字.这样可以方便找bug或追踪.OrderProcessor, QuoteProcessor or TradeProcessor 这种名 ...