有趣的HTML实例(十三) 咖啡选择(css+js)

news2024/10/2 1:37:03

一个人追求目标的路途是孤单的,一个人独品辛酸的时候是寂寥的,一个人马不停蹄的追赶着,狂奔着,相信前方是一片光明,我从不放弃希望,就像我对生活的信念,没有人可以动摇。

——《北京青年》


目录

一、前言

二、往期作品回顾

三、作品介绍

四、本期代码介绍

五、效果显示 

六、编码实现

index.html

style.css 

script.js

 七、获取源码

公众号获取源码 

获取源码?私信?关注?点赞?收藏?


一、前言

        在我们的 html 学习过程中,会用到并见识到各种各样的实例,以及各种插件,并且有些 web 网页中的小插件又非常的吸引眼球,提升 web 网页的层次,显得非常好看并且非常使用。在本系列中,我将持续为大家更新有趣且使用的 html 实例,放在 web 网页中,凸显效果。

        特点一:都是符合学校或者学生考试期末作业的水平,都是最基础的简单的 html 样例,提升web网页整理效果,都是 div+css 框架原创代码写的,内容包括 js / css,也包含 视频+音乐+flash 等元素的插入…

        特点二:内容包括多种丰富类型,例如: 倒计时,404页面,Blog顶置卡片设计 (css+js),To-Do-List设计 (css+js),火柴盒动画 (css),日历便签设计 (css+js),搜索框设计 (css+js),卡片式图片展示 (css+js),咖啡选择 (css+js)……

     

          可满足多种需求,欢迎大家下载!

 


二、往期作品回顾

有趣的HTML实例(一) 倒计时_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(二) 404页面_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(三) 加载页面动画_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(四) 旋转菜单_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(五) 加载页面动画Ⅱ(css)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(六) 卡片翻转时钟_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(七) 注册登录界面Ⅱ(css+js)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(八) 一个很有趣的动态背景(css+js)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(九) 文本变形动画(css+js)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(十) 悬停时有旋转效果的图标_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(十一) 烟花特效(css+js)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(十二) 早安、晚安动画(css+js)_Enovo_飞鱼的博客-CSDN博客


三、作品介绍

        1.作品简介 :HTML响应式布局网站源码!兼容 pc 以及移动端,内涵 js 交互,ui 交互。直接点击即可查看效果!

        2.作品编辑:个人主页网页设计题材,代码为 html+css 布局制作,作品下载后可使用任意HTML编辑软件(例如:DW、HBuilder、Vscode 、Sublime  所有编辑器均可使用)。

        3.作品技术:使用DIV+CSS制作了网页背景图、鼠标经过及选中导航变色效果、下划线等。


四、本期代码介绍

一款简单的 HTML+ CSS+JS  咖啡选择(css+js)  实例

1、HTML

2、CSS

3、JS

4、舒适的画面感

5、咖啡

6、各种不同类型咖啡点击效果

 可通用多种不同情景,放置在web网页上,可以作为跳转页面之后使用


五、效果显示 

可使用在多种情景下,提升层次轮廓效果、美化界面、自定义文字修改——>

根据需求修改


六、编码实现


显示完整代码

注意路径(⊙o⊙)?

o(* ̄▽ ̄*)ブ 

index.html

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>咖啡</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel="stylesheet" href="./style.css">

</head>
<body>
<!-- partial:index.partial.html -->
<!-- <a href="https://twitter.com/rominamartinlib" target="_blank">
  <svg viewBox="328 355 335 276" xmlns="http://www.w3.org/2000/svg">
    <path d="
    M 630, 425
    A 195, 195 0 0 1 331, 600
    A 142, 142 0 0 0 428, 570
    A  70,  70 0 0 1 370, 523
    A  70,  70 0 0 0 401, 521
    A  70,  70 0 0 1 344, 455
    A  70,  70 0 0 0 372, 460
    A  70,  70 0 0 1 354, 370
    A 195, 195 0 0 0 495, 442
    A  67,  67 0 0 1 611, 380
    A 117, 117 0 0 0 654, 363
    A  65,  65 0 0 1 623, 401
    A 117, 117 0 0 0 662, 390
    A  65,  65 0 0 1 630, 425
    Z" style="fill:#3BA9EE;" />
  </svg>
