代码之家  ›  专栏  ›  技术社区  ›  softyoda yoann

单击手风琴图像后保持DIV活动

  •  0
  • softyoda yoann  · 技术社区  · 6 年前

    我想将此代码笔中可见的手风琴的:悬停到:活动: https://codepen.io/ferry/pen/ZYVwxz

    页面代码为:

    @import url(https://fonts.googleapis.com/css?family=Open+Sans);
    @import url(https://fonts.googleapis.com/css?family=Montserrat:700);
    h1 {
      text-align: center;
      font-family: Montserrat,sans-serif;
      color: #333;
    }
    
    .accordion {
      width: 100%;
      max-width: 1080px;
      height: 250px;
      overflow: hidden;
      margin: 50px auto;
    }
    .accordion ul {
      width: 100%;
      display: table;
      table-layout: fixed;
      margin: 0;
      padding: 0;
    }
    .accordion ul li {
      display: table-cell;
      vertical-align: bottom;
      position: relative;
      width: 16.666%;
      height: 250px;
      background-repeat: no-repeat;
      background-position: center center;
      transition: all 500ms ease;
    }
    .accordion ul li div {
      display: block;
      overflow: hidden;
      width: 100%;
    }
    .accordion ul li div span {
      display: block;
      width: 100%;
      height: 250px;
      overflow: hidden;
      position: absolute;
    }
    .accordion ul li div a {
      display: block;
      height: 250px;
      width: 100%;
      position: relative;
      z-index: 3;
      vertical-align: bottom;
      padding: 15px 20px;
      box-sizing: border-box;
      color: #fff;
      text-decoration: none;
      font-family: Open Sans, sans-serif;
      transition: all 200ms ease;
    }
    .accordion ul li div a * {
      opacity: 0;
      margin: 0;
      width: 100%;
      text-overflow: ellipsis;
      position: relative;
      z-index: 5;
      white-space: nowrap;
      overflow: hidden;
      -webkit-transform: translateX(-20px);
      transform: translateX(-20px);
      -webkit-transition: all 400ms ease;
      transition: all 400ms ease;
    }
    .accordion ul li div a h2 {
      font-family: Montserrat,sans-serif;
      text-overflow: clip;
      font-size: 24px;
      text-transform: uppercase;
      margin-bottom: 2px;
      top: 160px;
    }
    .accordion ul li div a p {
      top: 160px;
      font-size: 13.5px;
    }
    .accordion ul:active li {
      width: 8%;
    }
    .accordion ul:active li:active {
      width: 60%;
    }
    .accordion ul:active li:active a {
      background: rgba(0, 0, 0, 0.4);
    }
    .accordion ul:active li:active a * {
      opacity: 1;
      -webkit-transform: translateX(0);
      transform: translateX(0);
    }
    
    
    @media screen and (max-width: 600px) {
      body {
        margin: 0;
      }
    
      .accordion {
        height: auto;
      }
      .accordion ul li, .accordion ul li:active, .accordion ul:active li, .accordion ul:active li:active {
        position: relative;
        display: table;
        table-layout: fixed;
        width: 100%;
        -webkit-transition: none;
        transition: none;
      }
      .accordion ul li div, .accordion ul li span, .accordion ul li:active div, .accordion ul li:active span, .accordion ul:active li div, .accordion ul:active li span, .accordion ul:active li:active div, .accordion ul:active li:active span {
        display: table-cell;
        width: 100%;
        vertical-align: bottom;
      }
    }
    .about {
      text-align: center;
      font-family: 'Open Sans', sans-serif;
      font-size: 12px;
      color: #666;
    }
    .about a {
      color: blue;
      text-decoration: none;
    }
    .about a:active {
      text-decoration: underline;
    }
    <!DOCTYPE html>
    <html lang="en" >
    
    <head>
      <meta charset="UTF-8">
      <title>Responsive Accordion (Inline Images)</title>
      
      
    	  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
          <link rel="stylesheet" href="css/style.css">
    
      
    </head>
    
    <body>
    
      <h1>Responsive Accordion</h1>
    <div class="accordion">
      <ul>
        <li>
          <div>
            <span>
    		
              <img src="http://michael-ferry.com/assets/accordion1.jpg">
            </span>
            <a href="#">
              <h2>Lorem Ipsum</h2>
              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
            </a>
          </div>
        </li>
        <li>
          <div>
            <span>
              <img src="http://michael-ferry.com/assets/accordion2.jpg">
            </span>
            <a href="#">
              <h2>Lorem Ipsum</h2>
              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
            </a>
          </div>
        </li>
        <li>
          <div>
            <span>
              <img src="http://michael-ferry.com/assets/accordion3.jpg">
            </span>
            <a href="#">
              <h2>Lorem Ipsum</h2>
              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
            </a>
          </div>
        </li>
        <li>
          <div>
            <span>
              <img src="http://michael-ferry.com/assets/accordion4.jpg">
            </span>
            <a href="#">
              <h2>Lorem Ipsum</h2>
              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
            </a>
          </div>
        </li>
        <li>
          <div>
            <span>
              <img src="http://michael-ferry.com/assets/accordion5.jpg">
            </span>
            <a href="#">
              <h2>Lorem Ipsum</h2>
              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
            </a>
          </div>
        </li>
        <li>
          <div>
            <span>
              <img src="http://michael-ferry.com/assets/accordion6.jpg">
            </span>
            <a href="#">
              <h2>Lorem Ipsum</h2>
              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
            </a>
          </div>
        </li>
      </ul>
    </div>
    </html>

    我想在用户单击后保持手风琴打开。

    我不知道最好的方法是什么,使用复选框破解?使用js或jquery或其他什么?

    我尝试添加以下代码行:

    var $box_each = $(".accordion ul li a");
    
    $box_each.click(function() {
        console.log('test');
        $box_each.removeClass('active');
        $(this).addClass('active');
    });
    

    还有jQuery:

    jQuery('accordion').click(function(){
       jQuery(this).toggleClass('active');
    });
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Dionei Miodutzki    6 年前

    你需要一点css的工作。

    h1 {
      text-align: center;
      font-family: Montserrat,sans-serif;
      color: #333;
    }
    
    .accordion {
      width: 100%;
      max-width: 1080px;
      height: 250px;
      overflow: hidden;
      margin: 50px auto;
    }
    .accordion ul {
      width: 100%;
      display: table;
      table-layout: fixed;
      margin: 0;
      padding: 0;
    }
    .accordion ul li {
      display: table-cell;
      vertical-align: bottom;
      position: relative;
      width: 16.666%;
      height: 250px;
      background-repeat: no-repeat;
      background-position: center center;
      transition: all 500ms ease;
    }
    .accordion ul li div {
      display: block;
      overflow: hidden;
      width: 100%;
    }
    .accordion ul li div span {
      display: block;
      width: 100%;
      height: 250px;
      overflow: hidden;
      position: absolute;
    }
    .accordion ul li div a {
      display: block;
      height: 250px;
      width: 100%;
      position: relative;
      z-index: 3;
      vertical-align: bottom;
      padding: 15px 20px;
      box-sizing: border-box;
      color: #fff;
      text-decoration: none;
      font-family: Open Sans, sans-serif;
      transition: all 200ms ease;
    }
    .accordion ul li div a * {
      opacity: 0;
      margin: 0;
      width: 100%;
      text-overflow: ellipsis;
      position: relative;
      z-index: 5;
      white-space: nowrap;
      overflow: hidden;
      -webkit-transform: translateX(-20px);
      transform: translateX(-20px);
      -webkit-transition: all 400ms ease;
      transition: all 400ms ease;
    }
    .accordion ul li div a h2 {
      font-family: Montserrat,sans-serif;
      text-overflow: clip;
      font-size: 24px;
      text-transform: uppercase;
      margin-bottom: 2px;
      top: 160px;
    }
    .accordion ul li div a p {
      top: 160px;
      font-size: 13.5px;
    }
    .accordion ul:hover li {
      width: 8%;
    }
    .accordion ul:hover li:hover, .accordion ul li.open {
      width: 60%;
    }
    .accordion ul:hover li:hover a, .accordion ul li.open a {
      background: rgba(0, 0, 0, 0.4);
    }
    .accordion ul:hover li:hover a *, .accordion ul li.open a * {
      opacity: 1;
      -webkit-transform: translateX(0);
      transform: translateX(0);
    }
    
    
    @media screen and (max-width: 600px) {
      body {
        margin: 0;
      }
    
      .accordion {
        height: auto;
      }
      .accordion ul li, .accordion ul li:hover, .accordion ul:hover li, .accordion ul:hover li:hover {
        position: relative;
        display: table;
        table-layout: fixed;
        width: 100%;
        -webkit-transition: none;
        transition: none;
      }
      .accordion ul li div, .accordion ul li span, .accordion ul li:hover div, .accordion ul li:hover span, .accordion ul:hover li div, .accordion ul:hover li span, .accordion ul:hover li:hover div, .accordion ul:hover li:hover span {
        display: table-cell;
        width: 100%;
        vertical-align: bottom;
      }
    }
    .about {
      text-align: center;
      font-family: 'Open Sans', sans-serif;
      font-size: 12px;
      color: #666;
    }
    .about a {
      color: blue;
      text-decoration: none;
    }
    .about a:hover {
      text-decoration: underline;
    }
    

    这个Javascript:

    $('.accordion li').click(function(){
      $(this).toggleClass('open');
    });
    

    与您使用的html相同。