• 实现鼠标hover动画效果自己理解的两种方法——练习笔记


    练习前端技术学院的任务,需要实现“导航栏中的链接,随着鼠标悬浮的位置,相应的链接下出现红色线段”的效果(如图1),我的理解有简易与稍显复杂一些的方法:

     

    首先想到的就是直接利用伪元素,改变其底边框状态即可。对应的代码及效果如下:

     1 <html>
     2  <head></head>
     3 <body>
     4          <div>
     5                  <ul>
     6                        <li><a href="#" class="Link-tit"><i>首页</i></a></li>
     7                    <li><a href="#" class="Link-tit"><i>最新活动</i></a></li>
     8                    <li><a href="#" class="Link-tit"><i>项目介绍</i></a></li> 
     9                    <li><a href="#" class="Link-tit"><i>爱心社区</i></a></li>
    10                    <li><a href="#" class="Link-tit"><i>关于我们</i></a></li>
    11                    <li><a href="#" class="Link-tit"><i>登录</i></a></li>
    12                  </ul>
    13          </div>
    14  </body>
    15 </html>

    css为:

     1 ul li{
     2         width:120px;
     3         float:left;    
     4         }
     5 ul{
     6        list-style-type:none;
     7     }
     8 div{float:right;/*实现整体的右对齐布局}
     9 a:hover{
    10               color:red;
    11               border-bottom:3px solid red;/*实现鼠标悬浮时对应链接高亮红色且有红色底边框效果*/
    12             }

    此方法就没有了平滑的动作(动画效果),其效果如图:

    另一方法是用CSS3属性transition(过渡)实现,思路是利用该属性指定鼠标动作时变化的具体属性以及时间来控制其变化,用一个空的<li>放置变化的红色底线,具体代码如下:

    <html>
     <head></head>
    <body>
             <div class="navigation">  <!--页眉导航栏-->
                   <ul>
                       <li><a href="#" class="Link-tit"><i>首页</i></a></li>
                       <li><a href="#" class="Link-tit"><i>最新活动</i></a></li>
                       <li><a href="#" class="Link-tit"><i>项目介绍</i></a></li> 
                       <li><a href="#" class="Link-tit"><i>爱心社区</i></a></li>
                       <li><a href="#" class="Link-tit"><i>关于我们</i></a></li>
                       <li><a href="#" class="Link-tit"><i>登录</i></a></li>
                       <li class="move"></li>                  <!--利用一个空的<li>标签设置选中下划线-->
                   </ul>
              </div>
    </body>
    </html>

    CSS代码如下:

      

     1 .head a{text-decoration:none;/*去除a自带的下划线*/}
     2 ul{list-style-type:none;position:relative;}
     3 .Link-tit:hover{color:red;}/*伪元素实现当鼠标停在链接上高亮显示*/
     4 ul li{width:110px;float:left;line-height:20px;}
     5 .move{border-bottom:3px solid red;position:absolute;left:0px;top:30px;
     6       transition:left .2s ease-in-out 0s;          /*transition中的left值为.move类事件触发时随鼠标变化的属性*/
     7       -webkit-transition:left .2s ease-in-out 0s; /*chrome/safari浏览器*/
     8       -moz-transition:left .2s ease-in-out 0s;    /*firefox浏览器*/
     9       -o-transition:left .2s ease-in-out 0s;}     /*opera浏览器*/
    10 li:nth-child(1):hover~.move{left:0px;}
    11 li:nth-child(2):hover~.move{left:110px;}
    12 li:nth-child(3):hover~.move{left:220px;}
    13 li:nth-child(4):hover~.move{left:330px;}
    14 li:nth-child(5):hover~.move{left:440px;}
    15 li:nth-child(6):hover~.move{left:550px;}

    其中,:nth-child(n)为子代选择器,此处表示各个链接,prev~slibings表示同辈元素,改变.move的left值,即可改变已经脱离文档流的下划线的位置,从而达到效果(见图一)。

    transition:property(要进行过渡的属性) duration(过渡时间) timing-function(过渡变化曲线) delay(过渡开始时间)

  • 相关阅读:
    冰蝎,从入门到魔改
    红蓝对抗——加密Webshell“冰蝎”攻防
    DGA域名的今生前世:缘起、检测、与发展
    DNS隐藏隧道的使用
    DPI (Deep Packet Inspection) 深度包检测技术
    中国菜刀原理
    一句话木马和中国菜刀的结合拿webshell
    十大黑客工具之一——中国菜刀
    十大ATT&CK攻击技战术
    防守方新秘籍:MITRE 发布主动防御指导框架Shield
  • 原文地址:https://www.cnblogs.com/xiao-baobao/p/8305880.html
Copyright © 2020-2023  润新知