Rumah pembangunan bahagian belakang tutorial php css实现多级折叠菜单效果

css实现多级折叠菜单效果

Mar 30, 2018 am 10:45 AM
css Kesan

本文主要和大家介绍了纯css实现多级折叠菜单折叠树效果,运用checkbox的checked值来判断下级栏目是否展开,通过css3选择器提供的checked伪类来实现此效果,感兴趣的朋友参考下吧,希望能帮助到大家。

1、运用checkbox的checked值来判断下级栏目是否展开,CSS3的选择器中提供了:checked 这个伪类,这个伪类提供我们,当元素拥有checked这个值的时候就执行你的CSS。

当有子菜单时,菜单项右侧有向下的箭头,当收起菜单项时,箭头朝上。图片可以自己替换。

2、效果图

3、代码片段


<ol class="tree">  
       <li>  
           <label for="folder1" class="folderOne">泽元框架</label> <input type="checkbox" id="folder1" /> 
           <ol>  
                <li>  
                   <label for="subfolder1"class="folderTwo">开发规范</label> <input type="checkbox" id="subfolder1"  />   
                   <ol>  
                       <li class="file folderThree"><a href="#">常见界面错误举例</a></li>  
                       <li class="file folderThree"><a href="#">关于发行报告对BUG管理提出…</a></li>  
                       <li class="file folderThree"><a href="#">插件内部JAVA包命名规范</a></li>  
                   </ol>  
               </li> 
                <li class="file folderTwo"><a href="#">概述</a></li>  
                <li class="file folderTwo"><a href="#">服务器集群</a></li>  
                <li class="file folderTwo"><a href="#">模板</a></li>  
                <li class="file folderTwo"><a href="#">安全机制</a></li>   
           </ol>  
  
       </li>  
       <li>  
           <label for="folder2" class="folderOne" >ZCMS</label> <input type="checkbox" id="folder2" />   
           <ol>  
               <li class="file folderTwo"><a href="#">实时数据</a></li> 
               <li>  
                   <label for="subfolder2" class="folderTwo">实时数据</label> <input type="checkbox" id="subfolder2"  />   
                   <ol>  
                       <li class="file folderThree"><a href="#">实时数据</a></li>  
                       <li class="file folderThree"><a href="#">实时数据</a></li>  
                       <li class="file folderThree"><a href="#">实时数据</a></li>  
                   </ol>  
               </li>  
           </ol>  
       </li> 
       <li>  
           <label for="folder3"  class="folderOne">ZAS</label> <input type="checkbox" id="folder3" />   
           <ol>  
               <li class="file folderTwo"><a href="#">实时数据</a></li> 
               <li class="file folderTwo"><a href="#">实时数据</a></li> 
           </ol>  
       </li> 
       <li>  
           <label for="folder4"  class="folderOne">ZHTML标签</label> <input type="checkbox" id="folder4"/>   
           <ol>  
               <li class="file folderTwo"><a href="#">实时数据</a></li> 
               <li class="file folderTwo"><a href="#">实时数据</a></li> 
           </ol>  
       </li> 
       <li>  
           <label for="folder5"  class="folderOne">UI框架API手册</label> <input type="checkbox" id="folder5"/>   
           <ol>  
               <li class="file folderTwo"><a href="#">实时数据</a></li> 
               <li class="file folderTwo"><a href="#">实时数据</a></li> 
           </ol>  
       </li> 
   </ol>

