这是我参与「第五届青训营 」伴学笔记创作活动的第9天。 概要:尝试编写一些学员手册中提供的案例来巩固加深JavaScript中的知识点。 一、题目要求:1.笑话生成器项目简介我们提供了一些原始的 HTML / CSS,以及若干字符串和 JavaScript 函数,还需要你来编写一些 JavaScript 代码让项目运行起来:
步骤以下是你的工作。 初始化变量和函数:
放置事件处理器并补全:
补全
提示
2.图片库我们提供了一些 HTML、CSS、照片和几行 JavaScript 代码。需要你来编写必要的 JavaScript 代码让这个项目运行起来。HTML 的 body 部分如下: <h1>Image gallery example</h1><div class="full-img"> <img class="displayed-img" src="images/pic1.jpg"> <div class="overlay"></div> <button class="dark">Darken</button> </div> <div class="thumb-bar"> </div> Copy to Clipboard 该示例如下所示: ![]() 以下是本例中 CSS 文件最值得关注的部分:
JavaScript 部分则需要实现:
详细步骤以下是你的工作。 声明图像文件名数组你需要创建一个用于列出所有需要包含在图片库中的图像的文件名。这个数组应该以常量的形式声明。 迭代照片我们提供的代码中用一个名为 你需要:
为每一个缩略图添加 click 事件监听器每次迭代中,你需要给当前的 或者,你可以只为缩略图栏( 为变亮/变暗按钮编写处理器最后还剩变亮/变暗的
以下是实现上述 2、3 点所提功能的基本代码: btn.setAttribute('class', xxx);btn.textContent = xxx; overlay.style.backgroundColor = xxx; Copy to Clipboard 提示
3.序列动画我们希望更新此页面,来将动画依次应用于所有三个图像。也就是说,当第一个动画完成时,我们开始第二个动画,当第二个完成时,我们开始第三个动画。 要应用的动画已经在“main.js”中被定义:效果是旋转图像并缩小它至消失。 完成步骤设置第一个图像的动画我们使用 Web Animations API 对图像进行动画处理,特别是 更新“main.js”以添加对 { transform: 'rotate(0) scale(1)' }, { transform: 'rotate(360deg) scale(0)' } ]; const aliceTiming = { duration: 2000, iterations: 1, fill: 'forwards' } const alice1 = document.querySelector("#alice1"); const alice2 = document.querySelector("#alice2"); const alice3 = document.querySelector("#alice3"); alice1.animate(aliceTumbling, aliceTiming); Copy to Clipboard 重载页面,你应该就会看到第一个图像旋转收缩的动画。 设置所有图像的动画接下来,我们希望在
我们希望你尝试一些不同的方式来实现这个功能,以便于加强对使用 Promise 的不同方式的理解。
别忘了, 二、我实现的效果:1.笑话生成器![]() ![]() 2.图片库![]() 3.序列动画![]() ![]() 三、JavaScript实现代码:1.笑话生成器const customName = document.getElementById('customname');const randomize = document.querySelector('.randomize'); const story = document.querySelector('.story'); function randomValueFromArray(array){ const random = Math.floor(Math.random() * array.length); return array[random]; } let storyText = '今天气温 35 摄氏度,:insertx:出门散步。当走到:inserty:门前时,突然就:insertz:。人们都惊呆了,李雷全程目睹但并没有慌,因为:insertx:是一个 140 公斤的胖子,天气又辣么热。'; let insertX = ['怪兽威利', '大老爹', '圣诞老人']; let insertY = ['肯德基', '迪士尼乐园', '白宫']; let insertZ = ['自燃了', '在人行道化成了一坨泥', '变成一只鼻涕虫爬走了']; randomize.addEventListener('click', result); function result() { let newStory = storyText; let xItem = randomValueFromArray(insertX); let yItem = randomValueFromArray(insertY); let zItem = randomValueFromArray(insertZ); newStory = newStory.replace(':insertx:', xItem); newStory = newStory.replace(':insertx:', xItem); newStory = newStory.replace(':inserty:', yItem); newStory = newStory.replace(':insertz:', zItem); if(customName.value !== '') { const name = customName.value; newStory = newStory.replace('李雷', name); } if(document.getElementById("american").checked) { const weight = Math.round(140 * 2.20462) + ' 磅'; const temperature = Math.round(35 * 9 / 5 + 32) + ' 华氏度'; newStory = newStory.replace('35 摄氏度', temperature); newStory = newStory.replace('140 公斤', weight); } story.textContent = newStory; story.style.visibility = 'visible'; } 2.图片库const displayedImage = document.querySelector('.displayed-img');const thumbBar = document.querySelector('.thumb-bar'); const btn = document.querySelector('button'); const overlay = document.querySelector('.overlay'); /* Declaring the array of image filenames */ const images=["pic1.jpg","pic2.jpg","pic3.jpg","pic4.jpg","pic5.jpg"]; /* Declaring the alternative text for each image file */ const pic1=document.createElement('img'); pic1.src="images/pic"+1+".jpg"; pic1.className="displayed-img"; pic1.onclick=function(){ displayedImage.src="images/pic"+1+".jpg"; } thumbBar.appendChild(pic1); const pic2=document.createElement('img'); pic2.src="images/pic"+2+".jpg"; pic2.className="displayed-img"; pic2.onclick=function(){ displayedImage.src="images/pic"+2+".jpg"; } thumbBar.appendChild(pic2); const pic3=document.createElement('img'); pic3.src="images/pic"+3+".jpg"; pic3.className="displayed-img"; pic3.onclick=function(){ displayedImage.src="images/pic"+3+".jpg"; } thumbBar.appendChild(pic3); const pic4=document.createElement('img'); pic4.src="images/pic"+4+".jpg"; pic4.className="displayed-img"; pic4.onclick=function(){ displayedImage.src="images/pic"+4+".jpg"; } thumbBar.appendChild(pic4); const pic5=document.createElement('img'); pic5.src="images/pic"+5+".jpg"; pic5.className="displayed-img"; pic5.onclick=function(){ displayedImage.src="images/pic"+5+".jpg"; } thumbBar.appendChild(pic5); // for(i=1;i<=5;i++){ // const pic=document.createElement('img'); // pic.src="images/pic"+i+".jpg"; // pic.className="displayed-img"; // pic.onclick=function(i){ // displayedImage.src="images/pic"+i+".jpg"; // } // thumbBar.appendChild(pic); // } /* Wiring up the Darken/Lighten button */ btn.onclick=function(){ const temp=btn.getAttribute('class'); if(temp==='dark'){ btn.setAttribute('class','light'); btn.textContent="Lighting"; overlay.style.backgroundColor='rgba(0,0,0,0.5)'; }else{ btn.textContent="Darken"; overlay.style.backgroundColor='rgba(0,0,0,0)'; btn.setAttribute('class','dark'); } 3.序列动画const aliceTumbling = [{ transform: 'rotate(0) scale(1)' }, { transform: 'rotate(360deg) scale(0)' } ]; const aliceTiming = { duration: 2000, iterations: 1, fill: 'forwards' } const alice1 = document.querySelector("#alice1"); const alice2 = document.querySelector("#alice2"); const alice3 = document.querySelector("#alice3"); alice1.animate(aliceTumbling, aliceTiming).finished .then(()=> alice2.animate(aliceTumbling, aliceTiming).finished) .then(()=> alice3.animate(aliceTumbling, aliceTiming).finished).finished; |
万奢网手机版
官网微博:万奢网服务平台