【发布时间】:2020-07-07 07:39:08
【问题描述】:
仅当 选择器 与文本重叠且找不到解决方案时,我才尝试将字体颜色更改为白色。
想要的行为如下:
- Change the font color to white only when the selector is 重叠。
- 将活动标签的字体大小增加到 18 像素
- 选择器应移至活动选项卡。
我尝试了一些方法,但似乎都没有。
这就是我现在拥有的:https://codepen.io/galanflorind/pen/gOpQKPP
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"
});
// Temporary fix for resizing after the transition is done
// TODO: find another solution
setTimeout(() => {
var activeWidth = $(this).innerWidth();
var itemPos = $(this).position();
$(".selector").css({
"left":itemPos.left + "px",
"width": activeWidth + "px"
});
}, 401)
});
@import url('https://fonts.googleapis.com/css?family=Nunito');
body{
height:100vh;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
}
.wrapper{
text-align:center;
margin:50px auto;
font-family: 'Nunito', sans-serif;
}
.tabs{
font-size:15px;
padding:0px;
list-style:none;
display:inline-block;
border-radius:50px;
position:relative;
}
.tabs a{
text-decoration:none;
color: #2f3059;
text-transform:uppercase;
padding:6px 20px;
display:inline-block;
position:relative;
z-index:1;
transition-duration: 0.4s;
}
.tabs a.active{
color:#fff;
font-size: 18px;
}
.tabs .selector{
height:100%;
display:inline-block;
position:absolute;
background: #3e40db;
left:0px;
top:0px;
z-index:1;
border-radius: 16px;
transition: width 1s, .6s;
transition-timing-function: easeOutCirc;
}
<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">WHOLESALE SUPPLY</a>
<a href="#">E-LEARNING</a>
<a href="#">MEDICAL COMPLIANCE</a>
</nav>
</div>
Stripe 网站上有类似的东西 - https://stripe.com/en-nl/sigma
【问题讨论】:
-
only when the selector is overlapping什么选择器? -
@RoryMcCrossan 选择器基本上是看起来像按钮的 div,找不到更好的命名。检查 HTML 代码
-
这并没有真正的帮助。您的问题的目标完全不明确。
-
澄清一下,您似乎希望 div 移动到选定导航项的顶部(通过动画),而不是像现在这样在动画期间让导航项的字体淡出,它应该只在 div 开始覆盖文本后变为白色。 @Florin G,对吗?如果是这样,您是要保持淡入淡出,还是要在覆盖文本后立即将其设置为白色?
-
@tlong314 类似的东西,但我想在被覆盖后立即将文本设置为白色(逐个字符),就像在加载栏中一样。如果您选择了 WHOLESALE SUPPLY 并点击 MEDICAL COMPLIANCE,当蓝色 div 开始悬停在 中间导航项 时,它会更改文本颜色为白色(逐个字符,而不是整个单词)。有意义吗?如果你仔细观察stripe.com/en-nl/sigma 正是我想要复制的内容
标签: javascript jquery css tabs html5-canvas