<style type="text/css">  
    .tree {margin: 0;padding: 0;background-color:#f2f2f2;overflow: hidden;}  
    /*隐藏input*/
    .tree li input{position: absolute;left: 0;opacity: 0;z-index: 2;cursor: pointer;height: 1em;width:1em;top: 0;}  
    /*所有菜单项设置统一样式*/
    .tree li {position: relative;list-style: none;}   
    /*一级菜单加下边线*/
    .tree>li{border-bottom: 1px solid #d9d9d9;}
    /*给有子菜单的菜单项添加背景图标*/
    .tree li label {max-width:999px;cursor: pointer;display: block;margin:0 0 0 -50px;padding: 15px 10px 15px 70px;background: url(../../images/cp-detail-arrow-b.png) no-repeat right center;background-position:95% 50%;white-space:nowrap;overflow:hidden;text-overflow: ellipsis; }  
    .tree li label:hover,li label:focus{background-color:#a7a7a7;color:#fff;}
    /*清除所有展开的子菜单的display*/
    .tree li input + ol{display: none;}  
    /*当input被选中时,给所有展开的子菜单设置样式*/
    .tree input:checked + ol {padding-left:14px;height: auto;display: block;}  
    .tree input:checked + ol > li { height: auto;}  
    /*末层菜单为A标签,设置样式*/
    .tree li.file a{margin:0 -10px 0 -50px;padding: 15px 20px 15px 70px;text-decoration:none;display: block;color:#333333;white-space:nowrap;overflow:hidden;text-overflow: ellipsis;} 
    .tree li.file a:hover,li.file a:focus{background-color:#a7a7a7;color:#fff;} 
    /*不同层级的菜单字体大小不同*/
    .tree .folderOne{font-size: 18px;}
    .tree .folderTwo{font-size:16px;}
    .tree .folderThree{font-size:14px;}
</style>

<script type="text/javascript">
       $(document).ready(function() {
           //每个有子菜单的菜单项添加点击事件
           $(".tree label").click(function(){
               //获取当前菜单旁边input的check状态
               var isChecked = $(this).next("input[type=&#39;checkbox&#39;]").is(&#39;:checked&#39;);
               //展开和收齐的不同状态下更换右侧小图标
               if(isChecked){
                   $(this).css(
                       "background-image","url(../images/cp-detail-arrow-b.png)"
                   );
               }else{
                   $(this).css(
                       "background-image","url(../images/cp-detail-arrow-t.png)"
                   );
               }
           });
            
       });
   </script>
Salin selepas log masuk

下面介绍下CSS 菜单折叠

先给大家展示效果图:

如上,假设一级菜单是 p,二级菜单是 ul。形如:


<p>业务管理<span></span></p>
<ul>
...
<ul>

<p class="collapsed">汇总分析<span></span></</p>
<ul>
...
<ul>

<p class="collapsed">>系统管理<span></span></</p>
<ul>
...
<ul>
Salin selepas log masuk

当菜单展开时,左边有一个蓝色的标记,右边是折叠标记。

左边蓝色标记自不用表,CSS 设置 border 即可,右边利用 CSS 也超方便。


p span { float:right; padding-right:20px; }
p span:after { content: "∨" }
p.collapsed span:after { content: "∧" }
Salin selepas log masuk

然后再说子菜单的折叠效果,有动画噢:


p.collapsed + ul { height: 0px; transition: height 0.5s ease-out; }
p ul { height: 80px; transition: height 0.5s ease-in; }
Salin selepas log masuk

注意 ul 一定要有 height 的具体值,如果没有具体指明多少 px,则虽然能折叠,但是没有动画效果。

最后就是利用 jQuery 或 ezj 切换 className 了,当点击 p 的时候 toggleClass("collapsed")。

Atas ialah kandungan terperinci css实现多级折叠菜单效果. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan bootstrap di vue Cara menggunakan bootstrap di vue Apr 07, 2025 pm 11:33 PM

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Peranan HTML, CSS, dan JavaScript: Tanggungjawab Teras Peranan HTML, CSS, dan JavaScript: Tanggungjawab Teras Apr 08, 2025 pm 07:05 PM

HTML mentakrifkan struktur web, CSS bertanggungjawab untuk gaya dan susun atur, dan JavaScript memberikan interaksi dinamik. Ketiga melaksanakan tugas mereka dalam pembangunan web dan bersama -sama membina laman web yang berwarna -warni.

Cara Menulis Garis Pecah Di Bootstrap Cara Menulis Garis Pecah Di Bootstrap Apr 07, 2025 pm 03:12 PM

Terdapat dua cara untuk membuat garis perpecahan bootstrap: menggunakan tag, yang mewujudkan garis perpecahan mendatar. Gunakan harta sempadan CSS untuk membuat garis perpecahan gaya tersuai.

Memahami HTML, CSS, dan JavaScript: Panduan Pemula Memahami HTML, CSS, dan JavaScript: Panduan Pemula Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesOnhtml, CSS, andjavascript: 1) HtmlStructuresContent, 2) CSSStylesit, dan3) JavaScriptaddsInteractivity, Formingthebasisofmodernwebexperiences.

Cara menggunakan butang bootstrap Cara menggunakan butang bootstrap Apr 07, 2025 pm 03:09 PM

Bagaimana cara menggunakan butang bootstrap? Perkenalkan CSS bootstrap untuk membuat elemen butang dan tambahkan kelas butang bootstrap untuk menambah teks butang

Cara Menyiapkan Kerangka untuk Bootstrap Cara Menyiapkan Kerangka untuk Bootstrap Apr 07, 2025 pm 03:27 PM

Untuk menubuhkan rangka kerja bootstrap, anda perlu mengikuti langkah -langkah ini: 1. Rujuk fail bootstrap melalui CDN; 2. Muat turun dan tuan rumah fail pada pelayan anda sendiri; 3. Sertakan fail bootstrap di HTML; 4. Menyusun sass/kurang seperti yang diperlukan; 5. Import fail tersuai (pilihan). Setelah persediaan selesai, anda boleh menggunakan sistem grid Bootstrap, komponen, dan gaya untuk membuat laman web dan aplikasi yang responsif.

Cara memasukkan gambar di bootstrap Cara memasukkan gambar di bootstrap Apr 07, 2025 pm 03:30 PM

Terdapat beberapa cara untuk memasukkan imej dalam bootstrap: masukkan imej secara langsung, menggunakan tag HTML IMG. Dengan komponen imej bootstrap, anda boleh memberikan imej yang responsif dan lebih banyak gaya. Tetapkan saiz imej, gunakan kelas IMG-cecair untuk membuat imej boleh disesuaikan. Tetapkan sempadan, menggunakan kelas IMG-Sempadan. Tetapkan sudut bulat dan gunakan kelas IMG-bulat. Tetapkan bayangan, gunakan kelas bayangan. Saiz semula dan letakkan imej, menggunakan gaya CSS. Menggunakan imej latar belakang, gunakan harta CSS imej latar belakang.

Cara mengubah saiz bootstrap Cara mengubah saiz bootstrap Apr 07, 2025 pm 03:18 PM

Untuk menyesuaikan saiz unsur-unsur dalam bootstrap, anda boleh menggunakan kelas dimensi, yang termasuk: menyesuaikan lebar: .col-, .w-, .mw-adjust ketinggian: .h-, .min-h-, .max-h-

See all articles