首页 > 其他分享 >「CSS畅想」技术传递乐趣,好友想玩游戏机,我为她画了一个套圈水机

「CSS畅想」技术传递乐趣,好友想玩游戏机,我为她画了一个套圈水机

时间:2022-11-02 22:02:57浏览次数:79  
标签:水机 游戏机 60px f7bf66 圈圈 套圈 75px CSS 90px


灵感来源

和好友闲聊,聊到上次我画的掌上游戏机,她说突然想起来还有一种游戏机是那种可以套圈圈的。我也想起来,确实有一种游戏机,但是记不清确认的名字,所以我去搜索了一下,原来它叫水压套圈游戏机,网购平台上大部分简称套圈水机。

好友说,这个你能实现不,我看了看说,圆头圆脑的小可爱我基本都能实现,不过不能玩,玩的话是另外的价钱。

在好友发飙之前,我还是先来用CSS绘制一个套圈水机转移一下她的注意力吧。

在线预览

​在线预览平台​​,可查看完整代码,并体验效果。



水机结构

水机包含游戏机身、机身图案、按键、透明屏幕、若干圈圈、两个竖针。

  • 游戏机身:圆弧外观,加上阴影效果,可以增加立体感;
  • 机身图案:因为是童年经典掌上游戏机,所以图案偏卡通;
  • 按键:一般是左右两个按键,十字按键和圆形按键;
  • 透明屏幕:
  • 屏幕透明的效果通过将屏幕颜色的透明度降低实现;
  • 立体效果,采用两次容器结构实现,两层容器使用不同颜色,上层容器加上一个外边框且比下层容器小;
  • 屏幕中的背景图案,为游戏机增加了一丝趣味;
  • 若干圈圈:圈圈都是通过圆形实现,圆外层加上边框,背景设置成透明;
  • 两个竖针:竖针和机体连接处,为了表现立体感,在圆形容器上增加了一个圆圈图案。

注:目前不支持玩套圈圈的游戏,因为实现起来会比较困难,涉及到计算。

趣味功能

实现过程中,有几个有趣的功能,跟大家分享一下。

心形马赛克

因为我是参考购物网站上的游戏机图片进行实现的,正好屏幕上的图案是一个马赛克的心形,像素做的特别细,我估计要实现它得写个两天。

于是,我转换了思维,把马赛克的像素放大,间隙也放大,这样实现起来就变的简单了。

怎么实现马赛克效果呢?首先它肯定是类似线条形状的,然后把线段的类型改成点状便可以了。但是一个个写肯定不现实,一个完整的心的形状,少说20+的像素点。突然想到,box-shadow属性可以设置一个或多个下拉阴影的框。只要位置设置合理,理论上是可以实现一个心的形状的。

线条形状的心形,一条线可以看做是一列,这一列的点的横坐标肯定是一致的。心形是两端段,中间长,这样一来就能实现一个完整的心形了。

.curtain-heart-box::before {
content: '';
position: absolute;
top: 0;
left: 14px;
width: 5px;
height: 5px;
box-shadow: /* 第1列 */ 30px 60px #f7bf66, 30px 75px #f7bf66, 30px 90px #f7bf66,
/* 第2列 */ 45px 50px #f7bf66, 45px 65px #f7bf66, 45px 80px #f7bf66, 45px 95px #f7bf66, 45px 110px #f7bf66,
/* 第3列 */ 60px 50px #f7bf66, 60px 65px #f7bf66, 60px 80px #f7bf66, 60px 95px #f7bf66, 60px 110px #f7bf66, 60px 125px #f7bf66,
/* 第4列 */ 75px 60px #f7bf66, 75px 75px #f7bf66, 75px 90px #f7bf66, 75px 105px #f7bf66, 75px 120px #f7bf66, 75px 135px #f7bf66,
/* 第5列 */ 90px 60px #f7bf66, 90px 75px #f7bf66, 90px 90px #f7bf66, 90px 105px #f7bf66, 90px 120px #f7bf66, 90px 135px #f7bf66, 90px 150px #f7bf66,
/* 第6列 */ 105px 60px #f7bf66, 105px 75px #f7bf66, 105px 90px #f7bf66, 105px 105px #f7bf66, 105px 120px #f7bf66, 105px 135px #f7bf66,
/* 第7列 */ 120px 50px #f7bf66, 120px 65px #f7bf66, 120px 80px #f7bf66, 120px 95px #f7bf66, 120px 110px #f7bf66, 120px 125px #f7bf66,
/* 第8列 */ 135px 50px #f7bf66, 135px 65px #f7bf66, 135px 80px #f7bf66, 135px 95px #f7bf66, 135px 110px #f7bf66,
/* 第9列 */ 150px 60px #f7bf66, 150px 75px #f7bf66, 150px 90px #f7bf66;
z-index: 30;
}


立体宝石

