使用CSS 中伪元素:before 和:after 做简单的动画(以小米商城非首页 logo 动画为例)

本文介绍了如何利用CSS伪元素`:before`和`:after`来创建小米商城非首页Logo的动画效果。通过在Logo图片左侧添加房子图片,并在鼠标悬停时应用动画,实现了图片位置和透明度的变化。详细讲解了HTML和CSS代码实现,并强调了`:before`和`:after`的选择器使用及透明度处理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚开始学前端不久,发现小米商城的页面做的特别漂亮,前几天在B站找了一个视频,是闪购页面的,跟上做了一下,但是他的视频只有静态的基本页面,没有动画,我今天弄了小半天(还是技术太差,哈哈哈),终于算是做出来了,而且效果和小米商城的一模一样。

先看效果

小米商城非首页logo动画


原理是这样的

在小米logo图片的左边插入一个房子的图片,当鼠标经过的时候,给他们设置 transform 动画就可以了,只是这里还有一个要注意的是透明的的问题,我们后面再说。


直接看代码解释

HTML部分
<a class="logo ir" href="//www.mi.com/index.html" title="小米官网">小米官网</a>

对,就这么一句
logo类就是为了方便设置图片的,ir类是为了设置 <a> 标签内部文字的

CSS部分
.header-log .logo {
    position: relative;
    display: block;
    width: 55px;
    height: 55px;
    overflow: hidden;
    background-color: #ff6700;
}
.header-log .ir {
    text-align: left;
    text-indent: -9999em;      /*当CSS能加载出来,这个是看不见的,当只有HTML加载出来,这个文字是可以看到的*/
}
.header-log .logo::before, .header-log .logo::after {
    position: absolute;        /*绝对定位*/
    left: 0;
    top: 0;
    z-index: 1;                /*设置层级,相当于PS中的图层,越小越靠下*/
    width: 55px;
    height: 55px;
    content: '';                /*用来插入东西的,这里必须为空,这个经常和 :before 及 :after 伪元素配合使用*/
    transform-origin: 50% 50%;
    transition: all .2s;        /*设置动画*/
}
.header-log .logo::before {
    background: url(../img/mi-logo.png) no-repeat 50% 50%;
    opacity: 1;                /*透明的,1为完全不透明,0为完全透明*/
    transform: translate(0, 0);
}
.header-log .logo::after {
    background: url(../img/mi-home.png) no-repeat 50% 50%;
    opacity: 0;                 /*因为这张图片是在左边的,要设置成完全透明的*/
    margin-left: -55px;         /*放在左边看不到的地方*/
    transform: translate(0, 0);
}
.logo:hover::before{            /*鼠标经过事件,小米logo变透明,向右移动*/
    opacity: 0;
    transform: translateX(55px);
}
.logo:hover::after{              /*鼠标经过事件,首页图标变不透明,向右移动*/
    opacity: 1;
    transform: translateX(55px);
}
注意
  1. <a> 标签 position 一定要是 relative
  2. <a> 标签设置 displayblock ,去掉标签固有属性也很重要
  3. 图片是在CSS中引入,首页图片的处理办法(左移加完全透明)
  4. 动画的实现(图片位置的变化,透明度的变化)
这样,小米商城非首页的logo动画就完成了,也多了对 :befor:after 这两个伪元素的使用技能

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值