请对此前端CSS技能题作答: span标签添加了样式"menu"时显示为一个菜单图标形如"≡",span标签添加了样式"close"时显示为一个关闭图标形如"×",请代码示例(不要直接使用字符≡和×,不要调整HTML,不要使用图片,不要使用图标字体。可使用CSS3的transform属性。要求兼容到IE11)
时间: 2023-07-21 21:23:24 浏览: 107
可以使用CSS3的transform属性来实现,代码示例如下:
```html
<!-- 示例 span 标签 -->
<span class="menu"></span>
<span class="close"></span>
```
```css
/* 样式定义 */
.menu {
display: inline-block;
width: 20px;
height: 2px;
background-color: #333;
transform: rotate(0deg) translate(0, 0);
transition: transform 0.3s ease;
}
.menu::before,
.menu::after {
content: "";
display: block;
width: 100%;
height: 100%;
background-color: #333;
position: absolute;
left: 0;
transition: transform 0.3s ease;
}
.menu::before {
transform: translateY(-6px);
}
.menu::after {
transform: translateY(6px);
}
.menu:hover {
transform: rotate(45deg) translate(0, 0);
}
.menu:hover::before {
transform: rotate(90deg) translate(0, 0);
}
.menu:hover::after {
transform: rotate(-90deg) translate(0, 0);
}
.close {
display: inline-block;
width: 20px;
height: 2px;
background-color: #333;
transform: rotate(45deg);
transition: transform 0.3s ease;
}
.close::before {
content: "";
display: block;
width: 100%;
height: 100%;
background-color: #333;
position: absolute;
left: 0;
transform: rotate(-90deg);
transition: transform 0.3s ease;
}
.close:hover {
transform: rotate(405deg);
}
.close:hover::before {
transform: rotate(90deg);
}
```
解释一下:
菜单图标(menu)是一个三条横线组成的图标,首先定义了三个 span 伪元素添加到菜单图标上,分别表示上中下三条线。通过旋转和移动变换,将这三条线变换为一个 ≡ 形状的图标。当鼠标悬停在菜单图标上时,通过旋转变换将菜单图标变为 × 形状的关闭图标。
关闭图标(close)是一个 × 形状的图标,同样使用旋转变换变为指定的形状。当鼠标悬停在关闭图标上时,通过旋转变换将关闭图标旋转 360 度,变回菜单图标。
阅读全文