html超市代码,前端 CSS : 5# 纯 CSS 实现24小时超市

介绍

原文链接

感謝 comehope 大佬的 [前端每日实战]

效果预览

bVboWfc?w=865&h=518

源代码地址

代码解读

1. html 结构

命名规则使用了 BEM

常规样式初始化

* {

margin: 0;

padding: 0;

box-sizing: border-box;

}

body {

height: 100vh;

overflow: hidden;

}

2. 街道背景

街道背景分为两部分

深蓝色的天空

.street {

height: 100vh;

position: relative;

display: flex;

justify-content: center;

align-items: flex-end;

background-color: #0b2e4e;

overflow: hidden;

}

黑色的地面

.street::before {

content: "";

position: absolute;

bottom: 0;

left: 0;

right: 0;

width: 100%;

height: 25vh;

background-color: #000000;

}

3. 超市

超市, 首先创建一个长方形代表超市

.market {

position: relative;

display: flex;

width: 520px;

height: 270px;

background-color: #fffecc;

border: 4px solid #333333;

}

接着给超市增加 24 HOURS 的标识, 需要在 market 下增加一个 span 标签

24 hours

生意好的超市必然亮堂堂

.market {

box-shadow: 0 22px 110px 12px #f5efa1;

}

增大超市(正方形的上 border ), 用于存放标识

.market {

border-top-width: 50px;

}

将标识定位到上 border, 并给其添加发光样式

.market__name {

position: absolute;

top: -38px;

left: 20px;

font-family: sans-serif;

font-size: 1.4em;

letter-spacing: 0.4em;

color: #bdf8ff;

text-transform: uppercase;

text-shadow: 0px 0px 9px #95cfef;

}

再给该标识添加闪烁动画

.market__name {

animation: signboardFlashes 5s infinite alternate linear;

}

/* keyframes */

@keyframes signboardFlashes {

0% {

opacity: 1;

}

35% {

opacity: 1;

}

36% {

opacity: 0;

}

37% {

opacity: 1;

}

70% {

opacity: 1;

}

72% {

opacity: 0;

}

73% {

opacity: 1;

}

74% {

opacity: 0;

}

75% {

opacity: 1;

}

100% {

opacity: 1;

}

}

接着需要给超市增加 4 扇门, 并基于基础的样式

24 hours

.market__fold {

position: relative;

width: 25%;

border: 8px solid #000000;

}

/* 此处无法在 .market__fold 使用 inset 替代 */

.market__fold::before {

content: "";

position: absolute;

top: 0;

left: 0;

bottom: 0;

right: 0;

width: 100%;

height: 100%;

box-shadow: 0 0 2px 1px #f3f1d5;

}

门是感应门, 当有生物靠近才会打开, 所以打开的动画等一下完成

4. 月亮

在 market 中添加 moon

通过绝对定位将其移动到超市的上方, 并添加动画效果

.moon {

position: absolute;

top: -125px;

left: -50px;

width: 40px;

height: 40px;

background-color: #ffffc9;

border-radius: 50%;

box-shadow: 0 0 20px 1px #ffffc9;

animation: moonMoves 360s infinite alternate linear;

}

@keyframes moonMoves {

0% {

transform: translate(0, 0);

}

50% {

transform: translate(300px, -10px);

}

100% {

transform: translate(600px, 0);

}

}

5. 原地踏步的猫

在 market 添加 cat

首先给予一个轮廓方便观察

.cat {

--cat-color: red;

position: absolute;

left: -200px;

bottom: -24px;

width: 46px;

height: 30px;

margin: auto;

color: var(--cat-color);

background-color: var(--cat-color);

border-radius: 30px;

}

修改猫的 DOM 结构, 添加头, 尾巴, 四肢

然后依次给予其样式

首先是头部, 头部使用伪元素形成耳朵, 并添加头部晃动效果

.cat__head {

position: absolute;

right: -10px;

top: -8px;

width: 24px;

height: 24px;

background-color: inherit;

border-radius: 50%;

animation: catMovesHead 0.3s infinite linear;

}

.cat__head::before, .cat__head::after {

content: "";

position: absolute;

top: 0;

width: 10px;

height: 10px;

background-color: inherit;

border-radius: 2px;

}

.cat__head::before {

left: 2px;

transform: rotate(16deg);

}

.cat__head::after {

right: 2px;

transform: rotate(-16deg);

}

@keyframes catMovesHead {

0% {

transform: translateY(0);

}

50% {

transform: translateY(2px);

}

100% {

transform: translateY(0);

}

}

添加尾巴及动画效果(尾巴由椭圆形的一半构成)

.cat__tail {

position: absolute;

left: -18px;

top: -22px;

width: 30px;

height: 42px;

border-radius: 50%;

border: 7px solid var(--cat-color);

border-left-color: transparent;

border-bottom-color: transparent;

transform-origin: right;

animation: catMovesTail 0.3s infinite linear;

}

