gpt4 book ai didi

javascript - 如何使用包含图像 url 的 JS 数组设置背景 html 主体的图像?

转载 作者:行者123 更新时间:2023-12-05 05:42:09 26 4
gpt4 key购买 nike

  • 我正在创建数字时钟页面。我想将 body 背景设置为当我们刷新页面或再次访问它时,会随机出现各种图片。
  • 我有一个 JavaScript 数组,其中包含 url/本地文件的数组元素。
  • 我尝试使用 jQuery 设置背景,但有些东西坏了。 https://codepen.io/nisoojadhav/full/oNEXWdg
  • 这是可行的,但我想要更多背景图像。

下面是我的代码:

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Bungee&display=swap" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<title>Clock</title>
<style>
p {
font-family: 'Bungee', cursive;
font-size: 100px;
color: white;
text-shadow: 2px 3px 2px rgb(0, 0, 0);
padding-top: 0px;
padding: center;
}
div{
vertical-align: center;
text-align: center;
}
body {
background: url(https://github.com/NisooJadhav/clock/blob/main/5.jpg?raw=true);
background-size: 100%;
}

@media screen and (max-width:650px) {
p {
font-size: 60px;
line-height:0;

}

body {
background-size: 300%;
}
}
</style>

<script>
function load() {
var d = new Date
var h = d.getHours()
var m = d.getMinutes()
var s = d.getSeconds()
//alert(h+":"+m+":"+s)
document.getElementById("h").innerHTML = h + " : " + m + " : " + s;
setInterval("load()", 1000);
}
</script>

<script>
var bgImg = ['https://github.com/NisooJadhav/clock/blob/main/1.jpg','https://github.com/NisooJadhav/clock/blob/main/2.jpg','https://github.com/NisooJadhav/clock/blob/main/3.jpg','https://github.com/NisooJadhav/clock/blob/main/4.jpg','https://github.com/NisooJadhav/clock/blob/main/5.jpg','https://github.com/NisooJadhav/clock/blob/main/6.jpg','https://github.com/NisooJadhav/clock/blob/main/7.jpg']
var selectBG = bgImg[Math.floor(Math.random() * bgImg.length)];
//var r = Math.floor(Math.random() * 10)
$(document).ready(function()
{
$('body').css({"background-image":"url(' + selectBG + ')"});
});
</script>
</head>

<body onload="load()">
<div>
<p id="h"></p>
</div>
</body>

</html>

最佳答案

问题

  1. 图像 url 数组没有指向任何位置 (404)。
  2. clock()函数(最初是 load() )在几秒钟后卡住。
  3. 当小时、分钟和秒变为个位数和两位数时,文本左右移动。
  4. 一些 CSS 值是错误的
    • 垂直对齐:居中
    • 内边距:居中
    • 行高:0
  5. 虽然没问题,但 <script> 的 99% |标签应放在结束前 </body>标签。

解决方案

  1. 添加了一组指向图像的 url。做了个函数bgSwitch()生成 0 到 array.length -1 范围内的随机数(记住数组是基于 0 的索引),并分配 background-image<body> .

  2. 已移动 setInterval()clock()之外函数并更正了第一个参数:

    setInterval(clock, 1000)
  3. 将 HMS 的字体更改为等宽字体,并用 .toString().padStart() 补零 HMS ;现在时钟没有改变。

  4. 删除了所有不正确的 CSS,因为即使它们具有正确的值,它也会无效或对样式有害,因为它们位于错误的选择器上。此外,CSS 和 HTML 在居中、美观、响应能力和语义方面略有改变。

  5. 同时删除了 onload <body> 上的事件处理程序不需要。通过简单地放置 <script>标记到问题 #5 中提到的位置,您可以像往常一样调用函数。

PLUNKER

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Clock</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Bungee&family=Noto+Sans+Mono:wght@600&display=swap');

html {
font: 2vmax/1 'Noto Sans Mono';
}

body {
background: url(https://github.com/NisooJadhav/clock/blob/main/5.jpg?raw=true);
background-size: 100%;
overflow: hidden;
}

main {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
min-height: 100vh;
margin: 0 auto;
}

time {
display: inline-block;
width: 50vw;
height: 20vh;
font-size: 4rem;
line-height: 2;
color: white;
text-shadow: 2px 3px 2px rgb(0, 0, 0);
text-align: center;
}

@media screen and (max-width: 650px) {
html {
font-size: 3vmax;
}
time {
width: 90vw;
font-size: 4rem;
}
body {
background-size: cover;
}
}
</style>
</head>

<body>
<main>
<time></time>
</main>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
const bgImg = [
'https://github.com/NisooJadhav/clock/blob/main/5.jpg?raw=true/',
'https://i.ibb.co/0m6612N/static.gif',
'https://i.ibb.co/2cNgPHW/matrix.jpg',
'https://i.ibb.co/LdQzP9j/wall1.jpg',
'https://i.ibb.co/pKPKR1v/wall0.jpg',
];

function clock() {
const d = new Date();
let h = d.getHours().toString().padStart(2, '0');
let m = d.getMinutes().toString().padStart(2, '0');
let s = d.getSeconds().toString().padStart(2, '0');
document.querySelector('time').innerHTML = h + ':' + m + ':' + s;
}

function bgSwitch(array) {
const randomRng =
Math.floor(Math.random() * (array.length - 1 - 0 + 1)) + 0;
let current = bgImg[randomRng];
document.body.style.cssText = `background: url(${current})`;
}

bgSwitch(bgImg);
setInterval(clock, 1000);
</script>
</body>
</html>

关于javascript - 如何使用包含图像 url 的 JS 数组设置背景 html 主体的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72114611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com