</a> -->
<div class="options">
  <button id="americano">Americano</button>
  <button id="au_lait">Au lait</button>
  <button id="capuccino">Capuccino</button>
  <button id="corretto">Corretto</button>
  <button id="espresso">Espresso</button>
  <button id="latte">Latte</button>
  <button id="lungo">Lungo</button>
  <button id="macchiato">Macchiato</button>
  <button id="mocha">Mocha</button>
  <button id="ristretto">Ristretto</button>
</div>
<div class="container">
  <h1 class="coffee_name">Choose your coffee</h1>
  <div class="cup">
    <div class="filling reset">
      <div class="coffee">Coffee</div>
      <div class="water">Water</div>
      <div class="liquor">Liquor</div>
      <div class="milk">Milk</div>
      <div class="whipped_cream">Whipped cream</div>
      <div class="milk_foam">Milk foam</div>
      <div class="steamed_milk">Steamed milk</div>
      <div class="chocolate">Chocolate</div>
    </div>
    <div class="plate"></div>
  </div>
</div>
<!-- partial -->
  <script  src="./script.js"></script>

</body>
</html>

style.css 

:root {
    --main-bg-color: #d6b9a4;
    --cup-color: #474747;
    --cup-width: 30vw;
    --cup-height: 24vw;
    --cup-handle-width: 5vw;
    --cup-handle-height: calc(2 * var(--cup-handle-width));
    --cup-border-width: 2vw;
    --cup-inside-width: calc(var(--cup-width) - var(--cup-border-width));
    --cup-inside-height: calc(var(--cup-height) - var(--cup-border-width));
    --border-width: 1vw;
    --main-border: var(--border-width) solid var(--cup-color);
    --plate-width: 25vw;
    --plate-height: 2vw;
    --coffee-bottom: 80%;
    --water-bottom: 0;
    --milk-bottom: 0;
    --liquor-bottom: 0;
    --whipped_cream-bottom: 0;
    --steamed_milk-bottom: 0;
    --milk_foam-bottom: 0;
    --chocolate-bottom: 0;
    --coffee-color: #3c302f;
    --water-color: #b1dce2;
    --milk-color: #f0ebe5;
    --liquor-color: #fc8626;
    --whipped_cream-color: #fceecb;
    --milk_foam-color: #fceecb;
    --steamed_milk-color: #ffd7b3;
    --chocolate-color: #391e09;
  }
  
  body {
    height: 100vh;
    width: 100vw;
    background: var(--main-bg-color);
    display: flex;
    justify-content: space-evenly;
    align-items: center;
    margin: auto;
    overflow: hidden;
  }
  
  a {
    position: absolute;
    top: 10px;
    left: 10px;
  }
  
  svg {
    height: 1.5rem;
  }
  
  .container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 70vw;
  }
  
  .coffee_name {
    color: #f1faee;
    text-align: center;
    /*   width: 100%; */
    font-size: 4vw;
  }
  
  .options {
    display: grid;
    grid-gap: 1vh;
    grid-template-rows: repeat(10, 35px);
    grid-template-columns: 120px;
    justify-content: space-evenly;
    box-sizing: border-box;
  }
  
  .options button {
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    background: rgba(214, 217, 227, 0.6);
    outline: none;
    font-size: 1rem;
    border: 2px solid #a67a60;
    box-shadow: none;
    color: #363636;
    box-sizing: border-box;
    border-radius: 1vh;
  }
  
  .options button:hover {
    cursor: pointer;
    border-width: 4px;
    background: rgba(255, 255, 255, 0.6);
  }
  .options .selected {
    border-width: 4px;
    background: rgba(255, 255, 255, 0.8);
    box-sizing: border-box;
  }
  
  .cup {
    width: var(--cup-width);
    height: var(--cup-height);
    border-radius: 0 0 10vw 10vw;
    position: relative;
    background-color: var(--cup-color);
    z-index: 10;
    box-sizing: border-box;
  }
  
  .cup::after {
    content: "";
    position: absolute;
    top: 10%;
    left: calc(100% - 1vw);
    width: var(--cup-handle-width);
    height: var(--cup-handle-height);
    border: var(--main-border);
    border-radius: 50% 30%;
  }
  
  .plate {
    position: absolute;
    top: calc(100% + 1vw);
    left: calc((var(--cup-width) - var(--plate-width)) / 2);
    width: var(--plate-width);
    background: var(--cup-color);
    height: var(--plate-height);
    border-radius: 1vw;
  }
  
  .filling {
    position: absolute;
    left: calc(var(--cup-border-width) / 2);
    bottom: calc(var(--cup-border-width) / 2);
    width: var(--cup-inside-width);
    height: var(--cup-inside-height);
    overflow: hidden;
    border-radius: 0 0 10vw 10vw;
    background-color: var(--main-bg-color);
    bottom: 1vw;
  }
  
  .filling div {
    position: absolute;
    width: 100%;
    transition: all 1s linear;
    color: #817f75;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    height: 0;
    overflow: hidden;
    font-size: 3vw;
    height: 100%;
    bottom: -100%;
    box-sizing: border-box;
  }
  
  .filling.reset.americano {
    --water-bottom: 0;
    --coffee-bottom: -60%;
  }
  .filling.reset.au_lait {
    --coffee-bottom: -50%;
    --milk-bottom: 0%;
  }
  .filling.reset.capuccino {
    --coffee-bottom: -65%;
    --steamed_milk-bottom: -35%;
    --milk_foam-bottom: 0;
  }
  .filling.reset.espresso {
    --coffee-bottom: -60%;
  }
  .filling.reset.latte {
    --coffee-bottom: -60%;
    --steamed_milk-bottom: -20%;
    --milk_foam-bottom: 0%;
  }
  .filling.reset.corretto {
    --coffee-bottom: -45%;
    --liquor-bottom: -25%;
  }
  .filling.reset.lungo {
    --water-bottom: 0;
    --coffee-bottom: -50%;
  }
  .filling.reset.macchiato {
    --coffee-bottom: -70%;
    --milk_foam-bottom: 0;
  }
  .filling.reset.mocha {
    --coffee-bottom: -60%;
    --chocolate-bottom: -40%;
    --steamed_milk-bottom: -20%;
    --whipped_cream-bottom: 0%;
  }
  .filling.reset.ristretto {
    --coffee-bottom: -80%;
  }
  
  div.chocolate {
    background: var(--chocolate-color);
    bottom: var(--chocolate-bottom);
    z-index: 6;
  }
  div.coffee {
    background: var(--coffee-color);
    bottom: var(--coffee-bottom);
    line-height: 4vw;
    z-index: 7;
  }
  div.liquor {
    background: var(--liquor-color);
    bottom: var(--liquor-bottom);
    z-index: 4;
  }
  div.milk {
    background: var(--milk-color);
    bottom: var(--milk-bottom);
    z-index: 2;
  }
  div.milk_foam {
    background: var(--milk_foam-color);
    bottom: var(--milk_foam-bottom);
    z-index: 5;
  }
  
  div.steamed_milk {
    background: var(--steamed_milk-color);
    bottom: var(--steamed_milk-bottom);
    z-index: 6;
  }
  div.water {
    background: var(--water-color);
    bottom: var(--water-bottom);
  }
  div.whipped_cream {
    background: var(--whipped_cream-color);
    bottom: var(--whipped_cream-bottom);
    z-index: 4;
  }
  
  .filling.reset {
    --coffee-bottom: -100%;
    --water-bottom: -100%;
    --milk-bottom: -100%;
    --liquor-bottom: -100%;
    --whipped_cream-bottom: -100%;
    --steamed_milk-bottom: -100%;
    --milk_foam-bottom: -100%;
    --chocolate-bottom: -100%;
  }

