html加css样式实现js美食项目首页示例代码

让我来详细讲解一下如何利用HTML和CSS实现一个美食项目的首页。

环境准备

在开始之前,你需要做好以下准备:

  • 一台电脑和代码编辑器
  • 熟悉HTML和CSS的基本语法
  • 熟悉基本的JavaScript语法

目标设计

我们这个美食项目的首页,需要实现以下功能:

  • 导航栏
  • 轮播图
  • 宣传广告图
  • 美食推荐列表

HTML部分

首先,我们需要在HTML中添加必要的元素,包括导航栏、轮播图、宣传广告图、美食推荐列表。具体代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>美食项目首页</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <header>
      <nav>
        <ul>
          <li><a href="#">首页</a></li>
          <li><a href="#">分类</a></li>
          <li><a href="#">排行榜</a></li>
          <li><a href="#">关于我们</a></li>
        </ul>
      </nav>
    </header>
    <main>
      <section class="carousel">
        <img src="https://cdn.pixabay.com/photo/2017/12/14/07/02/milk-and-cookies-3017429_960_720.jpg" alt="轮播图1" />
        <img src="https://cdn.pixabay.com/photo/2017/04/05/20/16/breakfast-2203731_960_720.jpg" alt="轮播图2" />
        <img src="https://cdn.pixabay.com/photo/2015/10/31/12/08/coffee-1017472_960_720.jpg" alt="轮播图3" />
      </section>
      <section class="promo">
        <img src="https://cdn.pixabay.com/photo/2017/10/29/17/18/desserts-2903127_960_720.jpg" alt="宣传图" />
        <p>健康食品<br />健康生活</p>
      </section>
      <section class="recommendations">
        <h2>今日特选</h2>
        <ul>
          <li>
            <img src="https://cdn.pixabay.com/photo/2015/03/30/12/22/cheese-698613_960_720.jpg" alt="美食1" />
            <p>芝士汉堡</p>
          </li>
          <li>
            <img src="https://cdn.pixabay.com/photo/2016/03/05/19/02/hamburger-1238246_960_720.jpg" alt="美食2" />
            <p>经典汉堡</p>
          </li>
          <li>
            <img src="https://cdn.pixabay.com/photo/2018/06/01/13/22/mushrooms-3443733_960_720.jpg" alt="美食3" />
            <p>野菌披萨</p>
          </li>
        </ul>
      </section>
    </main>
  </body>
</html>

CSS部分

一旦我们有了HTML结构,我们可以在CSS文件中添加样式以确保选定元素成为想要的样式。以下是样式的代码:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

header {
  background-color: #333;
  color: #fff;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px;
}

nav ul {
  display: flex;
  list-style: none;
}

nav li a {
  color: #fff;
  text-decoration: none;
  margin: 0 10px;
}

.carousel {
  display: flex;
  overflow: auto;
}

.carousel img {
  width: 100%;
  height: auto;
}

.promo {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  background-color: #fff;
  padding: 50px;
}

.promo img {
  width: 300px;
  height: auto;
}

.recommendations {
  background-color: #f1f1f1;
  padding: 50px;
}

.recommendations h2 {
  text-align: center;
}

.recommendations ul {
  display: flex;
  justify-content: space-between;
  list-style: none;
  margin-top: 50px;
}

.recommendations li {
  width: 30%;
}

.recommendations li img {
  width: 100%;
  height: auto;
  margin-bottom: 10px;
}

.recommendations li p {
  text-align: center;
  font-size: 20px;
  margin-bottom: 10px;
}

JavaScript部分

最后,我们需要添加JavaScript代码来控制轮播图效果。为此,我们需要将轮播图中的所有图像放入一个数组中,并使用计时器自动轮播。代码如下:

const carousel = document.querySelector(".carousel");
const images = carousel.querySelectorAll("img");

let currentIndex = 0;
let timer;

function showImage(index) {
  images.forEach(img => img.classList.remove("show"));
  images[index].classList.add("show");
}

function nextImage() {
  currentIndex++;
  if (currentIndex >= images.length) {
    currentIndex = 0;
  }
  showImage(currentIndex);
}

function startCarousel() {
  timer = setInterval(nextImage, 2000);
}

function stopCarousel() {
  clearInterval(timer);
}

showImage(currentIndex);
startCarousel();

carousel.addEventListener("mouseenter", stopCarousel);
carousel.addEventListener("mouseleave", startCarousel);

示例说明

示例1:在CSS中添加以下样式以使导航栏变成一个固定的菜单栏:

header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1;
}

示例2:添加以下JavaScript代码来改变鼠标悬停在推荐美食上时的样式:

