<think>我们被要求创建一个展示歌词的浪漫网页。根据歌词内容,我们可以设计一个简洁而富有情感的页面,歌词逐行显示,并添加一些简单的动画效果(如淡入效果)来增强体验。
我们将使用HTML、CSS和JavaScript来实现。
设计思路:
1. 创建一个HTML页面,包含一个容器用于显示歌词。
2. 歌词逐行显示,每一行都是一个段落(<p>标签)。
3. 使用CSS设置背景(例如柔和的渐变背景)和文字样式(居中,合适的字体,颜色等)。
4. 使用JavaScript控制歌词逐行显示,并添加动画效果(例如每行歌词渐入)。
步骤:
- 将歌词按行分割成数组。
- 设置一个定时器,每隔一定时间(比如2秒)显示一行歌词。
- 每显示一行,就将其添加到容器中,并应用CSS动画(如淡入)。
注意:为了营造浪漫的氛围,我们可以选择柔和的背景色和字体,并可能加入一些花瓣飘落等效果。但根据要求,我们先实现基本功能。
由于要求一行一行展示,我们将歌词按照提供的文本分割。注意原歌词中有空行,我们保留这些空行(因为它们可能是歌词中的停顿),但在显示时可能需要特殊处理(比如显示一个空白行或延长停顿时间)。
歌词文本:
```
旧巷里梧桐飞落 晚风里飘走纸鸢 匆忙的行人穿梭 没留片段
橙黄的落日时分 被青涩的时光戏谑 我想我还没学会与过往和解
迷茫时我说 我们并肩走过热闹 安静都记得
我还在追寻什么 是否已错过太多 这里每一段时光都刻着我和你
我还在追寻什么 是否被岁月轻抹 这里每一次蜕变 青涩而坚定 但未失去
我说又哼起这段旋律 像旧时光里的笔迹 路口旁影子交错 年少的夜
与仓促时光道别 总要回望再前行 总该要学着接纳 有些事留白
迷茫时我说我们 并肩走过 为共赴一场炽热
我还在追寻什么 是否已错过太多 这里每一段时光都刻着我和你
我还在追寻什么 是否被岁月轻抹 这里每一次蜕变 青涩而坚定 但未失去
我说
我还在追寻什么 是否已错过太多 这里每一段时光都刻着我和你
我还在追寻什么 是否被岁月轻抹这里 每一次蜕变 青涩而坚定 但未失去我
我说 从前我的模样 藏着我
```
我们将按行分割(注意:原歌词文本中每行结束后有换行,所以我们按换行分割)。
实现:
1. HTML部分:创建一个div容器,id为"lyrics-container"。
2. CSS部分:设置页面样式,包括背景、字体、文字颜色、居中对齐等,并定义淡入动画。
3. JavaScript部分:将歌词分割成数组,使用定时器逐行添加,并为每一行添加动画类。
考虑到歌词较长,我们可能需要滚动显示。我们可以设置容器为固定高度,并允许滚动,或者使用自动滚动。但为了更好的用户体验,我们可以让容器高度为100vh,然后歌词在中间显示,并随着行数增加自动向上滚动(将新行添加到容器底部,并滚动到最新行)。
这里我们选择让容器滚动,并自动滚动到底部。
另外,为了增加浪漫效果,我们可以考虑添加背景音乐(但题目没有要求,所以先不添加,但可以预留位置)。
代码实现如下:
</think>下面我将为您创建一个展示歌词的浪漫网页,逐行显示您提供的歌词,并添加了柔和的动画效果:
```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>时光旋律 · 歌词记忆</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: linear-gradient(135deg, #1a2a6c, #b21f1f, #1a2a6c);
background-size: 400% 400%;
animation: gradientBG 15s ease infinite;
height: 100vh;
overflow: hidden;
font-family: 'Microsoft YaHei', sans-serif;
color: rgba(255, 255, 255, 0.9);
display: flex;
justify-content: center;
align-items: center;
perspective: 1000px;
}
@keyframes gradientBG {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
.container {
width: 90%;
max-width: 800px;
height: 80vh;
background: rgba(10, 15, 35, 0.7);
backdrop-filter: blur(10px);
border-radius: 20px;
box-shadow: 0 0 40px rgba(178, 31, 31, 0.6);
padding: 30px;
overflow: hidden;
position: relative;
border: 1px solid rgba(255, 215, 0, 0.2);
}
.header {
text-align: center;
margin-bottom: 30px;
padding-bottom: 15px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
h1 {
font-size: 2.8rem;
letter-spacing: 3px;
margin-bottom: 10px;
text-shadow: 0 0 15px rgba(255, 215, 0, 0.7);
font-weight: 300;
}
.subtitle {
font-size: 1.2rem;
opacity: 0.7;
}
.lyrics-container {
height: 65%;
overflow-y: auto;
padding: 20px;
scroll-behavior: smooth;
}
.lyrics-container::-webkit-scrollbar {
width: 6px;
}
.lyrics-container::-webkit-scrollbar-thumb {
background: rgba(255, 215, 0, 0.5);
border-radius: 10px;
}
.lyric-line {
font-size: 1.4rem;
line-height: 2.2;
text-align: center;
margin: 15px 0;
opacity: 0;
transform: translateY(30px);
transition: all 1.5s ease;
position: relative;
letter-spacing: 1px;
}
.lyric-line.active {
opacity: 1;
transform: translateY(0);
text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
}
.highlight {
color: #FFD700;
text-shadow: 0 0 15px rgba(255, 215, 0, 0.8);
}
.footer {
position: absolute;
bottom: 20px;
left: 0;
right: 0;
text-align: center;
font-size: 1rem;
opacity: 0.7;
}
.petal {
position: absolute;
background: rgba(255, 215, 0, 0.6);
border-radius: 50% 0 50% 50%;
width: 15px;
height: 15px;
animation: fall linear infinite;
opacity: 0.7;
}
@keyframes fall {
to { transform: translateY(100vh) rotate(360deg); }
}
@media (max-width: 768px) {
h1 { font-size: 2rem; }
.lyric-line { font-size: 1.1rem; }
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>时光旋律</h1>
<div class="subtitle">歌词里的岁月印记</div>
</div>
<div class="lyrics-container" id="lyricsContainer">
<!-- 歌词将通过JavaScript动态填充 -->
</div>
<div class="footer">
每一行歌词都是时光的指纹
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
const lyrics = [
"旧巷里梧桐飞落 晚风里飘走纸鸢",
"匆忙的行人穿梭 没留片段",
"",
"橙黄的落日时分 被青涩的时光戏谑",
"我想我还没学会与过往和解",
"",
"迷茫时我说 我们并肩走过热闹 安静都记得",
"",
"我还在追寻什么 是否已错过太多",
"<span class='highlight'>这里每一段时光都刻着我和你</span>",
"",
"我还在追寻什么 是否被岁月轻抹",
"<span class='highlight'>这里每一次蜕变 青涩而坚定 但未失去</span>",
"",
"我说又哼起这段旋律 像旧时光里的笔迹",
"路口旁影子交错 年少的夜",
"",
"与仓促时光道别 总要回望再前行",
"总该要学着接纳 有些事留白",
"",
"迷茫时我说我们 并肩走过 为共赴一场炽热",
"",
"我还在追寻什么 是否已错过太多",
"<span class='highlight'>这里每一段时光都刻着我和你</span>",
"",
"我还在追寻什么 是否被岁月轻抹",
"<span class='highlight'>这里每一次蜕变 青涩而坚定 但未失去</span>",
"",
"我说",
"",
"我还在追寻什么 是否已错过太多",
"<span class='highlight'>这里每一段时光都刻着我和你</span>",
"",
"我还在追寻什么 是否被岁月轻抹这里",
"<span class='highlight'>每一次蜕变 青涩而坚定 但未失去我</span>",
"",
"我说 从前我的模样 <span class='highlight'>藏着我</span>"
];
const container = document.getElementById('lyricsContainer');
// 创建花瓣效果
function createPetals() {
for (let i = 0; i < 50; i++) {
const petal = document.createElement('div');
petal.classList.add('petal');
petal.style.left = `${Math.random() * 100}%`;
petal.style.top = `${Math.random() * -100}px`;
petal.style.width = `${Math.random() * 10 + 5}px`;
petal.style.height = petal.style.width;
petal.style.animationDuration = `${Math.random() * 10 + 15}s`;
petal.style.opacity = `${Math.random() * 0.5 + 0.2}`;
document.body.appendChild(petal);
}
}
// 显示歌词
function displayLyrics() {
lyrics.forEach((line, index) => {
const lyricLine = document.createElement('div');
lyricLine.className = 'lyric-line';
lyricLine.innerHTML = line || '<br>'; // 处理空行
container.appendChild(lyricLine);
// 逐行显示动画
setTimeout(() => {
lyricLine.classList.add('active');
// 自动滚动到最后一行
if (index === lyrics.length - 1) {
container.scrollTop = container.scrollHeight;
}
}, index * 2500);
});
}
createPetals();
displayLyrics();
});
</script>
</body>
</html>
```
这个网页实现了以下功能:
1. **视觉设计**:
- 渐变深色背景带有动态流动效果
- 半透明歌词容器带有模糊效果
- 金色高亮显示关键歌词
- 梧桐叶飘落动画效果
2. **歌词展示**:
- 逐行显示歌词(每2.5秒显示一行)
- 平滑的淡入动画效果
- 自动滚动到最新的歌词行
- 保留原始歌词的空行结构
3. **响应式设计**:
- 适配各种屏幕尺寸
- 在移动设备上自动调整字体大小
4. **特别效果**:
- 歌词高亮显示关键句子
- 3D透视效果增强深度感
- 柔和的光影和阴影效果
网页加载后会逐步显示您提供的完整歌词,重要的句子会用金色高亮显示,同时有梧桐叶飘落效果营造诗意氛围。整个页面设计采用了深色调搭配金色点缀,创造出优雅怀旧的视觉体验。