如何创建由 window 滚动控制的颜色过渡
How to create a color transition controlled by window scroll
我写了一些简单的 jQuery 使我的导航栏背景相对于用户滚动位置的不透明度从透明变为蓝色。
$(window).scroll(function(){
var range = $(this).scrollTop();
var limit = 450;
var calc = range / limit;
console.log(range);
//Bg Opacity Control
if (range === 0) {
$('.navBg').css({
opacity: 0
});
}else if(range < limit){
$('.navBg').css({
opacity: calc
});
}else if(range > limit){
$('.navBg').css({
opacity: 1
});
}
});
我的下一个任务是也进行字体颜色转换。我希望颜色以与导航背景更改相同的方式更改(相对于用户滚动位置)。我首先创建了两个包含十六进制颜色值的数组来表示字体过渡的色阶。
//Blue to White
var fontScale = ["#19BFFF",
"#336CFF",
"#4CCDFF",
"#66D4FF",
"#7FDBFF",
"#99E2FF",
"#B2E9FF",
"#CCF0FF",
"#E5F7FF",
"#FFF"];
//White to Gray
var hoverScale = ["#eaeaea",
"#d6d5d5",
"#c1c0c1",
"#adacac",
"#989798",
"#848283",
"#6f6e6e",
"#5a595a",
"#464445",
"#323031"];
我的 scrollTop() 限制设置为 450,在这些过渡应该发生的地方,我在每个数组中有 10 种颜色。每次用户向下滚动 45px ( 450 / 10 = 45 ) 时,我想通过遍历数组中的颜色来更改字体颜色的CSS。
这是我的 jQuery 选择器,用于使用我在上面 post 编辑的数组应该改变颜色的元素:
//Main Font color to use fontScale array
$('.navbar .navbar-header .navbar-brand')
$('.navbar #navbar ul li a ')
//active links to use hoveScale array
$('.navbar #navbar .navbar-nav > .active > a')
//Hover links to use hoverScale array
$('.navbar #navbar ul li a:hover')
我不确定我应该使用 for 循环、while 循环还是纯粹的 if 语句?一些建议或方向将不胜感激!我也可以根据要求 post 更多代码。
干杯!
**更新
这是我的 HTML.
<div class="navBg">
</div>
<nav class="navbar navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand" href="#home">JG</span>
</div>
<div id="navbar" class="navbar-collapse collapse navbar-right">
<ul class="nav navbar-nav">
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#services">Services</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
这是我的更新 jQuery:
var currentFontIndex = range * fontScale.length / limit;
currentFontIndex = Math.round(currentFontIndex);
console.log(fontScale[currentFontIndex]);
if(currentFontIndex > fontScale.length){
$('.navbar .navbar-header .navbar-brand').css({
color: fontScale[currentFontIndex]
});
$('.navbar #navbar ul li a').css({
color: fontScale[currentFontIndex]
});
}
由于某些原因,样式没有被应用,我不确定为什么。我的选择器已正确设置为覆盖我的 CSS 样式表中设置的样式。此外,fontScale 数组索引将正确的索引值记录到我的控制台。
有什么想法吗?
用 for ( ; ; )
展示想法的简单示例
var fontScale = ["#19BFFF",
"#336CFF",
"#4CCDFF",
"#66D4FF",
"#7FDBFF",
"#99E2FF",
"#B2E9FF",
"#CCF0FF",
"#E5F7FF",
"#FFF"
];
var height = $(window).scrollTop();
$(window).scroll(function() {
for (var i = 0; i < 3; i++) {
if (height >= 0) {
$('body').css('color', fontScale[i]);
}
}
for (var i = 3; i < 6; i++) {
if (height > 100) {
$('body').css('color', fontScale[i]);
}
}
for (var i = 6; i < fontScale.length; i++) {
if (height > 200) {
$('body').css('color', fontScale[i]);
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
lorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem
ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaloaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumloreaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlolorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem
ipsumlorem ipsumlorem ipsumlorem iprem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem
ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>
</nav>
</div>
并使用 if with conditions you want to make intervals with colors
如果您可以将一些 Y 坐标(0 到 450 像素)转换为不透明度(0 到 1),您可以对数组索引执行相同的操作!
0px -> 0 opacity -> index 0
450px -> 1 opacity -> index 10
...
currentScrollTop-> currentColorIndex
叉积!
currentColorIndex = currentScrollTop * 10 / 450
或
var range = $(this).scrollTop();
var limit = 450;
var fontScale=[
....
]
var currentFontIndex = range * fontScale.length / limit;
//of course, you can't only have integer for index,
//so you'll have to chose a rounding function, like:
currentFontIndex = Math.round(currentFontIndex);
if(currentFontIndex > fontScale.length)
currentFontIndex = fontScale.length
$('.navBg').css('color', fontScale[currentFontIndex]);
I want to change the CSS of the font color each time the user scrolls
down 45px ( 450 / 10 = 45 ) by iterating through the colors in the
arrays
您可以将 $(this).scrollTop()
除以 45
以引用数组的元素
var fontScale = [
"#19BFFF",
"#336CFF",
"#4CCDFF",
"#66D4FF",
"#7FDBFF",
"#99E2FF",
"#B2E9FF",
"#CCF0FF",
"#E5F7FF",
"#FFF"
];
var div = $("div");
$(window).on("scroll", function(e) {
var curr = Math.round($(this).scrollTop() / 45);
console.log(curr);
div.css("color", fontScale[curr])
}).scroll()
body {
height: 500px;
background: yellow;
position: absolute;
display: block;
text-align: center;
top: 50vh;
left: 35vw;
font-size: 36px;
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div>abc</div>
</body>
这个有效:
var currentFontIndex = range * fontScale.length / limit;
currentFontIndex = Math.round(currentFontIndex);
console.log(fontScale[currentFontIndex]);
if(currentFontIndex <= fontScale.length){
$('.navbar .navbar-header .navbar-brand').css(
'color', fontScale[currentFontIndex]
);
$('.navbar #navbar ul li a').css(
'color', fontScale[currentFontIndex]
);
}
现在唯一的问题是找到一个允许我创建自定义调色板的应用程序。例如,我需要从#00ADEF(浅蓝色)到#FFF(白色)的所有颜色。我在我的阵列中使用的当前颜色已经偏离,看起来很糟糕。有谁知道我可以使用的好资源吗?
我写了一些简单的 jQuery 使我的导航栏背景相对于用户滚动位置的不透明度从透明变为蓝色。
$(window).scroll(function(){
var range = $(this).scrollTop();
var limit = 450;
var calc = range / limit;
console.log(range);
//Bg Opacity Control
if (range === 0) {
$('.navBg').css({
opacity: 0
});
}else if(range < limit){
$('.navBg').css({
opacity: calc
});
}else if(range > limit){
$('.navBg').css({
opacity: 1
});
}
});
我的下一个任务是也进行字体颜色转换。我希望颜色以与导航背景更改相同的方式更改(相对于用户滚动位置)。我首先创建了两个包含十六进制颜色值的数组来表示字体过渡的色阶。
//Blue to White
var fontScale = ["#19BFFF",
"#336CFF",
"#4CCDFF",
"#66D4FF",
"#7FDBFF",
"#99E2FF",
"#B2E9FF",
"#CCF0FF",
"#E5F7FF",
"#FFF"];
//White to Gray
var hoverScale = ["#eaeaea",
"#d6d5d5",
"#c1c0c1",
"#adacac",
"#989798",
"#848283",
"#6f6e6e",
"#5a595a",
"#464445",
"#323031"];
我的 scrollTop() 限制设置为 450,在这些过渡应该发生的地方,我在每个数组中有 10 种颜色。每次用户向下滚动 45px ( 450 / 10 = 45 ) 时,我想通过遍历数组中的颜色来更改字体颜色的CSS。
这是我的 jQuery 选择器,用于使用我在上面 post 编辑的数组应该改变颜色的元素:
//Main Font color to use fontScale array
$('.navbar .navbar-header .navbar-brand')
$('.navbar #navbar ul li a ')
//active links to use hoveScale array
$('.navbar #navbar .navbar-nav > .active > a')
//Hover links to use hoverScale array
$('.navbar #navbar ul li a:hover')
我不确定我应该使用 for 循环、while 循环还是纯粹的 if 语句?一些建议或方向将不胜感激!我也可以根据要求 post 更多代码。
干杯!
**更新
这是我的 HTML.
<div class="navBg">
</div>
<nav class="navbar navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand" href="#home">JG</span>
</div>
<div id="navbar" class="navbar-collapse collapse navbar-right">
<ul class="nav navbar-nav">
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#services">Services</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
这是我的更新 jQuery:
var currentFontIndex = range * fontScale.length / limit;
currentFontIndex = Math.round(currentFontIndex);
console.log(fontScale[currentFontIndex]);
if(currentFontIndex > fontScale.length){
$('.navbar .navbar-header .navbar-brand').css({
color: fontScale[currentFontIndex]
});
$('.navbar #navbar ul li a').css({
color: fontScale[currentFontIndex]
});
}
由于某些原因,样式没有被应用,我不确定为什么。我的选择器已正确设置为覆盖我的 CSS 样式表中设置的样式。此外,fontScale 数组索引将正确的索引值记录到我的控制台。
有什么想法吗?
用 for ( ; ; )
展示想法的简单示例
var fontScale = ["#19BFFF",
"#336CFF",
"#4CCDFF",
"#66D4FF",
"#7FDBFF",
"#99E2FF",
"#B2E9FF",
"#CCF0FF",
"#E5F7FF",
"#FFF"
];
var height = $(window).scrollTop();
$(window).scroll(function() {
for (var i = 0; i < 3; i++) {
if (height >= 0) {
$('body').css('color', fontScale[i]);
}
}
for (var i = 3; i < 6; i++) {
if (height > 100) {
$('body').css('color', fontScale[i]);
}
}
for (var i = 6; i < fontScale.length; i++) {
if (height > 200) {
$('body').css('color', fontScale[i]);
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
lorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem
ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaloaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalorem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarem ipsumlorelorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumloreaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaalorem
ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlolorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem
ipsumlorem ipsumlorem ipsumlorem iprem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem
ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsum aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>
</nav>
</div>
并使用 if with conditions you want to make intervals with colors
如果您可以将一些 Y 坐标(0 到 450 像素)转换为不透明度(0 到 1),您可以对数组索引执行相同的操作!
0px -> 0 opacity -> index 0
450px -> 1 opacity -> index 10
...
currentScrollTop-> currentColorIndex
叉积!
currentColorIndex = currentScrollTop * 10 / 450
或
var range = $(this).scrollTop();
var limit = 450;
var fontScale=[
....
]
var currentFontIndex = range * fontScale.length / limit;
//of course, you can't only have integer for index,
//so you'll have to chose a rounding function, like:
currentFontIndex = Math.round(currentFontIndex);
if(currentFontIndex > fontScale.length)
currentFontIndex = fontScale.length
$('.navBg').css('color', fontScale[currentFontIndex]);
I want to change the CSS of the font color each time the user scrolls down 45px ( 450 / 10 = 45 ) by iterating through the colors in the arrays
您可以将 $(this).scrollTop()
除以 45
以引用数组的元素
var fontScale = [
"#19BFFF",
"#336CFF",
"#4CCDFF",
"#66D4FF",
"#7FDBFF",
"#99E2FF",
"#B2E9FF",
"#CCF0FF",
"#E5F7FF",
"#FFF"
];
var div = $("div");
$(window).on("scroll", function(e) {
var curr = Math.round($(this).scrollTop() / 45);
console.log(curr);
div.css("color", fontScale[curr])
}).scroll()
body {
height: 500px;
background: yellow;
position: absolute;
display: block;
text-align: center;
top: 50vh;
left: 35vw;
font-size: 36px;
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div>abc</div>
</body>
这个有效:
var currentFontIndex = range * fontScale.length / limit;
currentFontIndex = Math.round(currentFontIndex);
console.log(fontScale[currentFontIndex]);
if(currentFontIndex <= fontScale.length){
$('.navbar .navbar-header .navbar-brand').css(
'color', fontScale[currentFontIndex]
);
$('.navbar #navbar ul li a').css(
'color', fontScale[currentFontIndex]
);
}
现在唯一的问题是找到一个允许我创建自定义调色板的应用程序。例如,我需要从#00ADEF(浅蓝色)到#FFF(白色)的所有颜色。我在我的阵列中使用的当前颜色已经偏离,看起来很糟糕。有谁知道我可以使用的好资源吗?