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

yizhihongxing

让我来详细讲解一下如何利用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# Path.GetFullPath(string path):获取指定路径的完整路径

    Path.GetFullPath(string path)是C#中的一个静态方法,用于将相对路径转换为绝对路径。具体来说,它根据指定的相对路径和当前工作目录,返回一个完全限定的绝对路径。 使用方法: string fullPath = Path.GetFullPath("relative/path.txt"); 其中参数relative/…

    C# 2023年4月19日
    00
  • c# 爬取优酷电影信息(1)

    下面是针对“c# 爬取优酷电影信息(1)”攻略的详细讲解。 1. 项目概述 该项目旨在使用C#编写一个网页爬虫,从优酷电影网站上爬取指定类型电影的信息,包括电影名称、导演、演员、上映时间、评分等。具体实现时,我们将使用HtmlAgilityPack解析HTML页面并提取数据。 2. 实现步骤 2.1 确定目标URL与请求方式 我们首先需要确定需要爬取的目标页…

    C# 2023年6月2日
    00
  • C#权限管理和设计浅谈

    C#权限管理和设计浅谈 权限管理是软件开发中的一个重要主题。在C#中,我们可以利用不同的技术来实现权限管理,比如使用角色和授权、用户和角色、基于声明的权限控制等。本文将介绍如何在C#应用程序中实现权限管理系统,并探讨如何设计良好的权限管理方案。 第一步:定义用户和角色 在权限管理系统中,我们通常会定义一些用户和角色。一个角色代表了一组权限的集合,一个用户可以…

    C# 2023年6月3日
    00
  • C# WebService创建、发布、调用的实例讲解

    C# WebService 创建、发布、调用的实例讲解 本文将为您详细介绍C# WebService创建、发布、调用的完整攻略,包括以下步骤: 1.创建WebService2.发布WebService3.调用WebService 1. 创建WebService 要创建一个C# WebService,首先需要在Visual Studio中创建一个Web项目,步…

    C# 2023年5月15日
    00
  • Visual Studio Connected Services 生成http api 调用代码

    生成的代码将和接口对应的参数、返回值一一对应,本文底层使用的工具为NSwag.exe,其他可替代的方案还有AutoSet.exe。本文中生成的代码将在编译过程中自动编译,类似grpc生成代码的模式,如果使用AutoSet则需要手动引入代码。另外也可以使用NSwag对应的vs插件(https://marketplace.visualstudio.com/ite…

    C# 2023年5月11日
    00
  • 在Asp.net core中实现websocket通信

    在ASP.NET Core中实现WebSocket通信,可以采用ASP.NET Core中自带的WebSocket API或者使用第三方库SignalR进行实现。以下是基于ASP.NET Core原生WebSocket API实现的步骤: 使用WebSocket API实现WebSocket通信 第一步:创建一个ASP.NET Core Web应用程序 在V…

    C# 2023年6月3日
    00
  • ASP.NET Core基础之中间件

    ASP.NET Core基础之中间件 在ASP.NET Core中,中间件是处理HTTP请求和响应的组件。中间件可以执行各种任务,例如路由请求、验证身份、记录请求、压缩响应等。本攻略将介绍ASP.NET Core中间件的基础知识,包括如何创建和使用中间件,并提供两个示例说明。 创建中间件 在ASP.NET Core中,可以通过实现IMiddleware接口或…

    C# 2023年5月16日
    00
  • C#关键字之重写override介绍

    C#关键字之重写override介绍 什么是重写 在面向对象编程中,重写是指在子类中对父类中已有的方法进行重新实现。当子类继承自父类时,子类继承了父类的方法,但是有时候子类需要对这些方法进行修改或者扩展,这就需要使用到重写。 override关键字 在C#中,使用override关键字来重写父类的方法,重写的方法必须与被重写的方法具有相同的名称、返回类型、参…

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