私は2つの異なる振る舞いを持つレスポンシブスライダーを構築しています。デバイス上の要素にクラスを追加するJquery
デスクトップ用。 モバイル用。
ステップは次のとおりです。デバイスモードが有効な場合
- チェックとクラスを追加モバイル
- チェックデスクトップモードがアクティブである場合や、クラスを追加するデスクトップ
問題Iコードを賢明に持っている:
- クリックで
<li>
にアクティブなクラスを追加するにはどうすればよいですか? close-btn
をクリックすると、<li>
にアクティブなクラスを削除するにはどうすればよいですか?
//Check if device mode is active and add class Mobile
mobileViewUpdate();
$(window).on('load, resize', mobileViewUpdate);
function mobileViewUpdate() {
var viewportWidth = $(window).width();
if (viewportWidth < 600) {
$(".items").addClass("mobile");
$(".mobile").removeClass("desktop");
} else {
$(".items").addClass("desktop");
$(".mobile").removeClass("mobile");
$(".mobile").removeClass("active");
}
};
// Now add class active to li if parent has class Mobile
$(".mobile li").click(function(e) {
e.preventDefault;
// remove classes from all
if (!$(this).hasClass("active")) {
$(this).addClass("active");
}
});
$(".close-btn").click(function(e) {
e.preventDefault;
$(this).find('li.active').removeClass('active')
});
.items {
position: fixed;
top: 50%;
left: 50%;
text-align: center;
width: 5000px;
-webkit-transform: translateY(-50%) translateX(-50%);
transform: translateY(-50%) translateX(-50%);
}
.items li {
position: relative;
vertical-align: middle;
display: inline-block;
list-style: none;
width: 320px;
height: 320px;
/*background-color: rgba(228, 0, 59, 1);*/
-webkit-transition-duration: .5s;
transition-duration: .5s;
overflow: hidden;
cursor: pointer;
}
.items li .bg-img {
position: absolute;
width: 100%;
height: 100%;
background-size: cover;
background-position: center top;
}
.items li>a {
color: white;
text-decoration: none;
cursor: pointer;
width: 100%;
height: 100%;
display: block;
position: relative;
z-index: 2;
}
.items li>a .content {
/* background: -webkit-linear-gradient(transparent, rgba(228, 0, 59, 0.75));
background: linear-gradient(transparent, rgba(228, 0, 59, 0.75));*/
width: 100%;
height: 100%;
position: absolute;
bottom: 0;
left: 50%;
-webkit-transform: translateY(100%) translateX(-50%);
transform: translateY(100%) translateX(-50%);
-webkit-transition-duration: 0.5s;
transition-duration: 0.5s;
opacity: 0;
padding: 10px 10px 10px 10px;
}
.items li>a .content h2 {
font-weight: 300;
color: white;
font-size: 30px;
margin: 0;
padding: 0;
text-align: center;
}
/*make bg on MOBILE personalized*/
.mobile {
border: 1px solid red;
}
.mobile li.active a .content {
-webkit-transform: translateY(0) translateX(-50%);
transform: translateY(0) translateX(-50%);
opacity: 1;
}
.mobile li .content>span.close-btn {
position: absolute;
top: 10px;
right: -10px;
-webkit-mask: url(https://raw.githubusercontent.com/encharm/Font-Awesome-SVG-PNG/master/black/svg/close.svg) no-repeat;
mask: url(https://raw.githubusercontent.com/encharm/Font-Awesome-SVG-PNG/master/black/svg/close.svg) no-repeat;
-webkit-mask-size: 20px;
mask-size: 20px;
background-color: #fff;
cursor: pointer;
display: block;
text-indent: -9999em;
z-index: 3;
}
/*make bg on DESKTOP personalized*/
.desktop {
border: 1px solid blue;
}
.desktop li .content>span.close-btn {
display: none;
}
.desktop li:hover {
-webkit-transition-delay: .5s;
transition-delay: .5s;
width: calc(320px + 40px);
height: calc(320px + 40px);
}
.desktop li:hover a .content {
-webkit-transform: translateY(0) translateX(-50%);
transform: translateY(0) translateX(-50%);
-webkit-transition-delay: .75s;
transition-delay: .75s;
opacity: 1;
}
<div class="clearfix flex-auto py3">
<ul class="items">
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
<li>
<div class="bg-img" style="background-image: url('http://placehold.it/320x320');"></div>
<a href="#">
<div class="content">
<span class="close-btn">close btn</span>
<h2>Slider item</h2>
</div>
</a>
</li>
</ul>
</div>
デスクトップ/モバイルの処理に関するメディアクエリを調べる必要があります。 – Gerard
@ジェラード携帯でクリックイベントが必要です!閉じるボタン – user3699998
https://fiddle.jshell.net/arunpjohny/murbqgze/2/? –