整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

鸿蒙os不过如此,css仿一个~

鸿蒙os不过如此,css仿一个~


遥领先~

可以点击查看运行效果,虽然适配了手机屏幕,但是动画效果还是火狐浏览器最流畅

前言

最近在看到一位大佬用CSS写了鸿蒙OS的开机动画,不过只是字母O的出场特效,看完觉得挺有意思,就想着能不能把整个动画效果给实现出来,说干就干,也不管能不能实现,拿起键盘就是一顿敲……

当然了,开始敲之前肯定是先在网上搜一波,看有没有现成的,如果有人已经写了并且还原度很高,那我直接copy过来看一下不就得了, 还敲个锤子……

然后我网上搜到的答案只有这两个:

  • 纯css实现华为鸿蒙开机动画:这个是css实现的,但是最终效果差了点意思,只是做了个大概,与预期有点差距
  • codepen:这个是codepen上搜到的,看着还原度更高了一点,有了聚光灯模糊渐变的效果,但是用的是canvas

最后就是不想搞这么麻烦,只想用css一把梭,能用css实现的动效,我就不想用js……

分析动画

仔细看了好几遍鸿蒙OS的开机动画,大致分成以下几个阶段:

  1. 字母O的睁眼效果,直接把上面大佬写的copy下来
  2. HarmonyOS 除了O之外的其他字母显现,并且整体缩小向左平移
  3. 平移的同时会有一个聚光灯效果,像一个手电筒照亮在O上面,然后扩散至全部字母显现
  4. 字母O下方的下划线动效

开敲

屏幕兼容问题

首先需要考虑的一个问题是兼容,当然这里说的不是兼容IE……只是需要简单兼容一下不同屏幕大小的显示,确保在PC和手机上能正常显示

简单用媒体查询rem布局写了一下不同分辨率屏幕下的显示大小,主要为了自己方便计算,这里贴一下代码,不做太多解释了,不熟悉的可以去了解一下rem布局的原理

html {
    font-size: 10px;
}

@media screen and (max-width: 767px) {
    html {
        font-size: 6px;
    }
}

@media screen and (min-width: 768px) and (max-width: 1023px) {
    html {
        font-size: 8px;
    }
}

@media screen and (min-width: 1024px) and (max-width: 1199px) {
    html {
        font-size: 10px;
    }
}

@media screen and (min-width: 1200px) {
    html {
        font-size: 12px;
    }
}

字母O的睁眼动画就不做解释了,直接去看原文,我在此基础上做了修改

HarmonyOS 除了O之外的其他字母显现,并且整体缩小向左平移

html结构如下,做了一些修改

<div class="container">
    <span class="delay">Harmony</span>
    <div class="letter">
        <ul class="ul">
            <li class="harmony"></li>
        </ul>
        <ul class="ul">
            <li class="harmony"></li>
        </ul>
        <svg>
            <filter id="blur">
                <feGaussianBlur in="SourceGraphic" stdDeviation="0 6" />
            </filter>
        </svg>
    </div>
    <span class="delay">S</span>
</div>

除了O之外其他字母显现这个很容易,用opacity就可以实现,等2秒是让字母O动画结束后执行,加这个动画的目的主要是先让字母O执行完动画,配合聚光灯效果

.delay{
    opacity: 0;
    animation: fade_in 2s 0.5s forwards;
}

@keyframes fade_in {
    to {
        opacity: 1;
    }
}

整体缩小向左平移首先想到的是缩放然后向左平移,最后发现平移都没必要了,直接默认整体放大,原点设置在左侧中间位置,这样缩小动画的时候会整体以左边为基点恢复到原位

chrome在放大后动画感觉不是那么丝滑,没关系,不用在意这些细节……用火狐浏览器效果不错

scale(2.5)大概试了个值,这个时候字母O刚好在中间,差不多就行,不用在意这些细节……

cubic-bezier(0.1, 0.6, 0, 1)这个贝塞尔曲线是自己试出来的,感觉效果比较类似


.container {
    position: relative;
    display: flex;
    justify-content: center;
    font-size: 10rem;
    color: white;
    transform: scale(2.5);
    transform-origin: 100% 50%;
    animation: move 0.8s 1.5s cubic-bezier(0.1, 0.6, 0, 1) forwards;
}

@keyframes move {
    to {
        transform: none;
    }
}

聚光灯效果

html结构新增<div class="shadow__spot"></div>与class="container"同级

