纯CSS实现树状结构导航,纯CSS折叠菜单,简单粗暴,就是这么强大

在对网站进行mip改造的时候,使用百度的导航组件,很难有较好的展现形式。

百度又不允许自定义JS,所以,考虑增加CSS(是在百度组件的基础上增加JS),用css补充实现点击功能,实现精美的导航。

最终结果是为了实现以下三个样式

1.未展开状态

2.展开状态,有二级导航的,要出现+号

3.点击+号能展开二级菜单

参考以下树状CSS的设计思路,主要是使用 html5的 details summary标签,注意看注释

演示图如下

 代码如下

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>纯CSS样式控制折叠展开菜单效果特效演示</title>
    <meta name="description" content="纯CSS样式控制折叠展开菜单效果特效演示。" />
    <meta name="keywords" content="纯CSS,样式控制,折叠展开,菜单,效果,特效演示" />
    <meta name="author" content="jQuery插件库" />
    <meta name="Copyright" content="jQuery插件库" />
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        a {
            text-decoration: none;
        }

        #conter {
            width: 1000px;
            margin: auto;
        }

        #help-left {
            width: 200px;
            font-family: ‘microsoft YaHei‘;
            float: left;
        }

        .menu {
            border-left: 1px solid #ccc;
            border-right: 1px solid #ccc;
        }

        .menu:last-child {
            border-bottom: 1px solid #ccc;
        }

        .menu summary {
            height: 40px;
            line-height: 40px;
            text-indent: 10px;
            outline: none;
            font-size: 14px;
            font-weight: 700;
            border-top: 1px solid #ddd;
            background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FEFEFE), color-stop(1, #CCCCCC));
            cursor: pointer;
        }
  /*使用下面这个,可以去掉小三角,神奇的菜单就可以完成了*/
        .menu summary::-webkit-details-marker {
            display: none;
        }

        .menu summary:before {
            content: "+";

            display: inline-block;
            width: 16px;
            height: 16px;
            margin-right: 10px;
            font-size: 18px;
            font-weight: 700;
        }

        .menu[open] summary:before {
            content: "-";

        }

        .menu ul {
            padding: 10px 0;
        }

        .menu ul li {
            list-style: none;
            text-indent: 25px;
            font-size: 12px;
            height: 30px;
            line-height: 30px;
        }

        .menu ul li a {
            display: block;
            color: #666;
        }

        .menu ul li a:hover {
            text-decoration: underline;
        }
    </style>

</head>

<body>
    <section id="conter">
        <section id="help-left">
            <!--open为展开菜单,close为折叠菜单-->
            <details class="menu" close>
                <summary>洋魔坊保障</summary>
                <ul>
                    <li><a href="#">正品保障</a></li>
                    <li><a href="#">海外直供</a></li>
                </ul>
            </details>
            <details class="menu" close>
                <summary>新手帮助</summary>
                <ul>
                    <li><a href="#">申请支付宝</a></li>
                    <li><a href="#">支付宝充值</a></li>
                </ul>
            </details>
            <details class="menu" close>
                <summary>支付方式</summary>
                <ul>
                    <li><a href="#">支付宝快捷支付</a></li>
                    <li><a href="#">支付宝余额支付</a></li>
                    <li><a href="#">新手入门</a></li>
                </ul>
            </details>
            <details class="menu" close>
                <summary>商家支持</summary>
                <ul>
                    <li><a href="#">洋魔坊规则</a></li>
                    <li><a href="#">国际招商</a></li>
                    <li><a href="#">服务商招募</a></li>
                    <li><a href="#">商家系统对接</a></li>
                    <li><a href="#">联系我们</a></li>
                </ul>
            </details>
        </section>
        <section id="help-right"></section>
    </section>
</body>

</html>

  

  大家,赋值上面的代码,直接一个页面,不需要任何JS,就可以实现折叠二级菜单,甚至是多级菜单的效果了。

赶快自己动手吧。我的百度mip改造,遇到这个导航的问题就要搞定了。

原文地址:https://www.cnblogs.com/cn-oldboy/p/12495825.html

