【Html.js——功能实现】新年贺卡(蓝桥杯真题-1768)【合集】
【摘要】 新年马上到了,大家肯定有很多祝福的话语要对自己的亲人朋友说,下面我们一起来制作一张贺卡,让我们把想说的话都写在贺卡上。
本题已经内置了初始代码,打开实验环境,目录结构如下:
wget https://labfile.oss.aliyuncs.com/courses/7835/fruit-flex.zip&& unzip fruit-flex.zip && rm fruit-flex.zip
目录😋
背景介绍
新年马上到了,大家肯定有很多祝福的话语要对自己的亲人朋友说,下面我们一起来制作一张贺卡,让我们把想说的话都写在贺卡上。
准备步骤
本题已经内置了初始代码,打开实验环境,目录结构如下:
下载完成之后的目录结构如下:
其中:
index.css
是本次挑战的样式文件。index.js
是本次挑战需要补充的 js 文件。index.html
是贺卡页面。 选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。打开环境右侧的【Web 服务】。初始效果如下:
目标要求
请仔细阅读需要完善代码部分的提示,之后完善
index.js
样式文件中的 TODO 部分,点击书写贺卡,卡片随机展示已经写好的祝福语:
要求规定
- 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径等。
- 满足题目需求后,保持 Web 服务处于可以正常访问状态,点击「提交检测」系统会自动判分。
通关代码✔️
代码解析📑
1. HTML 部分
- DOCTYPE 声明:
<!DOCTYPE html>
声明这是一个 HTML5 文档。- html 元素:是整个 HTML 文档的根元素。
- head 元素:包含了文档的元数据。
meta charset="UTF-8"
:指定文档的字符编码为 UTF-8。meta http-equiv="X-UA-Compatible" content="IE=edge"
:为 Internet Explorer 浏览器提供兼容性信息,使它以最新的渲染模式工作。meta name="viewport" content="width=device-width, initial-scale=1.0"
:确保页面在不同设备上能正确显示,特别是在移动设备上,将视口宽度设置为设备宽度,初始缩放比例为 1。title
:设置页面的标题,显示在浏览器的标签页上。link rel="stylesheet" href="index.css"
:引入外部的 CSS 文件index.css
来设置页面的样式。- body 元素:包含页面的主要内容。
div class="card-name"
:一个带有card-name
类的div
元素,用于显示 “新年贺卡” 字样。div class="card" id="card"
:一个带有card
类和id
为card
的div
元素,代表贺卡的主体部分。p id="greeting-display"
:一个p
元素,用于显示贺卡的祝福语,它的内容将通过 JavaScript 动态添加。button id="btn"
:一个带有id
为btn
的按钮,点击该按钮将触发书写贺卡的操作。script src="./index.js"
:引入外部的 JavaScript 文件index.js
来实现动态交互功能。
2. CSS部分
- :root 伪类:定义了一些 CSS 自定义属性(变量),这些变量可在整个文档中使用,方便颜色的统一管理和修改。
--wine-red
、--bright-red
等:存储不同颜色的十六进制值。- 通用选择器和元素选择器:
*, html, body
:将所有元素、html
元素和body
元素的margin
和padding
都设置为 0,用于清除默认的边距和填充。- 类选择器和元素选择器:
.card-name
:将带有card-name
类的元素的字体颜色设置为var(--gold)
,字体大小为 32 像素。body
:将页面的背景颜色设置为var(--wine-red)
,高度设置为视口高度(100vh
),使用 Flex 布局,垂直方向排列子元素,居中对齐,字体为Caveat
字体。.card
:定义了贺卡主体的样式,包括宽度、高度、边框半径、背景颜色、字体大小、文本对齐方式、内边距等,同时使用position: relative
为内部的p
元素的绝对定位提供参考。p
:将p
元素进行绝对定位,使其水平和垂直居中于.card
元素内,使用transform
进行精确的居中偏移。button
:设置按钮的样式,无边框,背景颜色为var(--gold)
,添加内边距和边框半径,水平居中。button:hover
:当鼠标悬停在按钮上时,将鼠标指针变为手型,增加交互性。
3.JavaScript部分
DOMContentLoaded 事件监听:
document.addEventListener('DOMContentLoaded', function () {...})
:
- 监听
DOMContentLoaded
事件,确保页面的 DOM 结构完全加载后才执行其中的代码。const greetingDisplay = document.getElementById("greeting-display");
:获取id
为greeting-display
的元素。const btn = document.getElementById("btn");
:获取id
为btn
的元素。btn.addEventListener("click", () => {...})
:为按钮添加点击事件监听器,当点击按钮时,调用show
函数并将greetingDisplay
元素作为参数传递。数组定义:
const greetings = [...]
:
- 定义了一个名为
greetings
的数组,其中包含多个新年祝福语。这些祝福语将被用于显示在贺卡上。writeGreeting 函数:
function writeGreeting()
:
Math.floor(Math.random() * greetings.length)
:生成一个 0 到greetings.length - 1
的随机整数,作为数组的索引。return greetings[Math.floor(Math.random() * greetings.length)];
:根据随机索引从greetings
数组中选取一个祝福语。show 函数:
function show(greetingDisplay)
:
greetingDisplay.innerHTML = writeGreeting();
:将writeGreeting()
函数生成的祝福语更新到greetingDisplay
元素的innerHTML
中,从而在页面上显示。
4. 工作流程 ▶️
- 页面加载阶段:
- 浏览器加载 HTML 文件,根据 HTML 结构创建 DOM 树。
- 同时,浏览器解析
<link rel="stylesheet" href="index.css">
,将 CSS 样式应用到相应的元素上,包括页面的背景颜色、元素的布局、字体、大小、颜色等。- 页面显示时,会出现一个红色背景,中心位置有一个白色的
card
元素,上面有一个标题 “新年贺卡”,一个空的p
元素,以及一个金色的按钮。- JavaScript 初始化阶段:
- 当页面的 DOM 结构加载完成后,触发
DOMContentLoaded
事件。- 代码通过
document.getElementById()
找到id
为greeting-display
的元素和id
为btn
的按钮元素。- 为按钮添加点击事件监听器。
- 用户交互阶段:
- 用户点击 “书写贺卡” 按钮。
- 点击事件触发
show
函数,show
函数调用writeGreeting
函数。writeGreeting
函数从greetings
数组中随机选择一个祝福语。show
函数将选取的祝福语更新到id
为greeting-display
的p
元素中,显示在贺卡上。
通过 HTML、CSS 和 JavaScript 的协同工作,实现了一个简单的新年贺卡效果。用户可以打开页面,点击按钮,看到不同的新年祝福语显示在贺卡上,给用户带来了简单的交互体验。
测试结果👍
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)