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日

相关文章

  • Unity实现角色受击身体边缘发光特效

    实现角色受击身体边缘发光特效,需要用到Shader和Unity中的Particles系统。 以下是具体实现步骤: 1. 创建Shader 首先,在Unity中创建一个新Shader文件,并将它命名为“EdgeGlow”。打开该文件,添加以下代码: Shader "Custom/EdgeGlow" { Properties { _TintC…

    C# 2023年6月3日
    00
  • C#9.0推出的4个新特性介绍

    下面会详细解释C# 9.0推出的4个新特性。 1. 初始化设置 初始化设置是指在声明变量时就对其进行初始化的语法糖。在C# 9.0之前,如果需要在创建类实例时初始化一些属性,需要写出完整的构造函数并在代码中进行调用。而在C# 9.0中,我们可以通过以下语法糖来完成同样的操作: var person = new Person { FirstName = &qu…

    C# 2023年5月31日
    00
  • .Net Core微服务rpc框架GRPC通信基础

    下面是详细的“.Net Core微服务rpc框架GRPC通信基础”的完整攻略,包括框架介绍、使用方法以及两条示例说明。 一、什么是GRPC? GRPC是Google开源的跨语言高性能的RPC(Remote Procedure Call,远程过程调用)框架。它使用Protocol Buffers作为数据序列化方式,支持多种语言的实现。 GRPC可以让你像调用本…

    C# 2023年6月3日
    00
  • C#实现中文日历Calendar

    下面是 “C#实现中文日历Calendar”的完整攻略: 1. 前言 C#实现中文日历Calendar,需要使用到System.Globalization命名空间中的Calendar类,具体实现步骤如下。 2. 实现步骤 2.1 创建Calendar对象 首先,我们需要创建一个Calendar对象,代码如下: CultureInfo cultureInfo …

    C# 2023年6月1日
    00
  • Kubernetes(K8S)基础知识

    Kubernetes(K8S)基础知识 Kubernetes是一种开源的容器编排平台,可以简化部署、扩展和管理容器化应用程序。在Kubernetes中,可以创建一个包含多个容器的集群,通过Kubernetes控制器自动对其进行维护和扩展。 基本概念 节点(Node):Kubernetes集群中的物理或虚拟机器,可以运行容器。 Pod:Kubernetes中的…

    C# 2023年5月31日
    00
  • asp.net(c#)下读取word文档的方法小结

    下面我将给出一个“asp.net(c#)下读取word文档的方法小结”的完整攻略,包含以下内容: 1. 了解Word文档的内部结构 要读取Word文档,首先需要了解Word文档的内部结构。当我们打开一个Word文档时,它实际上是一个包含许多不同元素(如段落、表格、图像等)的复合文档。Word文档的内部结构保存在其二进制格式(.doc)或OpenXML格式(.…

    C# 2023年6月1日
    00
  • c#中oracle的to_date函数使用方法

    讲解C#中Oracle的to_date函数使用方法需要以下过程: 第一步:了解to_date函数 在Oracle中,to_date函数是用来将字符串转化为日期类型的函数。它的常用语法如下: to_date(‘日期字符串’, ‘日期格式化字符串’) 其中,日期字符串是要转化的字符串,日期格式化字符串则表示日期字符串的表现形式,例如’yyyy-mm-dd’。 在…

    C# 2023年6月1日
    00
  • C#实现进制转换

    C#实现进制转换的完整攻略 在C#中,要实现进制转换可以使用Convert类提供的方法,主要有以下三个: ToInt32:将指定的字符串转换为32位带符号整数。 ToString:将指定的数字转换为字符串。 Parse:将字符串表示形式转换为等效的数字表示形式。 十进制转二进制 定义一个十进制数 int number = 123; 将其转换为二进制数 str…

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