蓝桥杯 web 展开你的扇子(css3)

普通答案:
#box:hover #item1{transform: rotate(-60deg);
}
#box:hover #item2{transform: rotate(-50deg);
}
#box:hover #item3{transform: rotate(-40deg);
}
#box:hover #item4{transform: rotate(-30deg);
}
#box:hover #item5{transform: rotate(-20deg);
}
#box:hover #item6{transform: rotate(-10deg);
}
#box:hover #item12{transform: rotate(60deg);
}
#box:hover #item11{transform: rotate(50deg);
}
#box:hover #item10{transform: rotate(40deg);
}
#box:hover #item9{transform: rotate(30deg);
}
#box:hover #item8{transform: rotate(20deg);
}
#box:hover #item7{transform: rotate(10deg);
}1. 选择器解析
#box:hover #item6 {transform: rotateZ(-10deg);
}(1) #box:hover
 
- #box是一个 ID 选择器,表示选中 HTML 中- id="box"的元素。
- :hover是一个伪类,表示当用户将鼠标悬停在该元素上时应用样式。
- #box:hover的意思是:当鼠标悬停在- id="box"的元素上时,触发相关的样式规则。
(2) #item6
 
- #item6是另一个 ID 选择器,表示选中 HTML 中- id="item6"的元素。
- #box:hover #item6表示:当鼠标悬停在- #box上时,选中- #box内部的- #item6元素。
2. 样式规则
transform: rotateZ(-10deg);(1) transform 属性
 
- transform是一个 CSS 属性,用于对元素进行变换操作(如旋转、缩放、移动等)。
- 在这里,transform被用来对#item6进行旋转。
(2) rotateZ(-10deg)
 
- rotateZ是- transform的一个函数,表示围绕 Z 轴旋转。
- -10deg表示逆时针旋转 10 度(负值为逆时针,正值为顺时针)。
- 因此,rotateZ(-10deg)的意思是:让#item6元素围绕 Z 轴逆时针旋转 10 度。
 如果你不指定旋转轴(如 rotateX, rotateY, 或 rotateZ),则默认是围绕 Z 轴进行旋转。这意味着单独使用 rotate 实际上等同于 rotateZ。
扩展:js 做法
box.onmouseover = () => { 
for(let i = 1; i <=6; i++ ) {
let item = document.querySelector(`#item${i}`) item.style.transform = `rotate(${-60+(i-1)*10}deg)`
console.log(item) } for(let i = 7; i <=12; i++ ) {
let item = document.querySelector(`#item${i}`) item.style.transform = `rotate(${(i-6)*10}deg)` 
console.log(item) }代码逐行解析
1. box.onmouseover = () => { ... }
 
- 这是一个事件绑定,表示当用户将鼠标悬停在 box元素上时,执行后面的箭头函数。
- onmouseover是原生 DOM 的事件属性,类似于- addEventListener('mouseover', ...)。
2. 第一个 for 循环
 
for (let i = 1; i <= 6; i++) {let item = document.querySelector(`#item${i}`);item.style.transform = `rotate(${-60 + (i - 1) * 10}deg)`;console.log(item);
}(1) for (let i = 1; i <= 6; i++)
 
- 循环从 i = 1开始,到i = 6结束,总共循环 6 次。
- 每次循环处理一个 #itemX元素(#item1到#item6)。
(2) let item = document.querySelector(#item${i})
 
- 使用模板字符串 `#item${i}`动态生成选择器,例如:- 当 i = 1时,选择器为#item1。
- 当 i = 2时,选择器为#item2。
 
- 当 
- document.querySelector返回匹配该选择器的第一个 DOM 元素。
(3) item.style.transform = rotate(${-60 + (i - 1) * 10}deg)``
 
- 设置 item元素的transform样式,使其旋转一定的角度。
- -60 + (i - 1) * 10是一个数学表达式,用于计算旋转角度:- 当 i = 1时:-60 + (1 - 1) * 10 = -60,即旋转-60deg。
- 当 i = 2时:-60 + (2 - 1) * 10 = -50,即旋转-50deg。
- 当 i = 3时:-60 + (3 - 1) * 10 = -40,即旋转-40deg。
- 以此类推,直到 i = 6时,旋转角度为-10deg。
 
- 当 
(4) console.log(item)
 
- 打印当前处理的 item元素,方便调试和查看是否正确选择了目标元素。
3. 第二个 for 循环
 
for (let i = 7; i <= 12; i++) {let item = document.querySelector(`#item${i}`);item.style.transform = `rotate(${(i - 6) * 10}deg)`;console.log(item);
}(1) for (let i = 7; i <= 12; i++)
 
- 循环从 i = 7开始,到i = 12结束,总共循环 6 次。
- 每次循环处理一个 #itemX元素(#item7到#item12)。
(2) let item = document.querySelector(#item${i})
 
- 同第一个循环,动态生成选择器并获取对应的 DOM 元素。
(3) item.style.transform = rotate(${(i - 6) * 10}deg)``
 
- 设置 item元素的transform样式,使其旋转一定的角度。
- (i - 6) * 10是一个数学表达式,用于计算旋转角度:- 当 i = 7时:(7 - 6) * 10 = 10,即旋转10deg。
- 当 i = 8时:(8 - 6) * 10 = 20,即旋转20deg。
- 当 i = 9时:(9 - 6) * 10 = 30,即旋转30deg。
- 以此类推,直到 i = 12时,旋转角度为60deg。
 
- 当 
(4) console.log(item)
 
- 同第一个循环,打印当前处理的 item元素。