const recommendations = document.querySelector(".recommendations");
const foodItems = recommendations.querySelectorAll("li");

function highlightFoodItem(index) {
  foodItems.forEach(item => item.classList.remove("highlight"));
  foodItems[index].classList.add("highlight");
}

for (let i = 0; i < foodItems.length; i++) {
  foodItems[i].addEventListener("mouseenter", () => highlightFoodItem(i));
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:html加css样式实现js美食项目首页示例代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#如何利用反射将枚举绑定到下拉框详解

    下面我将详细讲解如何利用反射将C#中的枚举绑定到下拉框中。 什么是反射? C#中的反射是指通过程序运行时访问、检测和修改程序中的成员的一种机制,它能够让我们在运行时获取类的类型信息、访问属性和方法,并动态创建对象等。 怎样利用反射将枚举绑定到下拉框中? 我们可以通过反射获取到枚举类型的所有值,并将它们绑定到下拉框中。 以下是基本的实现代码: // 获取枚举类…

    C# 2023年6月6日
    00
  • Winform控件Picture实现图片拖拽显示效果

    详细讲解Winform控件Picture实现图片拖拽显示效果的完整攻略。 1. 实现效果 我们将实现一个Winform窗体应用程序,其界面上有一个Picture控件,用户可以通过拖拽图片到Picture控件上实现图片显示。 2. 实现步骤 下面是我们实现此功能的步骤: 2.1 在窗体上添加Picture控件 在Visual Studio中创建一个Winfor…

    C# 2023年6月2日
    00
  • C# PropertyInfo类案例详解

    C# PropertyInfo类案例详解 简介 C# PropertyInfo类是System.Reflection命名空间下的一个类,用于描述类的属性成员。通过PropertyInfo类,可以获取类的属性的信息、值和元数据。 使用方法 获取属性信息 可以使用Type类的GetProperty()方法来获取类的属性信息,该方法接受一个字符串类型的参数,即要获…

    C# 2023年6月1日
    00
  • C# datagrid非常规方法实现添加合并列

    C# 的 Datagrid 是一个非常强大的控件,但是由于它的灵活性,有时候我们需要实现一些非常规的功能,例如实现添加合并列。下面是一份完整攻略。 步骤一:准备工作 在使用非常规方法实现添加合并列之前,我们需要先明确几件事情,分别是: 我们需要使用到 WPF 的 DataGrid 控件,而不是 WinForms 的 DataGridView 控件; 我们需要…

    C# 2023年6月6日
    00
  • 磊科路由器智能QoS配置步骤分享

    磊科路由器智能QoS是一种网络质量服务,可以帮助您优化网络带宽,提高网络性能。本攻略将深入探讨如何配置磊科路由器智能QoS,并提供两个示例说明。 配置磊科路由器智能QoS 配置磊科路由器智能QoS的步骤如下: 1. 登录路由器管理界面 首先,您需要登录到磊科路由器的管理界面。在浏览器中输入路由器的IP地址,然后输入用户名和密码进行登录。 2. 打开QoS设置…

    C# 2023年5月17日
    00
  • C#实现简单的窗口抖动

    C#实现简单的窗口抖动攻略 本文将介绍如何用C#语言实现简单的窗口抖动效果。用于提示用户操作错误等情况,增加用户的交互体验。 原理说明 窗口抖动的原理是通过快速切换窗口的位置来实现,具体做法是: 获取当前窗口的位置信息 在原位置上左右、上下抖动一定的距离 还原窗口至原位置 循环完成上述过程 实现过程 1. 获取当前窗口位置信息 在Form类的成员方法中,可以…

    C# 2023年6月6日
    00
  • Unity Shader片段着色器使用基础详解

    Unity Shader片段着色器使用基础详解 Unity中的Shader(着色器)用于控制游戏对象的渲染方式,让它们变得更加美观、细致。Shader分为顶点着色器和片段着色器,这篇攻略主要介绍Unity中片段着色器的使用基础,可以帮助开发者更加细致地控制对象的渲染方式。 Shader基础知识 在进入片段着色器的详细使用说明前,我们先来了解一些Shader的…

    C# 2023年6月3日
    00
  • ASP.NET Core中Grpc通信的简单用法

    ASP.NET Core中Grpc通信的简单用法 gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,可以在任何地方运行。在ASP.NET Core中,可以使用gRPC来实现跨平台的通信。本文将介绍ASP.NET Core中gRPC通信的简单用法。 准备工作 在开始之前,需要完成以下准备工作: 安装 .NET Core SDK。 安装 Visual…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部