这个其实我首先想到的就是类似聚光灯效果的蒙版扩散,所以在codepen上搜了一下,有个效果比较满意:XWdRwrm,但是这个css属性值不能使用动画过渡,想实现的话应该需要js,所以我又想到了用渐变色做蒙版好像也可以,但是渐变色的属性值也是不支持动画过渡的,我改成红色先看一下效果:

.shadow__spot {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: radial-gradient(circle, transparent 6rem, red 20rem);
    animation: fade_spot 1s 1.5s forwards;
}

@keyframes fade_spot {
    to {
        background: radial-gradient(circle, transparent 30rem, red 60rem);
    }
}

额……难道还得用js?

不,总有简单粗暴的方法,既然不支持过渡,那就直接放大,放大到全部显示为止……

.shadow__spot {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: radial-gradient(circle, transparent 6rem, red 20rem);
    animation: fade_spot 1s 1.5s forwards;
}

@keyframes fade_spot {
    to {
        transform: translateX(10rem) scale(5);
    }
}



效果好像还不错,把颜色改成黑色就大功告成了

注意这里加了个translateX(10rem)让蒙版向右偏移了一点,主要目的是为了尽量让焦点聚焦在字母O上,更接近官方动画效果,也是个大概值……

注意这里scale(5)放大5倍后是会出现滚动条的,所以在body上设置了overflow: hidden

字母O下方的下划线动效

这个比较简单就不多做解释了,直接flex布局,水平居中改变宽度就实现了

html结构中svg标签下方添加<div class="line"></div>

.letter .line{
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 1rem;
    display: flex;
    justify-content: center;
}

.letter .line::after{
    content: '';
    width: 0%;
    background-color: #146df7;
    animation: line 0.5s 1.7s forwards;
}

@keyframes line {
    to {
        width: 60%;
    }
}

最后看一下最终效果,火狐浏览器比较丝滑,我录个火狐的运行gif图

是不是有内味了?

其实最后还有个扫光效果,懒得搞了,也是比较简单,类似于骨架屏的扫光

全部代码

篇文章主要给大家介绍一下使用html+css来模仿制作小米官方网站右侧的浮动框。我们来看下边的这个浮动框,位于小米官网的右侧并且随着页面的滚动,一直浮动在右侧不变;

我们通过上边的图片可以看出图片有5个单独的块元素组成,每个块元素鼠标经过都有一个单独的颜色变为黄色的效果,然后第一个块元素鼠标经过还会在左侧弹出更多内容。接下来我们简单说一下制作所用到的核心知识。

1)制作页面所需知识点

1、列表标签(dl dd dt)的使用,使用dl和dd来完成前边5个相同模块的制作

2、鼠标经过(hover)的使用,第一个元素鼠标经过左侧显示,这个跟我们之前将的导航菜单类似,还有鼠标经过文字以及图片改变颜色,这里可以使用hover之后改变背景图片来实现;

3、浮动(fixed)的使用,该内容一直浮动在网页右侧,跟随页面一起滚动,我们可以使用position:fixed来实现;

2)代码实操演练

大体了解了我们所要使用的知识点之后,我们就可以开始根据图片上的内容来制作我们所需要的页面了,具体的实现代码就如下方所示:(首先写一个div盒子,看到列表形式,直接使用dl和dd,然后每个元素内部有文字和图片,使用h4标签和span标签来存放图片和文字内容,就这么搞定了哈哈),来看代码吧。

html代码挺简单的,我们啪啪敲完之后呢,剩下的就是书写css代码,来完成图片所示的布局样式的制作了。那么我们的css代码就如下图所示:(最外层box直接来个fixed和right、bottom配合,让其浮动在右侧,然后写写dl和dd的宽高,控制控制span的背景,随便写写hover事件,ok完成了)。不多说了,看代码吧。

好了,本篇文章就给大家说到这里,大家自己动手写一下看能不能写出一样的页面效果出来,也可以找一些类似的页面自己练习一下,有需要源码的可以直接私信【网站源码】即可。

每日金句:只有知道别人心里在想什么,你才能得到你想要的。喜欢我的文章的小伙伴记得关注一下哦,每天将为你更新最新知识。

家好,今天分享的是仿京东登录页面的简单实现方法(结构与样式),首先我们依旧是先看下效果图

下面是HTML结构

下面是CSS样式

PS:本人也是小白一枚,自学没几天,疏漏之处在所难免,请多担待!