script.js



const coffee_name = document.querySelector(".coffee_name");
const coffee_filling = document.querySelector(".filling");
const buttons = document.querySelectorAll("button");
let current_element = null;

const changeCoffeeType = (selected) => {
  if (current_element) {
    current_element.classList.remove("selected");
    coffee_filling.classList.remove(current_element.id);
  }
  current_element = selected;
  coffee_filling.classList.add(current_element.id);
  current_element.classList.add("selected");
  coffee_name.innerText = selected.innerText;
};

const setActiveType = (element) => {
  element.toggleClass("selected");
};

[...buttons].forEach((button) => {
  button.addEventListener("click", () => {
    changeCoffeeType(button);
  });
});

 七、获取源码

老规矩,先给朋友们看一下完整文件夹,

正确的文件如下图 ,复制源码的朋友们请注意了!!!

公众号获取源码 

第一步,通过微信公众号下载源码压缩包,解压并打开文件夹,即为上图样式(复制源码请注意路径及文件名)

第二步,点击 html 文件 打开即可查看


2023年第二十三期,希望得到大家的喜欢🙇‍

也是新的系列,将会持续更新,🙇‍

希望大家有好的意见或者建议,欢迎私信


以上就是本篇文章的全部内容了

 ~ 关注我,点赞博文~ 每天带你涨知识!

