当前位置:Gxlcms > css > 如何使用纯CSS实现从按钮两侧滑入装饰元素的悬停特效(附源码)

如何使用纯CSS实现从按钮两侧滑入装饰元素的悬停特效(附源码)

时间:2021-07-01 10:21:17 帮助过:37人阅读

本篇文章给大家带来的内容是关于如何使用纯CSS实现从按钮两侧滑入装饰元素的悬停特效(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

2485873894-5baf023d4f0c1_articlex.gif

源代码下载

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,容器是一个无序列表,列表项代表按钮:

  1. <ul>
  2. <li>home</li>
  3. </ul>

居中显示:

  1. body {
  2. margin: 0;
  3. height: 100vh;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background: linear-gradient(deepskyblue, navy);
  8. }

去掉列表项前面的符号:

  1. ul {
  2. padding: 0;
  3. list-style-type: none;
  4. }

设置按钮的文字样式:

  1. ul li {
  2. color: #ddd;
  3. font-size: 25px;
  4. font-family: sans-serif;
  5. text-transform: uppercase;
  6. }

用伪元素在按钮的左侧增加一个方块:

  1. ul li {
  2. position: relative;
  3. }
  4. ul li::before {
  5. content: '';
  6. position: absolute;
  7. width: 100%;
  8. height: 100%;
  9. background: tomato;
  10. left: -100%;
  11. }

用伪元素在按钮的右侧增加一条下划线:

  1. ul li::after {
  2. content: '';
  3. position: absolute;
  4. width: 100%;
  5. height: 0.2em;
  6. background: tomato;
  7. bottom: 0;
  8. left: 100%;
  9. }

接下来设置鼠标悬停效果。
当鼠标悬停时,左侧的方块移到文字所在位置:

  1. ul li::before {
  2. transition: 0.4s ease-out;
  3. }
  4. ul li:hover::before {
  5. left: 100%;
  6. }

右侧的下划线移到文字所在位置,它的动画时间延迟到方块的动画快结束时再开始:

  1. ul li::after {
  2. transition: 0.3s 0.3s ease-out;
  3. }
  4. ul li:hover::after {
  5. left: 0%;
  6. }

同时,提高文字的亮度:

  1. ul li {
  2. transition: 0.3s;
  3. cursor: pointer;
  4. }
  5. ul li:hover {
  6. color: #fff;
  7. }

隐藏掉按钮外的部分,使方块和下划线在默认状态下都不可见,只有鼠标悬停时它们才从两侧入场:

  1. ul li {
  2. overflow: hidden;
  3. }

最后,在 dom 中再增加几个按钮:

  1. <ul>
  2. <li>home</li>
  3. <li>products</li>
  4. <li>services</li>
  5. <li>contact</li>
  6. </ul>

布局多个按钮:

  1. ul {
  2. display: flex;
  3. flex-direction: column;
  4. align-items: center;
  5. }
  6. ul li {
  7. margin: 0.5em;
  8. }

大功告成!

以上就是如何使用纯CSS实现从按钮两侧滑入装饰元素的悬停特效(附源码)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行