@keyframes catMovesTail {

0% {

transform: rotate(0);

}

50% {

transform: rotate(-3deg);

}

100% {

transform: rotate(0);

}

}

猫咪的四肢

.cat__leg {

position: absolute;

bottom: -12px;

width: 6px;

height: 20px;

background-color: inherit;

border-radius: 3px;

transform-origin: top;

}

将四肢分开和添加动画

.cat__leg--1, .cat__leg--2 {

left: 5px;

}

.cat__leg--3, .cat__leg--4 {

right: 5px;

}

.cat__leg--1, .cat__leg--3 {

transform: rotate(24deg);

animation: catMovesLegs 0.6s infinite linear;

}

.cat__leg--2, .cat__leg--4 {

transform: rotate(-24deg);

animation: catMovesLegs 0.6s infinite -0.3s linear;

}

@keyframes catMovesLegs {

0% {

transform: rotate(36deg);

}

50% {

transform: rotate(-36deg);

}

100% {

transform: rotate(36deg);

}

}

6. 猫过门开

给予猫一个整体的动画

.cat {

animation: catRuns 20s infinite linear;

}

@keyframes catRuns {

0% {

transform: translateX(0) rotateY(0);

}

70% {

transform: translateX(800px) rotateY(0);

}

71% {

transform: translateX(1000px) rotateY(180deg);

}

100% {

transform: translateX(0) rotateY(180deg);

}

}

修改超市门的 DOM 上的 class

再增加开关门的效果, 根据上方猫的花费时间进行计算, 取一样的时间更方便一些

.market__fold--left {

animation: doorMovesLeft 20s infinite linear;

}

.market__fold--right {

animation: doorMovesRight 20s infinite linear;

}

@keyframes doorMovesLeft {

0% {

transform: translateX(0);

}

28% {

transform: translateX(0);

}

30% {

transform: translateX(-90%);

}

54% {

transform: translateX(-90%);

}

56% {

transform: translateX(0);

}

83% {

transform: translateX(0);

}

85% {

transform: translateX(-90%);

}

97% {

transform: translateX(-90%);

}

99% {

transform: translateX(0);

}

100% {

transform: translateX(0);

}

}

@keyframes doorMovesRight {

0% {

transform: translateX(0);

}

28% {

transform: translateX(0);

}

30% {

transform: translateX(90%);

}

54% {

transform: translateX(90%);

}

56% {

transform: translateX(0);

}

83% {

transform: translateX(0);

}

85% {

transform: translateX(90%);

}

97% {

transform: translateX(90%);

}

99% {

transform: translateX(0);

}

100% {

transform: translateX(0);

}

}

最后就这样大功告成了

不过记得把猫的颜色改回来

/* 猫 */

.cat {

--cat-color: #000000;

}

7. 补充

最后切换为移动端时注意到 超市会横向占满, 通过 padding 设置一个空隙即可

.street {

padding: 0 6vw 115px;

}

感想

最近忙着学习 Koa, 结果 CSS 感觉忘得差不多了,唉

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

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

相关文章

继续努力奋斗,生活会更美好

回想起2010年,有点留恋,又有点让我伤感。 在北京这么长时间了,也该有段难忘的事啊! 人们都说现时很残酷,才发现我的感觉是错的。现时让我很无奈。 现在不是以前。要做现在的自己。 做自己所想的,想自己所做…

送30块树莓派PICO 开发板!

大家好,今天是周日,给大家搞个小抽奖,送30块。嵌入式猛男必备,学嵌入式看『我要学嵌入式』,知识持久有力。点击关注,回复【1031】参与抽奖,免费送 10块 树莓派最新PICO开发板。学C语言看『写代码…

会考计算机考试vb知识点,高中会考计算机vb知识点.doc

学 海 无 涯PAGEPAGE 1一、知识点1.对象、属性、类、事件和事件处理的概念(1)对象是客观存在的事物或概念。它有两个特点:状态和行为。(2)一个对象的状态是通过若干个属性(property)来描述的;行为是指对属性进行操作和处理的方法(method)。在…

[转]过度情绪化心智模式的10大特征——看看你有几个?

1. 或者完胜或者完败的思考方式:这样考虑问题的人只用黑和白两种颜色来划分一切。如果某件事不是很完美,那他就认为这件事是彻底的失败。2. 过度概括:这时一个人会使用“总是”、“从来也不能”等字眼,并将一个单独的事件看作是一…

嘉立创又搞大事情了,与你我相关!

你们一定不知道嘉立创最近又悄咪咪的做了一件大事儿,硬创社硬件项目共享平台上线公测啦,这是一个帮助电子工程师实现技术变现的平台,平台刚刚上线公测,前期还在邀请电子工程师填充内容阶段,即日起平台每上传一个项目就…

