Javascript 如何使下划线在每次加载页面时改变颜色?
我想在每次加载页面时,我文本下的下划线都会随机改变颜色 我以前成功地使用过此脚本:Javascript 如何使下划线在每次加载页面时改变颜色?,javascript,html,css,Javascript,Html,Css,我想在每次加载页面时,我文本下的下划线都会随机改变颜色 我以前成功地使用过此脚本: <script type="text/javascript"> var classes = ['red', 'blue', 'yellow']; var random_class = classes[Math.floor(Math.random() * classes.length)]; var title = document.getElementById('decor');
<script type="text/javascript">
var classes = ['red', 'blue', 'yellow'];
var random_class = classes[Math.floor(Math.random() * classes.length)];
var title = document.getElementById('decor');
classes.forEach((el) => {
title.classList.remove(el);
});
title.classList.add(random_class);
</script>
但我不能(这里是新手)用我当前的代码来装配它(见下面的代码片段)
正文{
背景色:#FFFFFF;
边际:0px;
-webkit字体平滑:抗锯齿;
-moz osx字体平滑:灰度;
}
.集装箱{
显示:块;
宽度:85%;
/*垂直和水平居中*/
位置:绝对;顶部:50%;左侧:50%;
-webkit转换:翻译(-50%,-50%);
-moz变换:平移(-50%,-50%);
-ms转换:翻译(-50%,-50%);
转换:翻译(-50%,-50%);
}
a、 a:参观,a:停留{
-ms文本最后对齐:对齐;
-moz文本最后对齐:对齐;
文本最后对齐:对齐;
文字装饰:无;
颜色:#000000;
}
#测试1{
显示:内联块;
高度:自动;
宽度:自动;
能见度:可见;
字体系列:“泰晤士报新罗马”,泰晤士报,衬线;
文本对齐:居中;
线高:7.5vw;
保证金:0;
字体大小:7.7vw;
字体大小:粗体;
位置:相对位置;
}
#测试1:之前{
内容:“;
盒影:插图0-1.3vw 0 0#00f9ff;
位置:绝对位置;
宽度:100%;
身高:100%;
变换:scaleX(0);
变换原点:左;
动画名称:stretchRight;
动画持续时间:0.8s;
动画填充模式:正向;
动画计时功能:放松;
z指数:-1;
}
@关键帧stretchRight{
0% {
变换:scaleX(0);
}
100% {
变换:scaleX(1);
}
}
您可以将
.red、.yellow、.blue等..
类添加到您的css
中,并让javascript从这些类中选择一个并将其动态添加到test1
。由于可供选择的颜色数量很少,因此颜色可能会经常重复。如果要确保颜色不同,可能需要使用cookie来存储then值
函数GetRandomInInclusive(最小值、最大值){
min=数学单元(min);
最大值=数学楼层(最大值);
返回Math.floor(Math.random()*(max-min+1))+min;
}
变量类=[‘红色’、‘蓝色’、‘黄色’、‘绿色’、‘青色’、‘品红’、‘橙色’、‘黑色’];
var random_index=GetRandomInInclusive(0,classes.length-1);
var title=document.getElementById('test1');
var random_class=类别[随机指数];
title.classList.add(随机类)代码>
正文{
背景色:#FFFFFF;
边际:0px;
-webkit字体平滑:抗锯齿;
-moz osx字体平滑:灰度;
}
.集装箱{
显示:块;
宽度:85%;
/*垂直和水平居中*/
位置:绝对位置;
最高:50%;
左:50%;
-webkit转换:翻译(-50%,-50%);
-moz变换:平移(-50%,-50%);
-ms转换:翻译(-50%,-50%);
转换:翻译(-50%,-50%);
}
A.
答:访问,,
a:悬停{
-ms文本最后对齐:对齐;
-moz文本最后对齐:对齐;
文本最后对齐:对齐;
文字装饰:无;
颜色:#000000;
}
#测试1{
显示:内联块;
高度:自动;
宽度:自动;
能见度:可见;
字体系列:“泰晤士报新罗马”,泰晤士报,衬线;
文本对齐:居中;
线高:7.5vw;
保证金:0;
字体大小:7.7vw;
字体大小:粗体;
位置:相对位置;
}
#测试1:之前{
内容:“;
盒影:插图0-1.3vw 0 0#00f9ff;
位置:绝对位置;
宽度:100%;
身高:100%;
变换:scaleX(0);
变换原点:左;
动画名称:stretchRight;
动画持续时间:0.8s;
动画填充模式:正向;
动画计时功能:放松;
z指数:-1;
}
瑞德:以前{
方框阴影:插图0-1.3vw 0 0红色!重要;
}
黄:以前{
方框阴影:插图0-1.3vw 0 0黄色!重要;
}
蓝:以前{
方框阴影:插图0-1.3vw 0 0蓝色!重要;
}
格林:以前{
方框阴影:插图0-1.3vw 0 0绿色!重要;
}
青青:以前{
方框阴影:插图0-1.3vw 0 0青色!重要;
}
洋红:以前{
盒影:镶嵌0-1.3vw 0 0品红!重要;
}
橙色:以前{
方框阴影:嵌入0-1.3vw 0 0橙色!重要;
}
布莱克:以前{
盒影:插图0-1.3vw 0 0黑色!重要;
}
@关键帧stretchRight{
0% {
变换:scaleX(0);
}
100% {
变换:scaleX(1);
}
}
使用cookies。如果cookie的值为某种颜色(例如,红色),则显示红色并将该值更改为另一种颜色(例如:蓝色),依此类推。请参阅有关MDN的详细信息:这类工作,但当颜色更改时,它不会显示动画。上面的代码给出了未捕获的TypeError:无法读取的属性“classList”null@3p3ch3这是因为您将代码放在页面顶部,对吗?要解决这个问题,您需要将代码放在页面的末尾,或者在加载窗口后调用它。如果您将代码放在页面的开头,它将尝试查找test1
并失败,因为test1
尚未加载。使用函数getrandominintinclusive(min,max){min=Math.ceil(min);max=Math.floor(max);返回Math.floor(Math.random()*(max-min+1))+min;}document.addEventListener修复此问题(“DOMContentLoaded”,函数(事件){var classes=['red','blue',yellow','green','cyan','magenta','orange','black'];var random_index=getrandomintininclusive(0,classes.length);var title=document.getElementById('test1');var random_class=classes[random_index];title.classList.add(random_class);})
@redongreen你完全正确……我想不出一个简单的方法来重新加载我头顶上的动画。我以后还要继续,希望有人能在那之前回答。
.red {
box-shadow: inset 0 -1.3vw 0 0 ##FF0000;
}
.yellow {
box-shadow: inset 0 -1.3vw 0 0 #FFFF00;
}
.blue {
box-shadow: inset 0 -1.3vw 0 0 #0000FF;
}