简体   繁体   English

单击手风琴图像后保持DIV处于活动状态

[英]Keep DIV active after click on an accordion images

I would like to replace the :hover to :active for an accordion visible in this codepen : https://codepen.io/ferry/pen/ZYVwxz 我想将:hover替换为:active,以便在此codepen中看到可见的手风琴: https ://codepen.io/ferry/pen/ZYVwxz

The code of the page is : 该页面的代码是:

 @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 ap { 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> 

I would like to keep the accordion open after the user click. 用户单击后,我想保持手风琴打开。

I don't know what is the best way to do that, use the checkbox hack? 我不知道这样做的最好方法是使用复选框hack? Use js or jquery or something else? 使用js或jquery还是其他?

I tried to add these lines of code : 我试图添加以下代码行:

var $box_each = $(".accordion ul li a");

$box_each.click(function() {
    console.log('test');
    $box_each.removeClass('active');
    $(this).addClass('active');
});

And also with jQuery : 还有jQuery:

jQuery('accordion').click(function(){
   jQuery(this).toggleClass('active');
});

You will need a bit of a css work. 您将需要一些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;
}

And this Javascript: 而这个JavaScript:

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

With the same html that you are using. 使用与您使用的相同的html。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM