[英]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.