纯纯的css画美美的彩虹

效果

效果图如下

实现思路

  1. 使用box-shadow画赤橙黄绿蓝靛紫7个弧形,拼接在一起
  2. after伪元素写投影样式
  3. 彩虹和投影都有动画

dom结构

用两个嵌套的div容器,父容器来控制图标显示的位置,子容器用来写彩虹的样式。

<div class="container">
    <div class="rainbow"></div>
</div>

css样式

1、定义父容器样式,控制图标位置,顺便给整个页面加个背景色,方便预览

body{
    background: rgba(73,74,95,1);
}

.container{
    width: 170px;
    height: 170px;
    position: relative;
    margin: 250px auto;
}

2、彩虹样式,彩虹有一个左右摇摆的动画效果

.rainbow{
    width: 70px;
    height: 70px;
    position: absolute;
    top: 70px;
    left: 80px;
    margin-left: -40px;
    border-radius: 170px 0 0 0;
    box-shadow: #fb323c -2px -2px 0 1px,
        #f99716 -4px -4px 0 3px,
        #fee124 -6px -6px 0 5px,
        #afde2e -8px -8px 0 7px,
        #6ad7f8 -10px -10px 0 9px,
        #60b1f5 -12px -12px 0 11px,
        #a3459b -14px -14px 0 13px;
    animation: rainbow 5s ease-in-out infinite;
    transform: rotate(40deg);
}

@keyframes rainbow{
    50%{
        transform: rotate(50deg);
    }
}

3、投影样式,别忘了是同样有动画的哟

.rainbow::after{
    content: '';
    width: 120px;
    height: 15px;
    position: absolute;
    bottom: -23px;
    left: 17px;
    background: #000;
    border-radius: 50%;
    opacity: 0.2;
    animation: rainbow_shadow 5s ease-in-out infinite;
    transform: rotate(-40deg);
    transform-origin: 50% 50%;
}

@keyframes rainbow_shadow{
    50%{
        transform: rotate(-50deg) translate(10px) scale(0.7);
        opacity: 0.05;
    }
}

搞定,很简单有没有,跟着实现一遍,你也可以画出美丽的彩虹咯~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值