咨询电话:
15628812133
22
2024/11

使用CSS3实现鼠标悬停图标导航动画特效

发布时间:2024-11-22 15:26:32
发布者:神棍子
浏览量:
0

css3建一个具有鼠标悬停动画效果的导航菜单,当鼠标悬停在每个列表项上时,背景、图标和文本都会产生动态变化,以增强用户体验。

代码实现效果

1.页面结构:

   使用一个`<section>`标签作为整个导航菜单的容器,并为其添加`.business``.active`类。

   `<section>`内部使用一个`<div>`标签作为内容容器,添加`.box`类。

   内部包含一个无序列表`<ul>`,每个列表项`<li>`代表一个服务选项。

2.样式:

   使用CSS3`transition`属性为背景、图标和文本添加平滑的过渡效果。

   利用`background-position`属性改变背景图的位置,实现悬停时的视觉变化。

   使用`clip`属性对某些元素进行裁剪,以实现特定的动画效果。

3.交互:

   当鼠标悬停在列表项上时,通过改变`background-position``clip`属性,使背景图和图标发生变化。

   文本的显示和隐藏通过改变`top`属性和`transition-delay`属性来实现。

 重点方法

 1. 基础样式重置:消除浏览器默认的内外边距,确保所有元素在不同浏览器中表现一致。使用通配符选择器``重置所有元素的内外边距,并移除链接的下划线。

```css

 {

    padding: 0;

    margin: 0;

}

a, a:hover {

    text-decoration: none;

}

```

2. 导航栏基础样式:设置导航栏的宽度、居中显示,并添加过渡效果。:使用`width``margin: 0 auto`使导航栏居中,`position: relative`确保子元素可以相对定位,`transition`属性添加平滑过渡效果。

```css

.business .box {

    width: 1200px;

    margin: 0 auto;

    position: relative;

    transition: all .3s ease-in-out 0s;

}

```

 3. 列表项样式:设置列表项的尺寸、间距、背景图和显示方式。使用`width``height`设置尺寸,`margin`设置间距,`background`设置背景图,`overflow: hidden`确保溢出内容不可见,`display: inline-block`使列表项水平排列。

```css

.business .box ul.items li {

    width: 200px;

    height: 300px;

    margin: 0 8px;

    background: url(../images/bg_green.png) no-repeat 0px 400px;

    overflow: hidden;

    display: inline-block;

}

```

4. 图标样式:设置图标的尺寸、位置和显示方式。使用`display: block``position: relative`使图标块级显示并可相对定位,`margin`设置居中和顶部间距,`height`设置高度

```css

.business .box ul.items li i {

    display: block;

    position: relative;

    margin: 0 auto;

    margin-top: 43px;

    height: 69px;

}

```

 

5. 动画元素样式:设置动画元素的尺寸、位置、背景图和过渡效果。使用`display: block``position: absolute`使动画元素绝对定位,`width``height`设置尺寸,`margin-left`设置左侧间距,`background`设置背景图,`transition`属性添加平滑过渡效果。

```css

.business .box ul.items li u {

    display: block;

    position: absolute;

    width: 156px;

    height: 156px;

    margin-left: 22px;

    background: url(../images/words.png) no-repeat 0px -363px;

    transition: all .5s ease-in-out 0s;

}

```

 6. 裁剪区域:通过裁剪实现特定的动画效果。使用`clip`属性定义裁剪区域,`.active`类改变裁剪区域的大小,实现动画效果。

```css

.business .box ul.items li u.cl { clip: rect(0px,156px,-10px,78px); }

.business.active .box ul.items li u.cl { clip: rect(0px,156px,156px,78px); }

.business .box ul.items li u.cr { clip: rect(156px,78px,156px,0px); }

.business.active .box ul.items li u.cr { clip: rect(0px,78px,156px,0px); }

```

7. 文本样式:设置标题和描述文本的样式。使用`display: block``text-align: center`使文本居中显示,`font-size``line-height`设置字体大小和行高,`position: relative``top`设置垂直位置。

```css

.business .box ul.items li strong {

    display: block;

    margin-top: 70px;

    font-size: 16px;

    font-weight: normal;

    text-align: center;

}

.business .box ul.items li p {

    position: relative;

    top: 200px;

    color: white;

    font-family: Arial, "宋体";

    font-size: 12px;

    line-height: 20px;

    text-align: center;

}

```

 

8. 鼠标悬停效果:当鼠标悬停在列表项上时,改变背景图位置和图标样式。使用`background-position`改变背景图位置,`transition`属性添加平滑过渡效果,`hover`伪类触发悬停效果。

```css

.business .box ul.items li:hover {

    background-position: 0px 0px;

    transition: all .5s ease-in-out .3s;

}

.business .box ul.items li:hover i {

    transition: all .5s ease-in-out .4s;

}

```

 

9. 特定类型图标的变化:当鼠标悬停在特定类型的列表项上时,改变图标背景图的位置。使用`background-position`改变背景图位置,`hover`伪类触发悬停效果。

```css

.business .box ul.items li.pc:hover i { background-position: -168px -357px; }

.business .box ul.items li.mobi:hover i { background-position: -337px -291px; }

.business .box ul.items li.sys:hover i { background-position: -327px -362px; }

.business .box ul.items li.app:hover i { background-position: -164px -439px; }

.business .box ul.items li.host:hover i { background-position: -335px -439px; }

```

10. 文本颜色变化及延迟:当鼠标悬停在列表项上时,改变标题文本的颜色,并添加延迟效果。使用`color`改变文本颜色,`transition-delay`属性添加延迟效果。

```css

.business .box ul.items li:hover strong {

    color: white;

    transition-delay: .4s;

}

```

11. 描述文字的动画效果:当鼠标悬停在列表项上时,改变描述文本的垂直位置,并添加平滑过渡效果。使用`top`改变垂直位置,`transition`属性添加平滑过渡效果,`transition-delay`属性添加延迟效果。

```css

.business .box ul.items li:hover p {

    top: 20px;

    transition: all .3s ease-in-out .5s;

}

```

 总结

通过上述方法,实现了鼠标悬停时背景、图标和文本的动态变化效果,增强了用户的交互体验。主要利用了CSS3`transition``background-position``clip`等属性来实现这些效果。





关键词:
返回列表