当前位置:首页 > CSS

css制作风车

2026-01-28 13:25:32CSS

使用CSS制作风车效果

通过CSS的动画和变换属性可以轻松实现一个旋转的风车效果。以下是完整的实现方法:

HTML结构

<div class="windmill">
  <div class="blade"></div>
  <div class="blade"></div>
  <div class="blade"></div>
  <div class="blade"></div>
  <div class="center"></div>
</div>

CSS样式

.windmill {
  position: relative;
  width: 200px;
  height: 200px;
  margin: 50px auto;
}

.blade {
  position: absolute;
  width: 100px;
  height: 20px;
  background-color: #3498db;
  top: 90px;
  left: 50px;
  transform-origin: 0 50%;
  animation: spin 2s linear infinite;
}

.blade:nth-child(1) { transform: rotate(0deg); }
.blade:nth-child(2) { transform: rotate(90deg); }
.blade:nth-child(3) { transform: rotate(180deg); }
.blade:nth-child(4) { transform: rotate(270deg); }

.center {
  position: absolute;
  width: 30px;
  height: 30px;
  background-color: #e74c3c;
  border-radius: 50%;
  top: 85px;
  left: 85px;
  z-index: 10;
}

@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

实现原理

风车由四个叶片和一个中心圆点组成。每个叶片通过绝对定位放置在相同位置,然后分别旋转0°、90°、180°和270°形成十字形状。

transform-origin属性设置旋转中心点为叶片左侧中点。动画使用@keyframes定义从0°到360°的无限循环旋转,使所有叶片同步转动。

自定义选项

修改风车大小可调整.windmill容器的宽高。改变.blade的宽高可调整叶片尺寸。background-color可更改颜色。动画持续时间(2s)可调整旋转速度。

css制作风车

浏览器兼容性

该效果支持所有现代浏览器,包括Chrome、Firefox、Safari和Edge。如需支持IE10及以下版本,需要添加-webkit和-ms前缀。

标签: 风车css
分享给朋友:

相关文章

css制作箭头

css制作箭头

使用 CSS 边框制作箭头 通过调整元素的 border 属性,利用透明边框和实色边框的组合生成箭头。例如,创建一个向右的箭头: .arrow-right { width: 0; hei…

css表单制作

css表单制作

基础表单结构 使用HTML创建表单的基本结构,包含<form>标签及输入字段。表单通常需要action(提交地址)和method(提交方法)属性。 <form action="/s…

纯css制作下拉菜单

纯css制作下拉菜单

纯CSS下拉菜单实现方法 通过CSS的:hover伪类和display属性可以实现纯CSS下拉菜单,无需JavaScript。以下是具体实现方式: HTML结构示例: <nav class=…

制作css外部

制作css外部

创建CSS外部文件的方法 新建一个纯文本文件,将文件扩展名改为.css,例如styles.css。确保文件内容只包含CSS代码,不包含HTML标签。 编写CSS内容 在CSS文件中直接编写样式规则,…

css 制作报表

css 制作报表

CSS 制作报表的方法 使用 CSS 制作报表主要涉及表格样式的设计、布局优化以及响应式处理。以下是几种常见的方法和技巧: 基础表格样式 通过 CSS 可以增强 HTML 表格的视觉效果,使其更符合…

css制作角标

css制作角标

使用伪元素创建角标 通过CSS的伪元素(如::before或::after)可以轻松实现角标效果。以下是一个示例代码: .element { position: relative; disp…