时间: 2024-09-30 11:19:13

纯CSS实现树状结构导航,纯CSS折叠菜单,简单粗暴,就是这么强大的相关文章

纯CSS构造树状结构图

<!doctype html> <html> <head> <meta charset="utf-8"> <title>纯CSS构造树状结构图</title> </head> <body> <div style="width:380px; height:600px; border:1px dashed gray; margin:30px auto; text-align:ce

由简入繁实现Jquery树状结构

在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比如说Jquery.treeview.js插件. 下面就直入主题,开始从简入繁的分析怎么使用treeview插件,从已知的知识开始轻松入手,让树状结构唾手可得. 显示树状结构的几个实现步骤: 一.HTML做初始静态原型. 首先通过<ul></ul><li></li>

利用checkbox自带属性indeterminate构建含部分选中状态的树状结构

本来上个月就像发的,但是一直忙啊忙的也没时间整理,所以拖到了现在. 好吧上面这句就是废话,我就是感概下.下面是正文. 前段时间在弄一个轻量级的web项目,要构建一个树状结构目录,同时希望能把部分选中的状态给表现出来.项目中只用了jquery,个人也不想再引入一些其他的js框架或者插件,一个是考虑到界面展示的样式效果会不一样,另外就是懒得去研究啦. 话不多说,直接上测试图片和代码. Ps:我代码里还含有一些设置css以及属性等代码,需要参考的朋友请自动忽略.博文结尾处有我当时找到参考的外国网站上的

【ExtJs】利用树状结构、Border布局与标签页刻划OA界面

之前说ExtJs是最适合做OA界面的前端框架,因为它把客户端界面搬来了网页,这东西可以说是,就是为那些各种各样的OA信息系统而生的. 一.基本目标 做出如下的OA界面,点击左边的项可以打开相应的标签页,点击标签页的关闭按钮可以关闭这个标签页,在下方的操作信息栏记录相应的操作. 树状结构可以折叠,可以调整.操作信息可以节点. 搞出这样的结构,就是从小的方面研究ExtJs的其它UI组件与Ajax系统,再配合php,aspx或者jsp等后端语言,就可以去OA系统开黑了,或者,一个不爽,标签页里面的系统

权限模块_分配权限_显示树状结构_页面中的选中效果

权限模块__分配权限__显示树状结构1 显示树状结构:依赖关系 setPrivilegeUI.jsp <!-- 显示权限树 --> <td> <!--用它回显 <s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name"></s:checkboxlist> --

Day03处理上级部门(树状结构)和用户管理

系统管理:部门管理-处理上级部门 添加或者修改时,上级部门的格式如图:.解决此功能将面临两个问题:1.将所有部门名称以下拉选的形式展示出来2.以树状结构展示.在此我们先解决问题1. 在添加页面中展示所有部门名称,并完成添加功能 DepartmentAction: public String addUI() throws Exception { //准备数据 List<Department> departmentList = departmentService.findAll(); Action

Android无限级树状结构

通过对ListView简单的扩展.再封装,即可实现无限层级的树控件TreeView. 1 package cn.asiontang.nleveltreelistview; 2 3 import android.annotation.TargetApi; 4 import android.content.Context; 5 import android.os.Build; 6 import android.util.AttributeSet; 7 import android.view.View

在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构

将实体绑定到TreeView控件,实现树状结构的显示,如下图所示.这个功能通过HierarchicalDataTemplate实现. ? 1. 业务实体 作为举例,我定义了一个大家都很熟悉的Folder类型,即文件夹.我们都知道,文件夹又可以包含子文件夹,而且可以多层嵌套.所以,这是一个递归的结构体. public class Folder { public string Name { get; set; } public ObservableCollection<Folder> Folder

c# 递归、树状结构

1.树状结构 treeView.Nodes.Clear(); TreeNode tree = new TreeNode(); tree.Text = "字母"; treeView.Nodes.Add(tree); // tree.Nodes.Add("A"); TreeNode tree1 = new TreeNode(); tree1.Text = "汉字"; treeView.Nodes.Add(tree1); TreeNode a = ne