Home Web Front-end CSS Tutorial An introduction to how to create a collapsible tree menu using pure CSS

An introduction to how to create a collapsible tree menu using pure CSS

Mar 17, 2017 pm 01:00 PM
css

With the release of CSS3, foreign research is in full swing, but there are still many people in China who hold the idea that IE does not support CSS3 and remain indifferent and refuse to learn. But history tells us that good things will prevail, and CSS3 will eventually replace CSS2. Let’s share with you a collapsible tree menu created with CSS3.

I believe everyone is familiar with the tree menu. We usually use css+JS to implement it. The arrival of CSS3 allows us to get rid of the constraints of JS and directly use the "selector" of CSS3 to realize a collapsible tree menu.

There is a lot of overall code, so I won’t go into it sentence by sentence. I will only mention what I think is important.

Html code:





    1. file">subordinate< ;/li>




      1. Unlimited

      2. < a>Infinite level

      3. Infinite level

      4. Unlimited level

      5. Infinite level
      6. Unlimited



    2. < ;/ol>


      The idea of ​​implementation is to use the checked value of checkbox to determine whether the subordinate column is expanded. The CSS3 selector provides: checked this pseudo-class, this pseudo-class provides us with executing your CSS when the element has the checked value. (Very powerful, right? With CSS3 we will write a lot less JS!)




      When the checkbox has a checked value, the OL will be realized to achieve the function we want.

      Let’s look at the CSS code next:

      li input {
      position:absolute;left:0;margin-left:0;opacity:0;z-index:2; cursor:pointer;height:1em;width:1em;top:0;
      }
      input + ol {
      display:none;
      }
      input + ol > li {
      height:0;overflow:hidden;margin-left:-14px!important;padding-left:1px;
      }
      li label {
      cursor:pointer;display:block;padding-left:17px ;background:url(toggle-small-expand.png) no-repeat 0px 1px;
      }
      input:checked + ol {
      background:url(toggle-small.png) 44px 5px no-repeat ;margin:-22px 0 0 -44px;padding:27px 0 0 80px;height:auto;display:block;
      }
      input:checked + ol > li {
      height:auto;
      }

      This code is the center of the tree menu:

      input:checked + ol {
      background: url(toggle-small.png) 44px 5px no-repeat;margin : -22px 0 0 -44px;padding:27px 0 0 80px;height: auto;display: block;
      }

      This is the style owned by the OL of the same level after inoput has checked. .

      You don’t have to read it if you are using IE9 or below. Please use a non-IE browser.

      (You can also want IE6+ browser to support it, but you need to add JS to simulate css3 attributes. There are many talented people abroad who have written JS to let IE6+ browser support part of CSS3, such as PIE.)

      Summary:

      Generally speaking, the implementation idea is very simple, mainly using the checked pseudo-class of CSS3 to realize the hidden display of OL. Unfortunately, the IE browser does not support CSS3, but we cannot give up research on CSS3 just because IE does not support it. CSS3 and HTML5 are both very hot topics in the front-end abroad. Their research far exceeds ours, but there are still not many people who actually try it in China. It is very sad for a front-end developer. thing. I think CSS3 should attract our attention and not let us lose at the starting line. Let us all work together to promote the development of CSS3.

      The above is the detailed content of An introduction to how to create a collapsible tree menu using pure CSS. For more information, please follow other related articles on the PHP Chinese website!

  • Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    AI Hentai Generator

    AI Hentai Generator

    Generate AI Hentai for free.

    Hot Article

    R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
    2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    Repo: How To Revive Teammates
    4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island Adventure: How To Get Giant Seeds
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    What does placeholder mean in vue What does placeholder mean in vue May 07, 2024 am 09:57 AM

    In Vue.js, the placeholder attribute specifies the placeholder text of the input element, which is displayed when the user has not entered content, provides input tips or examples, and improves form accessibility. Its usage is to set the placeholder attribute on the input element and customize the appearance using CSS. Best practices include being relevant to the input, being short and clear, avoiding default text, and considering accessibility.

    What does span mean in js What does span mean in js May 06, 2024 am 11:42 AM

    The span tag can add styles, attributes, or behaviors to text. It is used to: add styles, such as color and font size. Set attributes such as id, class, etc. Associated behaviors such as clicks, hovers, etc. Mark text for further processing or citation.

    What does rem mean in js What does rem mean in js May 06, 2024 am 11:30 AM

    REM in CSS is a relative unit relative to the font size of the root element (html). It has the following characteristics: relative to the root element font size, not affected by the parent element. When the root element's font size changes, elements using REM will adjust accordingly. Can be used with any CSS property. Advantages of using REM include: Responsiveness: Keep text readable on different devices and screen sizes. Consistency: Make sure font sizes are consistent throughout your website. Scalability: Easily change the global font size by adjusting the root element font size.

    How to introduce images into vue How to introduce images into vue May 02, 2024 pm 10:48 PM

    There are five ways to introduce images in Vue: through URL, require function, static file, v-bind directive and CSS background image. Dynamic images can be handled in Vue's computed properties or listeners, and bundled tools can be used to optimize image loading. Make sure the path is correct otherwise a loading error will appear.

    What is the function of span tag What is the function of span tag Apr 30, 2024 pm 01:54 PM

    The SPAN tag is an inline HTML tag that is used to highlight text by applying attributes such as style, color, and font size. This includes emphasizing text, grouping text, adding hover effects, and dynamically updating content. It is used by placing <span> and </span> tags around the text you want to emphasize, and is manipulated via CSS styling or JavaScript. The benefits of SPAN tags include semantic clarity, styling flexibility, and ease of maintenance.

    How to wrap prompt in js How to wrap prompt in js May 01, 2024 am 06:24 AM

    When using the prompt() method in JavaScript, you can achieve line breaks through the following three methods: 1. Insert the "\n" character at the position where you want to break the line; 2. Use the line break character in the prompt text; 3. Use CSS's "white" -space: pre" style forces line breaks.

    What language is the browser plug-in written in? What language is the browser plug-in written in? May 08, 2024 pm 09:36 PM

    Browser plug-ins are usually written in the following languages: Front-end languages: JavaScript, HTML, CSS Back-end languages: C++, Rust, WebAssembly Other languages: Python, Java

    What is node in js What is node in js May 07, 2024 pm 09:06 PM

    Nodes are entities in the JavaScript DOM that represent HTML elements. They represent a specific element in the page and can be used to access and manipulate that element. Common node types include element nodes, text nodes, comment nodes, and document nodes. Through DOM methods such as getElementById(), you can access nodes and operate on them, including modifying properties, adding/removing child nodes, inserting/replacing nodes, and cloning nodes. Node traversal helps navigate within the DOM structure. Nodes are useful for dynamically creating page content, event handling, animation, and data binding.

    See all articles