1.看到这里了就 [点赞+好评+收藏] 三连 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我 ~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、C++、数据结构、Python程序设计、Java程序设计、爬虫等! 「在这里有好多 开发者,一起探讨 前端 开发 知识,互相学习」!

3.以上内容技术相关问题可以相互学习,可 关 注 ↓公 Z 号 获取更多源码 !
 

获取源码?私信?关注?点赞?收藏?

👍+✏️+⭐️+🙇‍

有需要源码的小伙伴可以 关注下方微信公众号 " Enovo开发工厂 ",回复 关键词 " a-coffee "

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt扫盲- QLocalSocket类

QLocalSocket类总结一、概述二、使用一、概述 QLocalSocket类是一个比较特殊的传输数据的的一个工具类&#xff0c;它和 QTcpSocket 的区别就是&#xff0c;这个QLocalServer 只是在connectToServer 的时候连接主机是用的一个字符串或者标识符来表示主机&#xff0c;而QTcpSoc…

基于模型预测控制(MPC)的悬架系统仿真分析

目录 前言 1.悬架系统 2.基于MPC的悬架系统仿真分析 2.1 simulink模型 2.2仿真结果 2.3 结论 3 总结 前言 模型预测控制是无人驾驶中较为热门的控制算法&#xff0c;但是对于悬架等这类系统的控制同样适用。 我们知道模型预测控制主要可以划分为三个部分&#xff1a; …

ForkJoinPool原理

1、概述 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架。ForkJoinPool是Java中提供了一个线程池&#xff0c;特点是用来执行分治任务。主题思想是将大任务分解为小任务&#xff0c;然后继续将小任务分解&#xff0c;直至能够直接解决为止&#xff0c;然后再依次将任…

再谈Java的String字符串

我们先看下面几个常见的面试题&#xff1a; String s1 "abc";String s2 new String("abc");String s3 "a" "b" "c";String s4 s2.intern();System.out.printf("s1s2:%s\n", s1 s2);System.out.printf(&quo…

IOS安全区域适配

对于 iPhone 8 和以往的 iPhone&#xff0c;由于屏幕规规整整的矩形&#xff0c;安全区就是整块屏幕。但自从苹果手机 iphoneX 发布之后&#xff0c;前端人员在开发移动端Web页面时&#xff0c;得多注意一个对 IOS 所谓安全区域范围的适配。这其实说白了就是 iphoneX 之后的苹果…

Django图书商场购物系统python毕业设计项目推荐

mysql数据库进行开发&#xff0c;实现了首页、个人中心、用户管理、卖家管理、图书类型管理、图书信息管理、订单管理、系统管理等内容进行管理&#xff0c;本系统具有良好的兼容性和适应性&#xff0c;为用户提供更多的网上图书商城信息&#xff0c;也提供了良好的平台&#x…

【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)

文章目录前言一、安全威胁分析二、主要风险项三、Android测试思维导图四、反编译工具五、Android客户端漏洞一、Jnaus漏洞漏洞二、数据备份配置风险漏洞漏洞三、Activity组件泄露漏洞漏洞四、BroadcastReceiver组件泄露漏洞漏洞五、允许模拟器Root环境登录漏洞漏洞六、未识别代…

LeetCode 刷题之 BFS 广度优先搜索【Python实现】

1. BFS 算法框架 BFS&#xff1a;用来搜索 最短路径 比较合适&#xff0c;如&#xff1a;求二叉树最小深度、最少步数、最少交换次数&#xff0c;一般与 队列 搭配使用&#xff0c;空间复杂度比 DFS 大很多DFS&#xff1a;适合搜索全部的解&#xff0c;如&#xff1a;寻找最短…

C++类和对象补充

目录 前言&#xff1a; 1. 构造函数->初始化列表 1.1 初始化列表出现原因 1.2 初始化列表写法 2. explicit关键字 2.1 explict的出现 2.2 explict的写法 3. static成员 4. 友元 4.1 友元函数 4.2 友元类 5. 内部类和匿名对象 5.1 内部类 5.2 匿名对象 前言&a…

