Pure CSS Collapse Accordion

前端 未结 3 489
青春惊慌失措
青春惊慌失措 2021-01-24 20:00

I have a CSS collapse accordion with just pure CSS, it is working perfect.

I have just 1 issue: right now if the user click in any label: Label One, Label Two, Label Thr

相关标签:
3条回答
  • 2021-01-24 20:32

    It runs perfectly when u change type radio to type checkbox. https://jsfiddle.net/4xvsn17y/

    /* Acordeon styles */
    
    .tab {
      position: relative;
      margin-bottom: 1px;
      width: 100%;
      color: #fff;
      overflow: hidden;
    }
    
    input {
      position: absolute;
      opacity: 0;
      z-index: -1;
    }
    
    label {
      position: relative;
      display: block;
      padding: 0 0 0 1em;
      background: #16a085;
      font-weight: bold;
      line-height: 3;
      cursor: pointer;
    }
    
    .blue label {
      background: #2980b9;
    }
    
    .tab-content {
      max-height: 0;
      overflow: hidden;
      background: #1abc9c;
      -webkit-transition: max-height .35s;
      -o-transition: max-height .35s;
      transition: max-height .35s;
    }
    
    .blue .tab-content {
      background: #3498db;
    }
    
    .tab-content p {
      margin: 1em;
    }
    
    
    /* :checked */
    
    input:checked ~ .tab-content {
      max-height: 10em;
    }
    
    
    /* Icon */
    
    label::after {
      position: absolute;
      right: 0;
      top: 0;
      display: block;
      width: 3em;
      height: 3em;
      line-height: 3;
      text-align: center;
      -webkit-transition: all .35s;
      -o-transition: all .35s;
      transition: all .35s;
    }
    
    input[type=checkbox] + label::after {
      content: "+";
    }
    
    input[type=radio] + label::after {
      content: "\25BC";
    }
    
    input[type=checkbox]:checked + label::after {
      transform: rotate(315deg);
    }
    
    input[type=radio]:checked + label::after {
      transform: rotateX(180deg);
    }
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    
    <div class="wrapper">
      <div class="tab blue">
        <input id="tab-four" type="checkbox" name="tabs2">
        <label for="tab-four">Label One</label>
        <div class="tab-content">
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
        </div>
      </div>
      <div class="tab blue">
        <input id="tab-five" type="checkbox" name="tabs2">
        <label for="tab-five">Label Two</label>
        <div class="tab-content">
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
        </div>
      </div>
      <div class="tab blue">
        <input id="tab-six" type="checkbox" name="tabs2">
        <label for="tab-six">Label Three</label>
        <div class="tab-content">
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
        </div>
      </div>
    </div>

    0 讨论(0)
  • 2021-01-24 20:34

    if you want to use Jquery this code may help you

    this is html

    <div class="accordion">
        <div class="group">
            <a href="#" class="title">title 1</a>
            <div class="content">
                Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
            </div>
        </div>
        <div class="group">
            <a href="#" class="title">title 2</a>
            <div class="content">
                Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
            </div>
        </div>
        <div class="group">
            <a href="#" class="title">title 3</a>
            <div class="content">
                Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
            </div>
        </div>
    </div>
    

    this is css

    .title{
                text-decoration: none;
                font-size: 17px;
                display: block;
                padding: 10px;
                background: #ccc;
                color: #fff;
                border-bottom:1px solid #fff;
            }
            .group .content{
                display: none;
                padding: 10px;
                background: #43ad43;
                color: #fff;
            }
            .open .title{
                background: green !important;
                border-bottom:none;
            }
            .open .content{
                display: block;
            }
    

    and this is jquery

    $(document).ready(function () {
            $('.title').on('click',function (e) {
                e.preventDefault();
                var parent=$(this).parent();
    
    
                if (parent.hasClass('open')) {
                   parent.removeClass('open')
                }
                else{
                    $(".group").removeClass("open");
                    parent.addClass("open");
                }
    
            })
        });
    
    0 讨论(0)
  • 2021-01-24 20:52

    I think the radio type will cause the problem, because it has only 2 "data-way".

    0 讨论(0)
提交回复
热议问题