正值初夏,用CSS画一个七彩风车

简介: 正值初夏,用CSS画一个七彩风车

我正在参加「初夏创意投稿大赛」详情请看:初夏创意投稿大赛

效果图


image.png

实现思路


我们给一个版心,防止屏幕变大变小样式错乱,然后使用div装风叶盒子和风车杆

风叶盒子采用ul和li去做,这样做出来的层次分明有结构感,然后通过css的旋转属性,用js进行遍历添加到行内,顺便也给每个风叶添加颜色,这里风叶有一个透明的效果,这里可以采用透明度属性进行设置

风叶杆用div的伪元素进行实现,然后通过定位,定位到合适的位置

在通过css的动画属性让风叶转动起来

页面结构


<div class="box">
  <!-- 风车盒子-->
 <div>
   <ul class="windmill">
<!-- 风车叶子 -->
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
   </ul>
 </div>
</div>

风叶盒子


风叶盒子我们用ul来做,这样显得层次分明,也好便于使用js进行操作,给风叶盒子设置好宽高后,一个风叶盒子就好了

image.png

/* 风车大盒子 */
      .windmill {
        position: relative;
        z-index: 9;
        width: 400px;
        height: 400px;
      }

风叶的制作


风叶通过ul里面的li结合CSS圆角边框的属性进行实现,我们在让所有的风叶同意到达风叶盒子的正中心,这里采用到了定位,然后再把他的旋转中心点设置到左下角,因为一会要通过js进行统一旋转

image.png

/* 风车叶片 */
      .windmill li {
        position: absolute;
        top: 0;
        left: calc(50% - 100px);
        z-index: 99;
        width: 100px;
        height: 200px;
        border-radius: 100px 0 0 100px;
        transform-origin: right bottom;
      }

通过js获取到所有的风叶,然后定义好一个旋转基准值便于循环赋值每个风叶的旋转角度,在设置一个扇叶数组,扇叶数组里面存着每个扇叶的颜色,如果有多的扇叶则默认采取第一个,完成以后在通过es6中的map方法进行循环遍历设置背景色和旋转角度

//获取所有的风叶元素
      const lis = document.querySelectorAll('.windmill li');
      // 旋转基准值
      const deg = 50;
      // 扇叶颜色
      const Color = [
        '150,211,186',
        '215,152,186',
        '162,121,186',
        '150,211,186',
        '215,172,86',
        '251,100,81',
        '140,190,186',
        '251,101,120'
      ];
                  // 由于获取的是伪数组,通过es6的解构赋值进行转换成真正的数组
      [...lis].map((R, i) => {
        // 给风叶设置行内属性旋转
        R.style.transform = `rotate(${(i+1)*deg}deg)`
        // 给风叶设置背景颜色,背景颜色如果当前未设置,就默认采用第一个
        R.style.backgroundColor = `rgb(${Color[i]||Color[0]})`
      })

然后再给风叶添加一个背景透明色,基本就完成了

opacity: .7;

image.png

风车杆


风车杆我们采用包含着风车盒子的伪元素来做,设置一个宽高,在通过定位定位到正中间,然后设置一个颜色

/* 风车杆 */
        .box>div{
          width: 400px;
          height: 400px;
        }
      .box>div::after {
        content: '';
        width: 15px;
        height: 450px;
        background: rgb(251, 199, 149);
        position: absolute;
        top: 230px;
        left: 50%;
        transform: translate(-50%);
      }

image.png

风车转动


最后我们通过设置css的动画操作风叶大盒子的旋转属性让他旋转起来,这样就完成了

/* 风车大盒子 */
      .windmill {
        position: relative;
        z-index: 9;
        width: 400px;
        height: 400px;
        animation: rote 2s linear infinite;
      }
      /* 旋转动画 */
      @keyframes rote {
        from {
          transform: rotate(0deg);
        }
        to {
          transform: rotate(1080deg);
        }
      }


image.png

相关文章
|
前端开发
css实现风车样式
css实现风车样式
135 0
|
前端开发
CSS 绘制小风车
CSS 绘制小风车
197 0
|
前端开发
正值初夏,用CSS教你画夏天常玩的四彩小风车
正值初夏,用CSS教你画夏天常玩的四彩小风车
正值初夏,用CSS教你画夏天常玩的四彩小风车
|
前端开发
css 实现旋转-风车
css 实现旋转-风车
css 实现旋转-风车
|
10月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
756 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
583 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
554 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
284 34

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    420
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    330
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    303
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    205
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    421
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    608
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    773
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    214
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    621
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    382