我已经在这个CSS上苦苦挣扎了很长时间,并且正在寻找一些指导。
我的问题是:我有一些选项卡以“弹性”方式执行,并且一切正常。也就是说,直到我使用媒体查询。
我有一个605px的媒体查询,当它碰到那个断点时,选择器(蓝色按钮)不会调整大小并且看起来不合适。您可以缩小Coden窗口以查看我在说的效果。关于如何使选项卡根据包装器的大小更改大小的任何想法?
这是Codepen链接:https://codepen.io/brandonleichty/pen/axNBME
非常感谢您的投入。
var tabs = $('.tabs');
var selector = $('.tabs').find('a').length;
var activeItem = tabs.find('.active');
var activeWidth = activeItem.innerWidth();
$(".selector").css({
"left": activeItem.position.left + "px",
"width": activeWidth + "px"
});
$(".tabs").on("click", "a", function(e) {
e.preventDefault();
$('.tabs a').removeClass("active");
$(this).addClass('active');
var activeWidth = $(this).innerWidth();
var itemPos = $(this).position();
$(".selector").css({
"left": itemPos.left + "px",
"width": activeWidth + "px"
});
});
@import url('https://fonts.googleapis.com/css?family=Roboto');
body {
font-family: 'Roboto', sans-serif;
}
.wrapper {
text-align: center;
margin: 50px auto;
}
.tabs {
margin-top: 50px;
font-size: 15px;
padding: 0px;
list-style: none;
background: #fff;
box-shadow: 0px 5px 20px rgba(0, 0, 0, 0.1);
display: inline-block;
border-radius: 50px;
position: relative;
}
.tabs a {
text-decoration: none;
color: #777;
text-transform: uppercase;
padding: 10px 40px;
display: inline-block;
position: relative;
z-index: 1;
transition-duration: 0.6s;
}
.tabs a.active {
color: #fff;
}
.tabs a i {
margin-right: 5px;
}
.tabs .selector {
height: 100%;
display: inline-block;
position: absolute;
left: 0px;
top: 0px;
z-index: 1;
border-radius: 50px;
transition-duration: 0.6s;
transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
background: #05abe0;
background: -moz-linear-gradient(45deg, #05abe0 0%, #8200f4 100%);
background: -webkit-linear-gradient(45deg, #05abe0 0%, #8200f4 100%);
background: linear-gradient(135deg, #5ee7df, #43a4ca);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#05abe0', endColorstr='#8200f4', GradientType=1);
}
@media (max-width: 605px) {
.tabs {
font-size: 12px;
}
.tabs a {
padding: 10px 12px;
}
.tabs .selector {
height: 110%;
top: -5%;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
<nav class="tabs">
<div class="selector"></div>
<a href="#" class="active"></i>Popular</a>
<a href="#">Upcoming</a>
<a href="#"></i>My Movies</a>
<a href="#"></i>Search</a>
</nav>
</div>
答案 0 :(得分:0)
您可以添加jQuery函数来调整窗口大小, 但事情是超时设置,因为您使用CSS过渡时间为0.6秒。 因此,如果没有setTimeout,它将显得很奇怪。 我已经完全测试了以下代码。
$(window).resize(function() {
setTimeout(function(){
var activeWidth = $("a.active").innerWidth();
var itemPos = $("a.active").position();
$(".selector").css({
"left":itemPos.left + "px",
"width": activeWidth + "px"
});
}, 600)
})