python|第五章考试题及练习题

本篇文章是对北京理工大学嵩天老师的《Python语言程序设计》第五章考试题及练习题的学习记录。 一、考试题 1、随机密码生成 问题描述&#xff1a; 描述 补充编程模板中代码&#xff0c;完成如下功能&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪…

Altium Designer 18中原理图DRC编译和PCB DRC检查-AD DRC

一、原理图编译 原理图检查的主要内容有&#xff1a; 1、元件位号冲突。也即多个元件编号相同&#xff0c;例如两个电容在原理图中都被命名为C2&#xff0c;显然肯定是无法生成PCB的。 2、网络悬浮。也即网络标号没有附着在电气走线上&#xff0c;一般这种是人操作失误&…

【Azure 架构师学习笔记】-Azure Logic Apps(7)- 自定义Logic Apps 调度

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 接上文【Azure 架构师学习笔记】-Azure Logic Apps&#xff08;6&#xff09;- Logic Apps调用ADF 前言 在稍微了解Logic Apps的使用之后&#xff0c;需要开始考虑如何调度起来。在Logic Apps里面…

ChatGPT会让6个低端岗位失业

​我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 其实最近我们也是研究探索ChatGPT的商业应用方向&#xff1a;比如账号买卖、卖文章、论文、脚本文案、卖使用次数和时长、OEM系统等等。 目前来看&#xff0c;ChatGPT会让一部分低端的岗位失业&…

GEE学习笔记 七十八:干涸的洪泽湖

今天看了一篇报道直击60年一遇气象干旱&#xff1a;洪泽湖缩小近一半&#xff0c;鱼蟹受灾严重&#xff01;_新华报业网&#xff08;直击60年一遇气象干旱&#xff1a;洪泽湖缩小近一半&#xff0c;鱼蟹受灾严重&#xff01;&#xff09;&#xff0c;既然玩GEE那就要玩出点花样…

图学习——03预备知识

本章我们介绍关于图的基础知识&#xff0c;包括图的定义、类型和性质、图谱理论、图的傅里叶分析等。在之后介绍图神经网络会基于这些基础知识展开&#xff0c; 想要简单运用图神经网络&#xff0c;这部分知识可以不用学。想要系统的理解图神经网络的来源和本质&#xff0c;这…

2019蓝桥杯真题年号字串(填空题) C语言/C++

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明用字母 A 对应数字 11&#xff0c;B 对应 2&#xff0c;以此类推&#xff0c;用 Z 对应 26。对于 27 以上的数字&#xff0c;小明用两位或更长位的字符串来对应&…

在Windows10上安装虚拟机---VMware 17 Pro下载与安装

在Windows10上安装虚拟机---VMware下载与安装0 前言1 下载VMware 17 pro2 安装VMware 17 Pro3. 打开Vmware0 前言 电脑原生系统&#xff1a;Windows10虚拟机软件&#xff1a;VMware 17 pro准备好安装虚拟机的文件夹路径 1 下载VMware 17 pro 下载网址&#xff1a;VMware 官网…

采用工时表软件能为企业员工带来哪些好处

如今社会人力成本一直在攀升&#xff0c;企业对提升人员工作饱和度和有效分配和利用人力资源非常在意&#xff0c;而工时表软件是现代被广泛应用于各行业领域&#xff0c;用来解决项目及非项目上的人员时效管理问题的手段之一。 企业员工工时管理不一定是一件麻烦事。采用像8M…

12.centos7部署sonarqube9.6

12.centos7部署sonarqube9.6环境&#xff1a;sonarqube9.6Postgresql13JDK11sonarqube9.6下载地址&#xff1a;Postgresql13 rpm下载地址&#xff1a;JDK11下载地址&#xff1a;准备工作&#xff1a;修改文件句柄数&#xff08;最大文件数&#xff09;和用户最大进程数限制修改…

图扑数字孪生智慧机场,助推民航“四型机场“建设

前言 民航局印发的《智慧民航建设路线图》文件中&#xff0c;明确提出智慧机场是智慧民航的四个核心抓手之一。并从机场全域协同运行、作业与服务智能化、智慧建造与运维方面&#xff0c;为智慧机场的发展绘制了清晰的蓝图。 效果展示 图扑软件应用自主研发核心产品 HT for …