小白初上手HTML+CSS 仿写小米官网logo动画

文章目录

  • 前言(小白初体验之html和css)
  • 一、实际运行效果
  • 二、实际操作
    • 1.素材准备
    • 2.理论基础
    • 3.掉坑经历分享
    • 4.解决bug
    • 5.完整代码
  • 三、总结

前言(小白初体验之html和css)

初入前端,跟着B站的Pink老师学习了一段时间。在Pink老师讲到过渡效果那一课的时候,留下了一个小米Logo效果的课堂小案例。课后自己也动手做了个类似的效果,分享在这里与各位大佬和像我这样的萌新共同交流,共同进步。
这也是我的第一篇博客,记录我的前端学习之路。平时我会把自己在学习中获得的一些经验,方法以及遇到的一些坑之类的,总结下来放到博客中,与大家一起交流。

废话不多说,直接进入正文


一、实际运行效果

小白初上手HTML+CSS 仿写小米官网logo动画_第1张图片

图片比文字带劲,先上图,看效果。感觉有点德芙的味道,纵享丝滑

二、实际操作

1.素材准备

先去小米官网把两张logo素材爬下来。

2.理论基础

首先准备一个大div盒子,参照小米的写法,利用伪元素选择器,伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化了HTML结构。

理论模型如下图所示
before和after两个伪元素并排放置在div盒子中。其中after伪元素利用margin-left,将盒子的左外边距缩小至紧贴第一个伪元素盒子,从而使两个盒子并排放置。实际的伪元素为行内元素,需要通过display: block;转化后,使其盒子大小与div盒子保持一致,div盒子大小即为logo大小。在这里为了方便解释,所以模型图中的伪元素盒子画的较小。

选择符 简介
::before 在父元素内容的前面创建元素
::after 在父元素内容的后面创建元素

当我们的鼠标经过div中的logo时,利用hover伪类选择器,将before伪元素的左侧外边距撑大,同时将after伪元素的左侧外边距缩小。同时结合过渡效果,实现顺滑移动效果。

小白初上手HTML+CSS 仿写小米官网logo动画_第2张图片

3.掉坑经历分享

在测试代码的时候,遇到一个当时一时没能解决的问题。发现logo向左向右移动的时候会有bug。向左移动时,要经过一段距离才能取消移动效果,向右移动的时候极其不稳定,效果如下所示。经过一通分析,发现before伪元素在扩大左侧外边距时,被挤到了div的右侧,但盒子仍然存在,所以鼠标依旧是hover的状态,故要移动一段距离。向右移动出现的bug原理类似。

小白初上手HTML+CSS 仿写小米官网logo动画_第3张图片

4.解决bug

再一通分析后发现,只要将超出div盒子的内容全部隐藏,就能很好的解决这个问题。下面这行代码就能很好地解决超出盒子边界的问题。

overflow: hidden;

同时这条代码也有很多妙用,以后单独再出一期,分享overflow:hidden在实际小案例中的巧妙运用。

5.完整代码

代码如下:

    
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Smoothtitle>
    <style>
        .box {
            width: 55px;
            height: 55px;
            margin: 100px auto;
            overflow: hidden;
        }

        .box .logo {
            display: block;
            position: relative;
            width: 100%;
            height: 100%;
            background-color: rgb(255, 103, 0);
        }

        .box .logo::before,
        .box .logo::after {
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            content: "";
            transition: all .2s;
        }

        .box .logo::before {
            background: url(mi-logo.png) no-repeat 50% 50%;

        }

        .box .logo::after {
            background: url(mi-home.png) no-repeat 50% 50%;
            margin-left: -55px;
        }

        .box .logo:hover::before {
            margin-left: 55px;
        }

        .box .logo:hover::after {
            margin-left: 0px;
        }
    style>
head>

<body>
    <div class="box">
        <a class="logo" title="小米官网">
            
        a>
    div>
body>

html>

三、总结

这次的小案例,是对伪元素,过渡效果以及overflow的灵活运用。同时让我对css的实际应用有了更进一步的了解。在学会基础的同时,更得学会如何灵活运用。好了,这次的小米logo案例小分享就到这了。万事开头难,坚持就是胜利,各位一起加油!

你可能感兴趣的:(CSS,html,css)