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# Environment.Exit()方法: 终止当前进程并返回指定的退出代码

    Environment.Exit() 是C#的内置方法,作用是直接终止当前进程,不管程序是否正常执行结束。 它的使用方法如下所示: Environment.Exit(exitCode); 其中 exitCode 是一个整数,作为程序的退出代码。如果没有提供退出代码,则默认为0。 下面我们来看两个实例: 程序如果不满足某个特定的条件,就直接退出: int nu…

    C# 2023年4月19日
    00
  • asp.net 需要登陆的网站上下载网页源代码和文件

    要下载需要登陆的网站的源代码和文件,我们可以使用以下步骤: 安装浏览器扩展程序 我们可以搜索并安装一些浏览器扩展程序,如“EditThisCookie”或“Get Cookies”,这些扩展程序可以帮助我们获取网站的cookie信息,用以模拟登陆状态。 登陆并获取cookie信息 使用浏览器登陆需要下载的网站,进入登陆状态后,打开扩展程序,获取cookie信…

    C# 2023年5月31日
    00
  • asp.net C#实现下载文件的六种方法实例

    下面是详细讲解“asp.net C#实现下载文件的六种方法实例”的完整攻略: 1. 使用Response.TransmitFile方法实现下载文件 在ASP.NET中,使用Response对象较常见地实现文件的下载。其中,使用Response.TransmitFile方法可以直接将文件传输出去,下载速度较快。代码如下: protected void BtnD…

    C# 2023年6月1日
    00
  • C#中单例的实现方法

    来讲一下C#中单例的实现方法吧。 什么是单例模式? 在软件开发中,单例模式是一种常见的设计模式。它保证一个类只有一个实例存在,并提供一个全局访问点。 单例模式应用的场景很多,比如线程池、数据库连接池等,这里不再赘述。接下来我们来看一下C#中单例的实现方法。 单例模式的实现思路 实现单例模式的关键点在于控制对象的创建过程,并且对外提供全局唯一的访问点。按照这个…

    C# 2023年6月6日
    00
  • 教你如何用C#制作文字转换成声音程序

    教你如何用C#制作文字转换成声音程序 前言 随着人工智能的发展,语音技术的应用越来越广泛,其中一项核心技术就是文字转语音。本文将教你如何用C#制作一个文字转语音程序。 准备工作 在开始编写代码之前,我们需要安装.NET框架(如果还未安装的话),推荐安装.NET Framework 4.0及以上版本。 下载地址:https://dotnet.microsoft…

    C# 2023年6月6日
    00
  • 使用Node.js实现ORM的一种思路详解(图文)

    使用Node.js实现ORM(对象关系映射)是一种常见的技术需求,它可以帮助开发者更好、更方便地操作数据库。下面将详细讲解一种使用Node.js实现ORM的思路。 什么是ORM? ORM(Object-Relational Mapping)即对象关系映射,是一种编程技术,用于将面向对象编程语言中的对象模型与关系型数据库中的数据模型相互映射。ORM可以通过一系…

    C# 2023年6月3日
    00
  • C#开发交互式命令行应用示例

    C#开发交互式命令行应用示例的攻略主要包括以下步骤: C#版本和IDE的选择 首先需要选择合适的C#版本和开发工具,建议使用最新的C#版本和Visual Studio或者Visual Studio Code作为开发工具。 创建控制台项目 打开Visual Studio,创建一个控制台项目。在项目中添加命令行交互组件。 定义命令行参数 在命令行中,参数通常用来…

    C# 2023年6月7日
    00
  • c#数组详解

    C#数组详解 什么是数组 数组是 C# 中最常用的一种数据结构,它可以用于存储同一种数据类型的多个元素。数组中的元素可以通过数组下标进行访问,下标从 0 开始计数。 数组定义和初始化 下面是定义和初始化一个数组的语法: 数据类型[] 数组名 = new 数据类型[数组长度]; 其中,数组类型可以为整型、字符型、浮点型、对象型(即自定义类)等。数组长度为整型数…

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