平面的宝石没有诱惑力,立体的宝石怎么实现呢?

可以通过直线塑造棱角的效果,再加上窄下宽的图形设计,且上下图形的颜色要不一致,这样一来,一个立体的宝石就实现了。

游戏机的右上角就有一个红色的方形宝石。

.masonry-right {
width: 26px;
height: 26px;
background: #f8403c;
top: 20px;
right: 85px;
overflow: hidden;
transform: rotate(-45deg);
}
.masonry-right::before {
content: '';
width: 2px;
height: 35px;
position: absolute;
top: -5px;
left: 11px;
background: #fc9783;
z-index: 298;
transform: rotate(-45deg);
}
.masonry-right::after {
content: '';
width: 2px;
height: 35px;
position: absolute;
top: -5px;
left: 13px;
background: #fc9783;
z-index: 298;
transform: rotate(45deg);
}
.masonry-right-light {
position: absolute;
top: 7px;
left: 7px;
width: 12px;
height: 12px;
background: #fc9783;
z-index: 299;
}

圈圈动效

圈圈移动的效果,是通过设置移动距离实现的,为了让不同的圈圈移动效果上不一致,所以某些圈圈设置了动画延时。

.screen-circle25 {
border-color: #ffb9c0;
bottom: 20px;
left: 215px;
animation: screenCircle25 5s infinite alternate ease-in-out;
animation-delay: 1.5s;
}
@keyframes screenCircle25 {
0% {
bottom: 20px;
}
50% {
bottom: 165px;
}
100% {
bottom: 20px;
}
}


最终UI

「CSS畅想」技术传递乐趣,好友想玩游戏机,我为她画了一个套圈水机_JavaScript

后续

好友说,这些运动中的圈圈,看着真解压,好像烦恼减少了。我说你烦恼减少不是因为这个,是因为你头发少,俗话「三千烦恼丝」,你都快秃了,哪来的烦恼。

好友说今天饭局都推了,待会去我家,测试我家杯子的把手是否牢固。

看来今天要赶在她来之前到家了。

又是充满乐趣的一天,下个小创意见吧~

标签:水机,游戏机,60px,f7bf66,圈圈,套圈,75px,CSS,90px
From: https://blog.51cto.com/u_15838863/5818388

相关文章

  • css 重置样式
    css重置样式在线地址有人可能会好奇,为什么不是其他的一些重置样式,非要记录这一篇样式,是因为在看京东网站的时候看到京东h5页面使用了这个样式,就好奇http://meyerweb.com/......
  • 依赖注入_非空断言,css使用v-bind
    provide依赖注入//provide和inject通常成对一起使用,使一个祖先组件作为其后代组件的依赖注入方,无论这个组件的层级有多深都可以注入成功,只要他们处于同一条组件链上。......
  • HTML5+CSS3
    思维导图网页的基本描述:<!DOCTYPEhtml><!--DOCTYPE:告诉浏览器,我们要使用什么规范--><htmllang="en"><!--head标签代表网页头部--><head><!--meta描述性标签......
  • CSS基础知识筑基
    01、CSS简介CSS指层叠样式表(CascadingStyleSheets),对HTML网页内容进行统一外观样式设计和管理,给网页进行各种装饰,让她变得美观,是HTML的化妆师。(Cascading:/kæsˈk......
  • css样式设计思路总结
    如何清除图片下方出现几像素的空白间隙?方法1:img{display:block;}方法2:img{vertical-align:top;}除了top值,还可以设置为text-top|middle|bottom|text-bottom......
  • css样式超出部分...
    .fui-list-inner.subtitle{position:relative;font-size:22rpx;color:#444;white-space:normal;//核心样式text-overflow:elli......
  • 653 Bootstrap_全局cSS样式_按钮&图片 amd 654 Bootstrap_全局cSS样式2_表格&表单
    CSS样式和JS插件Bootstrap_全局cSS样式_按钮&图片全局样式按钮:class="btnbtn-default"图片:1.class="img-responsive":图片在任意尺寸都占100%......
  • Javascript进阶笔记 - DOM操作CSS样式
    DOM操作CSS样式目录DOM操作CSS样式1.操作样式2.获取当前样式3.其它样式相关属性1.操作样式可以通过JS修改元素的内联样式语法:元素.style.样式名=样式值注意:......
  • html 和css的一些基础用法
    HTML多媒体嵌入,如图片,音视频:<imgsrc="图片路径"alt="未加载出来时显示的图片描述">图片source推荐放在网页同路径下images文件夹中,有利于Google搜索引擎优化SEO/索引HTML......
  • Vue项目配置postcss-pxtorem
    Vue2项目安装指定版本最新版本@6会报错:PostCSSpluginpostcss-pxtoremrequiresPostCSS8npmipostcss-pxtorem@5.1.1-D配置vue.config.jsmodule.exports=......