c html联调,JS与native 交互简单应用

JS与native 交互简单应用一、objectiveC 语法简介二、简易项目浏览器搭建新建项目步骤:1>DraggedImage.png2>2222.png3>33333.png4>4444.png建立一个小的浏览器即webview关键代码如下:// context 上下文也可以在此处获取,开始加载…

基于Extjs的OPOA

基于ExtJs的opoa系统 OPOA是one page ,one application的简称,即单页系统,也就是说一个系统只有一个页面。就是要求所有其他的页面都以插件的形式在主页里显示,点击主页的一个菜单或链接按钮,调用一个模块的插件。插件在主页里以t…

写给我弟

我堂弟今年24岁,也是我最小的一个堂弟,我想给他说点事,想告诉他一些东西,但是也担心自己所说的,并不能让他认同和接受。我心里一定是有我弟的,也是装着我弟的,所以我弟的事情,我自己…

Chrome插件(扩展)

【干货】Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处。本文所有涉及到的大部分代码均在这个demo里面:https://github.com…

计算机科学与技术 天涯,计算机科学与技术专业

计算机科学与技术专业业务培养目标:本专业培养具有良好的科学素养,系统地、较好地掌握计算机科学与技术包括计算机硬件、软件与应用的基本理论、基本知识和基本技能与方法,能在科研部门、教育单位、企业、事业、技术和行政管理部门等单位从事…

Apache OpenJPA 2.1.0 发布

OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。OpenJPA 可以作为独立的持久…

手把手带你写一个中断输入设备驱动

今天群里有人问,要开始驱动开发的话从什么开始比较好。我说,应该开始去摸索触摸屏驱动,现在我想了下,触摸屏驱动可能会难了些,但是从一个GPIO开始,我觉得一定是一件很容易的事情。所以这篇文章就来了。大家…

配置sudo访问

具体操作步骤 1.首先我们建立一个账户,设置密码 [rootVM_0_13_centos home]# useradd 123 [rootVM_0_13_centos home]# passwd 123 Changing password for user better407. New password: BAD PASSWORD: it is WAY too short BAD PASSWORD: is too simple Retype n…

读取Xml文档的元素和属性

<?xml version"1.0" encoding"utf-8" ?><StuInfo> <student> <ID>1001</ID> <Name>张三</Name> <Sex>男</Sex> <Birthday age"23">1987-1-12</Birthday> &l…

计算机专业需要注意什么细节,计算机专业考生复试注意事项

计算机专业考生复试注意事项随着计算机相关技术的突飞猛进&#xff0c;对人才的职业发展也提出了更高的要求。近年来&#xff0c;计算机及相关专业一直是研究生报考的热门专业&#xff0c;复试中的竞争日益激烈。如何在复试中脱颖而出呢?导师通常看重学生的那些能力?下面就计…

驱动调试神器printk你掌握了吗?

[导读] 刚刚开始做Linux相关开发工作时&#xff0c;深感Linux内核代码庞大&#xff0c;要加些自己的驱动进内核代码树&#xff0c;常常深陷bug的泥沼难以自拔&#xff0c;今天来分享一下内核调试利器printk的使用心得。前面一段时间很忙&#xff0c;后期更文频率会渐渐回归正常…

腾讯云技术专家卢萌凯手把手教你Demo一个人脸识别程序!

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文来自腾讯云技术沙龙&#xff0c;本次沙龙主题为Serverless架构开发与SCF部署实践 卢萌凯&#xff1a;毕业于东南大学&#xff0c;曾就职于华为&#xff0c;熟悉云行业解决方案。目前负责腾讯云中间件产…

计算机硬件知识考证题,计算机硬件知识题(答案)资料

信息技术过关考试题库(“计算机基础知识”部分)1、计算机的核心部件中央处理器的简称是________。CA 主机B 存储器C CPUD 输入设备2、世界上第一台电子计算机诞生于_____________。AA 1946年B 1950年C 1949年D 1941年3、下列全部是硬件的选项是______。AA 键盘、显示器B Window…

活动目录排错笔记

经过几年的网络管理工作&#xff0c;总结了一些关于AD的排错经验现在拿出来同大家分享&#xff0c;其中一些说明抄了微软的KB在这里说明一下&#xff0c;排错笔记有些地方可能写的不是很全&#xff0c;看不明白的地方大家可以GOOGLE一下&#xff0c;不对的地方也请大家提出 活…

CCF 201712-3 Crontab

本地AC&#xff0c;CCF编译失败。 通过对每条任务进行处理&#xff0c;将可能的月&#xff0c;日处理出来&#xff0c;并且比对对应星期是否符合要求。再对时分进行处理&#xff0c;判断整体时间在所给区域内。 思路借鉴自https://blog.csdn.net/gl486546/article/details/7905…