- 顶部导航栏:包含Logo、主要游戏链接、赛事中心和下载按钮。
- 全屏英雄轮播图:模拟官网首页的视觉冲击力,带有动态背景和切换效果。
- 英雄展示区:以网格形式展示部分英雄,并带有悬停效果。
- 游戏模式介绍:展示不同的游戏模式。
- 赛事资讯区:模拟最新的赛事新闻。
- 页脚:包含各种链接和信息。
最终效果预览
这个页面将具有以下特点:

(图片来源网络,侵删)
- 深色主题:符合英雄联盟的视觉风格。
- 响应式设计:在电脑和手机上都能良好显示。
- 交互效果:包含悬停、轮播等动态效果,使用纯CSS和少量JavaScript实现。
- 模块化结构:代码清晰,易于理解和扩展。
文件结构
为了保持项目整洁,我们创建一个简单的文件结构:
/league-of-legends-static-website
|-- index.html # 主HTML文件
|-- css/
| |-- style.css # 主要样式文件
|-- js/
| |-- main.js # 主要JavaScript文件
|-- images/
| |-- logo.png # 替换为实际的英雄联盟Logo
| |-- champion-1.jpg # 英雄图片
| |-- champion-2.jpg
| |-- ... # 更多英雄图片
| |-- bg-slider-1.jpg # 轮播背景图
| |-- bg-slider-2.jpg
| |-- ... # 更多背景图
第一步:HTML (index.html)
这是页面的骨架,定义了所有的内容和结构。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">英雄联盟 - 虚构世界,真实英雄</title>
<link rel="stylesheet" href="css/style.css">
<!-- 引入字体图标库 (Font Awesome) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
<!-- 顶部导航栏 -->
<header class="main-header">
<div class="container header-container">
<a href="#" class="logo">
<!-- 使用一个占位符图片,请替换为真实的LoL Logo -->
<img src="images/logo.png" alt="英雄联盟Logo">
</a>
<nav class="main-nav">
<ul>
<li><a href="#game">游戏</a></li>
<li><a href="#news">新闻</a></li>
<li><a href="#esports">电竞赛事</a></li>
<li><a href="#community">社区</a></li>
<li><a href="#shop">商城</a></li>
</ul>
</nav>
<a href="#" class="download-btn">立即下载</a>
</div>
</header>
<!-- 全屏轮播图 -->
<section class="hero-slider">
<div class="slider-container">
<div class="slide active" style="background-image: url('images/bg-slider-1.jpg');">
<div class="slide-content">
<h1>欢迎来到符文之地</h1>
<p>在英雄联盟中,你将选择一个独特的英雄,在激烈的5v5团队对抗中施展技能、摧毁敌方基地,体验前所未有的竞技快感。</p>
<a href="#" class="cta-button">开始游戏</a>
</div>
</div>
<div class="slide" style="background-image: url('images/bg-slider-2.jpg');">
<div class="slide-content">
<h1>2025 全球总决赛</h1>
<p>世界最强战队齐聚一堂,争夺至高无上的召唤师杯!见证历史,为你支持的队伍加油助威。</p>
<a href="#" class="cta-button">观看赛事</a>
</div>
</div>
<!-- 可以添加更多轮播项 -->
</div>
<!-- 轮播控制按钮 -->
<button class="slider-btn prev"><i class="fas fa-chevron-left"></i></button>
<button class="slider-btn next"><i class="fas fa-chevron-right"></i></button>
<!-- 轮播指示器 -->
<div class="slider-dots"></div>
</section>
<!-- 英雄展示区 -->
<section class="champions-section">
<div class="container">
<h2>选择你的英雄</h2>
<p>超过160位英雄,每位都拥有独特的技能和玩法。</p>
<div class="champions-grid">
<!-- 英雄卡片 1 -->
<div class="champion-card">
<img src="https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Ahri_0.jpg" alt="阿狸">
<div class="champion-info">
<h3>阿狸</h3>
<p>九尾妖狐</p>
</div>
</div>
<!-- 英雄卡片 2 -->
<div class="champion-card">
<img src="https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Yasuo_0.jpg" alt="亚索">
<div class="champion-info">
<h3>亚索</h3>
<p>疾风剑豪</p>
</div>
</div>
<!-- 英雄卡片 3 -->
<div class="champion-card">
<img src="https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Jinx_0.jpg" alt="金克丝">
<div class="champion-info">
<h3>金克丝</h3>
<p>暴走萝莉</p>
</div>
</div>
<!-- 英雄卡片 4 -->
<div class="champion-card">
<img src="https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Lux_0.jpg" alt="拉克丝">
<div class="champion-info">
<h3>拉克丝</h3>
<p>光辉女郎</p>
</div>
</div>
<!-- 英雄卡片 5 -->
<div class="champion-card">
<img src="https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Garen_0.jpg" alt="盖伦">
<div class="champion-info">
<h3>盖伦</h3>
<p>德玛西亚之力</p>
</div>
</div>
<!-- 英雄卡片 6 -->
<div class="champion-card">
<img src="https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Jhin_0.jpg" alt="烬">
<div class="champion-info">
<h3>烬</h3>
<p>致命华彩</p>
</div>
</div>
</div>
<a href="#" class="view-all-btn">查看全部英雄</a>
</div>
</section>
<!-- 游戏模式区 -->
<section class="game-modes-section">
<div class="container">
<h2>多样的游戏模式</h2>
<div class="modes-grid">
<div class="mode-card">
<i class="fas fa-crown"></i>
<h3>召唤师峡谷</h3>
<p>经典的5v5地图,体验最纯粹的MOBA竞技。</p>
</div>
<div class="mode-card">
<i class="fas fa-bomb"></i>
<h3>嚎哭深渊</h3>
<p>5v5极地大乱斗,紧张刺激,一局定胜负。</p>
</div>
<div class="mode-card">
<i class="fas fa-chess"></i>
<h3>云顶之弈</h3>
<p>自走棋策略模式,组建你的最强阵容。</p>
</div>
</div>
</div>
</section>
<!-- 赛事资讯区 -->
<section class="news-section">
<div class="container">
<h2>赛事资讯</h2>
<div class="news-grid">
<article class="news-card">
<img src="https://placehold.co/600x400/2C3E50/FFFFFF?text=赛事新闻1" alt="新闻图片">
<div class="news-content">
<span class="news-category">全球总决赛</span>
<h3>T1与Gen.G会师决赛,巅峰对决一触即发</h3>
<p>经过数周激烈的角逐,LPL赛区的Gen.G和LCK赛区的T1成功...</p>
<a href="#">阅读更多 <i class="fas fa-arrow-right"></i></a>
</div>
</article>
<article class="news-card">
<img src="https://placehold.co/600x400/34495E/FFFFFF?text=赛事新闻2" alt="新闻图片">
<div class="news-content">
<span class="news-category">季前赛</span>
<h3>季前赛更新:装备与符文调整一览</h3>
<p>为了提升新赛季的游戏体验,我们对部分装备和符文进行了...</p>
<a href="#">阅读更多 <i class="fas fa-arrow-right"></i></a>
</div>
</article>
</div>
</div>
</section>
<!-- 页脚 -->
<footer class="main-footer">
<div class="container">
<div class="footer-grid">
<div class="footer-column">
<h4>游戏</h4>
<ul>
<li><a href="#">游戏下载</a></li>
<li><a href="#">游戏指南</a></li>
<li><a href="#">新手入门</a></li>
<li><a href="#">英雄列表</a></li>
</ul>
</div>
<div class="footer-column">
<h4>社区</h4>
<ul>
<li><a href="#">官方论坛</a></li>
<li><a href="#">创作者中心</a></li>
<li><a href="#">开发者</a></li>
<li><a href="#">裁判系统</a></li>
</ul>
</div>
<div class="footer-column">
<h4>支持</h4>
<ul>
<li><a href="#">帮助中心</a></li>
<li><a href="#">联系我们</a></li>
<li><a href="#">安全中心</a></li>
<li><a href="#">举报不良行为</a></li>
</ul>
</div>
<div class="footer-column">
<h4>关注我们</h4>
<div class="social-links">
<a href="#"><i class="fab fa-weibo"></i></a>
<a href="#"><i class="fab fa-weixin"></i></a>
<a href="#"><i class="fab fa-bilibili"></i></a>
<a href="#"><i class="fab fa-youtube"></i></a>
</div>
</div>
</div>
<div class="footer-bottom">
<p>© 2025 Riot Games, Inc. 腾讯公司在中国大陆地区的独家代理运营商,保留所有权利。</p>
</div>
</div>
</footer>
<script src="js/main.js"></script>
</body>
</html>
第二步:CSS (css/style.css)
这是页面的“皮肤”,负责所有的视觉呈现和布局。
/* --- 全局样式 --- */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&display=swap');
:root {
--primary-color: #00D4FF; /* 英雄联盟蓝 */
--dark-bg: #0E1929;
--darker-bg: #070A0F;
--text-light: #FFFFFF;
--text-dim: #A3B1C6;
--card-bg: rgba(14, 25, 41, 0.7);
--hover-bg: rgba(255, 255, 255, 0.1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: var(--dark-bg);
color: var(--text-light);
line-height: 1.6;
overflow-x: hidden;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
h1, h2, h3 {
font-weight: 700;
}
h2 {
text-align: center;
font-size: 2.5rem;
margin-bottom: 1rem;
color: var(--text-light);
}
p {
color: var(--text-dim);
}
a {
text-decoration: none;
color: inherit;
transition: color 0.3s ease;
}
a:hover {
color: var(--primary-color);
}
/* --- 顶部导航栏 --- */
.main-header {
position: fixed;
top: 0;
left: 0;
width: 100%;
background: rgba(7, 10, 15, 0.8); /* 半透明背景 */
backdrop-filter: blur(10px);
z-index: 1000;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.header-container {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 20px;
}
.logo img {
height: 40px;
}
.main-nav ul {
list-style: none;
display: flex;
gap: 2rem;
}
.main-nav a {
color: var(--text-dim);
font-weight: 500;
transition: color 0.3s ease;
}
.main-nav a:hover {
color: var(--text-light);
}
.download-btn {
background-color: var(--primary-color);
color: var(--darker-bg);
padding: 0.6rem 1.5rem;
border-radius: 5px;
font-weight: 700;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.download-btn:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0, 212, 255, 0.4);
}
/* --- 全屏轮播图 --- */
.hero-slider {
position: relative;
height: 100vh;
overflow: hidden;
margin-top: 60px; /* 为固定导航栏留出空间 */
}
.slider-container {
position: relative;
height: 100%;
}
.slide {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
opacity: 0;
transition: opacity 1s ease-in-out;
display: flex;
align-items: center;
justify-content: center;
}
.slide.active {
opacity: 1;
}
.slide-content {
text-align: center;
max-width: 800px;
padding: 2rem;
background: rgba(0, 0, 0, 0.6);
border-radius: 10px;
backdrop-filter: blur(5px);
}
.slide-content h1 {
font-size: 3.5rem;
margin-bottom: 1rem;
}
.slide-content p {
font-size: 1.2rem;
margin-bottom: 2rem;
}
.cta-button {
display: inline-block;
background-color: var(--primary-color);
color: var(--darker-bg);
padding: 0.8rem 2rem;
border-radius: 5px;
font-weight: 700;
transition: transform 0.3s ease;
}
.cta-button:hover {
transform: scale(1.05);
}
.slider-btn {
position: absolute;
top: 50%;
transform: translateY(-50%);
background: rgba(0, 0, 0, 0.5);
color: var(--text-light);
border: none;
padding: 1rem;
cursor: pointer;
font-size: 1.2rem;
transition: background 0.3s ease;
z-index: 10;
}
.slider-btn:hover {
background: rgba(0, 0, 0, 0.8);
}
.prev { left: 20px; }
.next { right: 20px; }
/* --- 英雄展示区 --- */
.champions-section {
padding: 5rem 0;
background-color: var(--dark-bg);
}
.champions-section p {
text-align: center;
margin-bottom: 3rem;
font-size: 1.1rem;
}
.champions-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
.champion-card {
background-color: var(--card-bg);
border-radius: 10px;
overflow: hidden;
transition: transform 0.3s ease, box-shadow 0.3s ease;
cursor: pointer;
}
.champion-card:hover {
transform: translateY(-10px);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.champion-card img {
width: 100%;
height: 300px;
object-fit: cover;
}
.champion-info {
padding: 1.5rem;
text-align: center;
}
.champion-info h3 {
font-size: 1.3rem;
margin-bottom: 0.3rem;
}
.view-all-btn {
display: block;
margin: 3rem auto 0;
padding: 0.8rem 2rem;
border: 2px solid var(--primary-color);
color: var(--primary-color);
border-radius: 5px;
font-weight: 700;
transition: background-color 0.3s ease;
}
.view-all-btn:hover {
background-color: var(--primary-color);
color: var(--darker-bg);
}
/* --- 游戏模式区 --- */
.game-modes-section {
padding: 5rem 0;
background-color: var(--darker-bg);
}
.modes-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.mode-card {
background-color: var(--card-bg);
padding: 2rem;
border-radius: 10px;
text-align: center;
transition: transform 0.3s ease;
}
.mode-card:hover {
transform: translateY(-5px);
}
.mode-card i {
font-size: 3rem;
color: var(--primary-color);
margin-bottom: 1rem;
}
.mode-card h3 {
font-size: 1.5rem;
margin-bottom: 1rem;
}
/* --- 赛事资讯区 --- */
.news-section {
padding: 5rem 0;
background-color: var(--dark-bg);
}
.news-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 2rem;
}
.news-card {
background-color: var(--card-bg);
border-radius: 10px;
overflow: hidden;
transition: transform 0.3s ease;
}
.news-card:hover {
transform: translateY(-5px);
}
.news-card img {
width: 100%;
height: 200px;
object-fit: cover;
}
.news-content {
padding: 1.5rem;
}
.news-category {
display: inline-block;
background-color: var(--primary-color);
color: var(--darker-bg);
padding: 0.3rem 0.8rem;
border-radius: 5px;
font-size: 0.8rem;
font-weight: 700;
margin-bottom: 1rem;
}
.news-content h3 {
font-size: 1.3rem;
margin-bottom: 0.8rem;
}
.news-content a {
display: inline-flex;
align-items: center;
margin-top: 1rem;
font-weight: 500;
}
.news-content a i {
margin-left: 0.5rem;
}
/* --- 页脚 --- */
.main-footer {
background-color: var(--darker-bg);
padding: 3rem 0 1rem;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.footer-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 2rem;
margin-bottom: 2rem;
}
.footer-column h4 {
color: var(--text-light);
margin-bottom: 1rem;
font-size: 1.1rem;
}
.footer-column ul {
list-style: none;
}
.footer-column ul li {
margin-bottom: 0.5rem;
}
.footer-column a {
color: var(--text-dim);
font-size: 0.9rem;
}
.social-links {
display: flex;
gap: 1rem;
}
.social-links a {
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
background-color: var(--card-bg);
border-radius: 50%;
transition: background-color 0.3s ease;
}
.social-links a:hover {
background-color: var(--primary-color);
}
.footer-bottom {
text-align: center;
padding-top: 1rem;
border-top: 1px solid rgba(255, 255, 255, 0.1);
font-size: 0.9rem;
color: var(--text-dim);
}
/* --- 响应式设计 --- */
@media (max-width: 768px) {
.header-container {
flex-wrap: wrap;
}
.main-nav ul {
gap: 1rem;
}
.slide-content h1 {
font-size: 2.5rem;
}
.hero-slider {
margin-top: 80px; /* 为可能更复杂的移动端导航栏留空间 */
}
.champions-grid, .modes-grid, .news-grid {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
}
}
第三步:JavaScript (js/main.js)
这是页面的“大脑”,负责轮播图的动态切换逻辑。

(图片来源网络,侵删)
document.addEventListener('DOMContentLoaded', () => {
// --- 轮播图功能 ---
const slides = document.querySelectorAll('.slide');
const prevBtn = document.querySelector('.slider-btn.prev');
const nextBtn = document.querySelector('.slider-btn.next');
const sliderDotsContainer = document.querySelector('.slider-dots');
let currentSlide = 0;
let slideInterval;
// 创建轮播指示器
slides.forEach((_, index) => {
const dot = document.createElement('button');
dot.classList.add('dot');
if (index === 0) dot.classList.add('active');
dot.addEventListener('click', () => goToSlide(index));
sliderDotsContainer.appendChild(dot);
});
const dots = document.querySelectorAll('.dot');
function goToSlide(slideIndex) {
// 移除所有active类
slides.forEach(slide => slide.classList.remove('active'));
dots.forEach(dot => dot.classList.remove('active'));
// 为当前选中的slide和dot添加active类
slides[slideIndex].classList.add('active');
dots[slideIndex].classList.add('active');
currentSlide = slideIndex;
resetInterval(); // 重置自动播放计时器
}
function nextSlide() {
const nextIndex = (currentSlide + 1) % slides.length;
goToSlide(nextIndex);
}
function prevSlide() {
const prevIndex = (currentSlide - 1 + slides.length) % slides.length;
goToSlide(prevIndex);
}
function startInterval() {
slideInterval = setInterval(nextSlide, 5000); // 每5秒切换一次
}
function resetInterval() {
clearInterval(slideInterval);
startInterval();
}
// 绑定按钮事件
nextBtn.addEventListener('click', nextSlide);
prevBtn.addEventListener('click', prevSlide);
// 启动自动播放
startInterval();
// --- 英雄卡片悬停效果 (可选,增强体验) ---
const championCards = document.querySelectorAll('.champion-card');
championCards.forEach(card => {
card.addEventListener('mouseenter', () => {
// 可以在这里添加更多效果,比如显示技能简介
console.log('Hovering over champion:', card.querySelector('h3').textContent);
});
});
// --- 平滑滚动 (为导航栏链接添加) ---
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
});
如何使用
- 创建文件和文件夹:按照上面的文件结构创建
index.html,css/style.css,js/main.js以及images文件夹。 - 替换图片:
- 在
images文件夹中放入你的logo.png。 - 为轮播图准备至少两张高质量、宽屏的图片,命名为
bg-slider-1.jpg,bg-slider-2.jpg等,并更新HTML中的src。 - 为英雄展示区准备6张英雄图片,或者直接使用我提供的官方CDN链接(这样更方便,但需要联网)。
- 在
- 打开网页:用浏览器(如 Chrome, Firefox)打开
index.html文件,你就能看到一个功能完整、视觉酷炫的英雄联盟风格静态网页了。
如何进一步改进
- 添加更多轮播项:只需在HTML中复制粘贴
.slide和.slide-content的结构,并修改背景图和文字内容即可。 - 英雄详情弹窗:点击英雄卡片时,可以弹出一个模态框(Modal)显示英雄的详细介绍、技能和背景故事。
- 动态新闻加载:使用 JavaScript 的
fetchAPI 从一个模拟的JSON数据源加载新闻,而不是直接写在HTML里。 - 更复杂的交互:为游戏模式卡片添加点击动画,或者创建一个简单的英雄搜索框。
- 优化性能:对于轮播图等大图,可以考虑使用懒加载技术。
这个项目是一个很好的起点,它涵盖了前端开发中HTML结构、CSS样式和JavaScript交互的核心知识点,并且最终成果非常具有视觉冲击力,祝你编码愉快!

(图片来源网络,侵删)
