当前位置:首页 > JavaScript

js实现仿豆瓣网页

2026-03-01 18:41:52JavaScript

以下是使用JavaScript实现仿豆瓣网页的关键步骤和代码示例:

页面结构设计

HTML部分需要包含导航栏、内容展示区和页脚。导航栏使用<nav>标签,内容区用<div>划分模块,页脚用<footer>

<nav class="navbar">
  <div class="logo">豆瓣</div>
  <ul class="nav-links">
    <li><a href="#">电影</a></li>
    <li><a href="#">图书</a></li>
    <li><a href="#">音乐</a></li>
  </ul>
</nav>

<div class="content">
  <div class="movie-list" id="movieContainer"></div>
</div>

<footer class="footer">
  <p>© 2023 仿豆瓣网页</p>
</footer>

数据获取与渲染

使用Fetch API获取电影数据并动态渲染到页面:

const fetchMovies = async () => {
  try {
    const response = await fetch('https://api.example.com/movies');
    const data = await response.json();

    const movieContainer = document.getElementById('movieContainer');
    data.forEach(movie => {
      const movieCard = document.createElement('div');
      movieCard.className = 'movie-card';
      movieCard.innerHTML = `
        <img src="${movie.image}" alt="${movie.title}">
        <h3>${movie.title}</h3>
        <p>评分: ${movie.rating}</p>
      `;
      movieContainer.appendChild(movieCard);
    });
  } catch (error) {
    console.error('获取数据失败:', error);
  }
};

window.addEventListener('DOMContentLoaded', fetchMovies);

样式实现

CSS部分实现豆瓣风格的布局和视觉效果:

.navbar {
  display: flex;
  justify-content: space-between;
  padding: 15px;
  background-color: #f7f7f7;
}

.movie-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 20px;
  padding: 20px;
}

.movie-card {
  border: 1px solid #ddd;
  padding: 10px;
  border-radius: 4px;
}

.movie-card img {
  width: 100%;
  height: auto;
}

交互功能实现

为电影卡片添加悬停效果和点击事件:

document.querySelectorAll('.movie-card').forEach(card => {
  card.addEventListener('mouseenter', () => {
    card.style.transform = 'scale(1.05)';
    card.style.boxShadow = '0 4px 8px rgba(0,0,0,0.1)';
  });

  card.addEventListener('mouseleave', () => {
    card.style.transform = 'scale(1)';
    card.style.boxShadow = 'none';
  });

  card.addEventListener('click', () => {
    const title = card.querySelector('h3').textContent;
    alert(`你点击了: ${title}`);
  });
});

响应式设计

通过媒体查询实现移动端适配:

@media (max-width: 768px) {
  .navbar {
    flex-direction: column;
  }

  .movie-list {
    grid-template-columns: repeat(2, 1fr);
  }
}

本地存储功能

使用localStorage存储用户偏好:

// 存储主题偏好
const setTheme = (theme) => {
  localStorage.setItem('theme', theme);
  document.body.className = theme;
};

// 初始化时读取
const savedTheme = localStorage.getItem('theme') || 'light';
document.body.className = savedTheme;

以上代码组合可以实现一个基本的仿豆瓣网页,包含数据获取、动态渲染、交互效果和响应式设计等核心功能。实际开发中需要根据具体需求调整API接口和样式细节。

js实现仿豆瓣网页

标签: 豆瓣网页
分享给朋友:

相关文章

html css制作静态网页

html css制作静态网页

HTML 和 CSS 制作静态网页 创建基本 HTML 结构 使用 HTML 定义网页的结构和内容。以下是一个基本的 HTML 模板: <!DOCTYPE html> <html…

css网页尾部制作

css网页尾部制作

CSS网页尾部制作方法 固定定位底部布局 使用position: fixed将尾部固定在页面底部,适用于需要常驻显示的场景。代码示例: footer { position: fixed; b…

网页截图实现PHP

网页截图实现PHP

使用PHP的GD库进行网页截图 PHP本身不具备直接截取网页的功能,但可以通过调用外部工具或服务实现。以下是几种常见方法: 方法一:使用PHP的exec()调用外部工具 安装wkhtmltopdf…

vue实现网页功能

vue实现网页功能

Vue 实现网页功能的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 适合现代轻量级应用。 npm init vue@la…

Vue实现网页全屏

Vue实现网页全屏

Vue实现网页全屏的方法 在Vue中实现网页全屏功能可以通过浏览器的全屏API来实现。以下是几种常见的实现方式: 使用原生JavaScript全屏API 浏览器提供了requestFullscre…

vue实现网页缩放

vue实现网页缩放

实现网页缩放的基本思路 在Vue中实现网页缩放通常涉及监听浏览器事件、调整CSS样式或使用CSS的transform属性。以下是几种常见方法: 使用CSS transform属性缩放 通过修改CSS…