我想要在单击按钮时覆盖全屏 div。它在初始时工作正常,但是当我们更改选项卡并再次单击按钮时,它会被限制在具有相对定位的 div 中,并且不会全屏显示。好吧,我试图在单击按钮时取消设置该 div 的位置。但它不起作用。我可能做错了什么。任何帮助将不胜感激。
$('.seemore').click(function(){
$(this).parents('.scroller__item').next('.overlay').toggleClass('opened');
})
$('.closebtn').click(function(){
$(this).parent().removeClass('opened');
})
function vertical_tabs() {
if ($(".ux-vertical-tabs").length > 0) {
$(".ux-vertical-tabs .tabs button").on("click", function() {
var temp_tab = $(this).data("tab");
var temp_tab_js = this.getAttribute("data-tab");
var temp_content = $(
'.ux-vertical-tabs .maincontent .tabcontent[data-tab="' +
temp_tab +
'"]'
);
var temp_content_js = document.querySelector(
'.ux-vertical-tabs .maincontent .tabcontent[data-tab="' +
temp_tab_js +
'"]'
);
var temp_content_active_js = document.querySelector(
".ux-vertical-tabs .maincontent .tabcontent.active"
);
$(".ux-vertical-tabs .tabs button").removeClass("active");
$('.ux-vertical-tabs .tabs button[data-tab="' + temp_tab + '"]').addClass(
"active"
);
var animation_start = anime({
duration: 400,
targets: temp_content_active_js,
opacity: [1, 0],
translateX: [0, "100%"],
easing: "easeInOutCubic",
complete: function() {
$(".ux-vertical-tabs .maincontent .tabcontent").removeClass("active");
temp_content.addClass("active");
var animation_end = anime({
duration: 400,
targets: temp_content_js,
opacity: [0, 1],
translateX: ["100%", "0"],
easing: "easeInOutCubic"
});
}
});
});
}
}
$(function() {
vertical_tabs();
});
.tabs{
display:table;
}
.ux-vertical-tabs {
position: relative;
}
.ux-vertical-tabs .tabs {
-webkit-transform: translateY(0px);
transform: translateY(0px);
}
.ux-vertical-tabs .tabs button {
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
padding: 1.2rem;
/*width: 100%;*/
outline: none;
text-align: left;
cursor: pointer;
border: none;
box-shadow: 0 0 3px #ccc;
/*font-size: .85rem;*/
color: #666;
text-transform: uppercase;
transition: background 250ms ease;
float: left;
}
.ux-vertical-tabs .tabs button:first-child {
border-top: 1px solid #ddd;
}
.ux-vertical-tabs .tabs button:hover {
background: #edf0d0;
}
.ux-vertical-tabs .tabs button.active {
background: #00a651;
border-right: 0;
color: #fff;
}
.ux-vertical-tabs .tabs button span {
width: 0;
height: 0;
border-top: 6px solid transparent;
border-bottom: 6px solid transparent;
border-left: 6px solid #ccc;
transform: translateX(1rem);
opacity: 0;
transition: all 350ms ease;
display: inline-block;
}
.ux-vertical-tabs .maincontent {
flex: 1;
box-shadow: 0 0 3px #ccc;
padding: 2rem;
overflow: hidden;
}
.ux-vertical-tabs .maincontent .tabcontent {
display: none;
}
.ux-vertical-tabs .maincontent .tabcontent.active {
display: flex;
flex: 1;
position: relative;
}
button.seemore {
background: #5cb85c;
color: #fff;
border: none;
padding: 10px;
border-radius: 9px 30px;
font-size: 12px;
}
.teamy{
position: relative;
}
.teamy__layout{
position: relative;
overflow: hidden;
}
.teamy__avatar{
display: block;
width: 100%;
position: relative;
z-index: 1;
}
.teamy__back{
display: none;
}
.teamy:hover .teamy__back{
width: 100%;
height: 100%;
display: flex;
position: absolute;
top: 0;
left: 0;
z-index: 3;
}
.teamy__back-inner{
display: flex;
align-items: center;
justify-content: center;
width: 100%;
}
.overlay {
height: 0%;
width: 100%;
position: fixed;
z-index: 999;
top: 0;
left: 0;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0, 0.9);
overflow-x: hidden;
transition: 0.5s;
}
.opened{
height: 100%;
}
.overlay-content {
position: relative;
top: 25%;
width: 100%;
text-align: center;
margin-top: 30px;
}
.overlay a {
padding: 8px;
text-decoration: none;
font-size: 36px;
color: #818181;
display: block;
transition: 0.3s;
}
.overlay a:hover, .overlay a:focus {
color: #f1f1f1;
}
.overlay .closebtn {
position: absolute;
top: 20px;
right: 45px;
font-size: 60px;
}
@media screen and (max-height: 450px) {
.overlay a {font-size: 20px}
.overlay .closebtn {
font-size: 40px;
top: 15px;
right: 35px;
}
}
<!DOCTYPE html>
<html>
<head>
<title>Packages</title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.2.0/anime.min.js"></script>
</head>
<body>
<section class="team">
<div class="container">
<div class="row">
<div class="container maxwidth">
<div class="ux-vertical-tabs">
<div class="tabs">
<button data-tab="tab1" class="active">AA<span></span></button>
<button data-tab="tab2">BB<span></span></button>
<button data-tab="tab3">CC<span></span></button>
</div>
<div class="maincontent">
<div data-tab="tab1" class="tabcontent active">
<div class="teamy-team scroller">
<div class="scroller__box">
<div class="scroller__item">
<div class="teamy teamy_mask-circle teamy_zoom-slide-photo">
<div class="teamy__layout">
<div class="teamy__preview">
<img src="https://thumbor.forbes.com/thumbor/960x0/https%3A%2F%2Fspecials-images.forbesimg.com%2Fdam%2Fimageserve%2F1140421945%2F960x0.jpg%3Ffit%3Dscale" class="teamy__avatar" alt="The demo photo">
</div>
<div class="teamy__back">
<div class="teamy__back-inner">
<button class="seemore">Read More</button>
</div>
</div>
</div>
<div class="teamy__content">
<span class="teamy__name">Dr abc</span>
<span class="teamy__post">abc</span>
</div>
</div>
</div>
<div id="myNav" class="overlay">
<a href="javascript:void(0)" class="closebtn">×</a>
<div class="overlay-content">
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Clients</a>
<a href="#">Contact</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</body>
</html>
最佳答案
似乎选项卡在导致问题的动画之后具有样式 transform: translateX(0%)
。我不知道为什么转换规则会搞砸,但您可以在单击按钮时删除此 css 样式以获得解决方法。
$('.seemore').click(function() {
$(this).parents('.tabcontent.active').css('transform','none'); // add this line
$(this).parents('.scroller__item').next('.overlay').toggleClass('opened');
})
$('.seemore').click(function() {
$(this).parents('.tabcontent.active').css('transform','none'); // add this line
$(this).parents('.scroller__item').next('.overlay').toggleClass('opened');
})
$('.closebtn').click(function() {
$(this).parent().removeClass('opened');
})
function vertical_tabs() {
if ($(".ux-vertical-tabs").length > 0) {
$(".ux-vertical-tabs .tabs button").on("click", function() {
var temp_tab = $(this).data("tab");
var temp_tab_js = this.getAttribute("data-tab");
var temp_content = $(
'.ux-vertical-tabs .maincontent .tabcontent[data-tab="' +
temp_tab +
'"]'
);
var temp_content_js = document.querySelector(
'.ux-vertical-tabs .maincontent .tabcontent[data-tab="' +
temp_tab_js +
'"]'
);
var temp_content_active_js = document.querySelector(
".ux-vertical-tabs .maincontent .tabcontent.active"
);
$(".ux-vertical-tabs .tabs button").removeClass("active");
$('.ux-vertical-tabs .tabs button[data-tab="' + temp_tab + '"]').addClass(
"active"
);
var animation_start = anime({
duration: 400,
targets: temp_content_active_js,
opacity: [1, 0],
translateX: [0, "100%"],
easing: "easeInOutCubic",
complete: function() {
$(".ux-vertical-tabs .maincontent .tabcontent").removeClass("active");
temp_content.addClass("active");
var animation_end = anime({
duration: 400,
targets: temp_content_js,
opacity: [0, 1],
translateX: ["100%", "0"],
easing: "easeInOutCubic"
});
}
});
});
}
}
$(function() {
vertical_tabs();
});
.tabs {
display: table;
}
.ux-vertical-tabs {
position: relative;
}
.ux-vertical-tabs .tabs {
-webkit-transform: translateY(0px);
transform: translateY(0px);
}
.ux-vertical-tabs .tabs button {
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
padding: 1.2rem;
/*width: 100%;*/
outline: none;
text-align: left;
cursor: pointer;
border: none;
box-shadow: 0 0 3px #ccc;
/*font-size: .85rem;*/
color: #666;
text-transform: uppercase;
transition: background 250ms ease;
float: left;
}
.ux-vertical-tabs .tabs button:first-child {
border-top: 1px solid #ddd;
}
.ux-vertical-tabs .tabs button:hover {
background: #edf0d0;
}
.ux-vertical-tabs .tabs button.active {
background: #00a651;
border-right: 0;
color: #fff;
}
.ux-vertical-tabs .tabs button span {
width: 0;
height: 0;
border-top: 6px solid transparent;
border-bottom: 6px solid transparent;
border-left: 6px solid #ccc;
transform: translateX(1rem);
opacity: 0;
transition: all 350ms ease;
display: inline-block;
}
.ux-vertical-tabs .maincontent {
flex: 1;
box-shadow: 0 0 3px #ccc;
padding: 2rem;
overflow: hidden;
}
.ux-vertical-tabs .maincontent .tabcontent {
display: none;
}
.ux-vertical-tabs .maincontent .tabcontent.active {
display: flex;
flex: 1;
position: relative;
}
button.seemore {
background: #5cb85c;
color: #fff;
border: none;
padding: 10px;
border-radius: 9px 30px;
font-size: 12px;
}
.teamy {
position: relative;
}
.teamy__layout {
position: relative;
overflow: hidden;
}
.teamy__avatar {
display: block;
width: 100%;
position: relative;
z-index: 1;
}
.teamy__back {
display: none;
}
.teamy:hover .teamy__back {
width: 100%;
height: 100%;
display: flex;
position: absolute;
top: 0;
left: 0;
z-index: 3;
}
.teamy__back-inner {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
}
.overlay {
height: 0%;
width: 100%;
position: fixed;
z-index: 999;
top: 0;
left: 0;
background-color: rgb(0, 0, 0);
background-color: rgba(0, 0, 0, 0.9);
overflow-x: hidden;
transition: 0.5s;
}
.opened {
height: 100%;
}
.overlay-content {
position: relative;
top: 25%;
width: 100%;
text-align: center;
margin-top: 30px;
}
.overlay a {
padding: 8px;
text-decoration: none;
font-size: 36px;
color: #818181;
display: block;
transition: 0.3s;
}
.overlay a:hover,
.overlay a:focus {
color: #f1f1f1;
}
.overlay .closebtn {
position: absolute;
top: 20px;
right: 45px;
font-size: 60px;
}
@media screen and (max-height: 450px) {
.overlay a {
font-size: 20px
}
.overlay .closebtn {
font-size: 40px;
top: 15px;
right: 35px;
}
}
<!DOCTYPE html>
<html>
<head>
<title>Packages</title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.2.0/anime.min.js"></script>
</head>
<body>
<section class="team">
<div class="container">
<div class="row">
<div class="container maxwidth">
<div class="ux-vertical-tabs">
<div class="tabs">
<button data-tab="tab1" class="active">AA<span></span></button>
<button data-tab="tab2">BB<span></span></button>
<button data-tab="tab3">CC<span></span></button>
</div>
<div class="maincontent">
<div data-tab="tab1" class="tabcontent active">
<div class="teamy-team scroller">
<div class="scroller__box">
<div class="scroller__item">
<div class="teamy teamy_mask-circle teamy_zoom-slide-photo">
<div class="teamy__layout">
<div class="teamy__preview">
<img src="https://thumbor.forbes.com/thumbor/960x0/https%3A%2F%2Fspecials-images.forbesimg.com%2Fdam%2Fimageserve%2F1140421945%2F960x0.jpg%3Ffit%3Dscale" class="teamy__avatar" alt="The demo photo">
</div>
<div class="teamy__back">
<div class="teamy__back-inner">
<button class="seemore">Read More</button>
</div>
</div>
</div>
<div class="teamy__content">
<span class="teamy__name">Dr abc</span>
<span class="teamy__post">abc</span>
</div>
</div>
</div>
<div id="myNav" class="overlay">
<a href="javascript:void(0)" class="closebtn">×</a>
<div class="overlay-content">
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Clients</a>
<a href="#">Contact</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</body>
</html>
关于jquery - 全屏覆盖定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57767542/