网页导航下划线动画特效

下划线动画特效

网页导航是网页中非常重要的功能,所以导航链接的交互也显得非常重要。比较常见的交互效果,就是当鼠标悬停或者点击之后具有样式的变化,例如颜色变化,大小变化等。或者是添加一些比的图标,例如小三角,添加边框等等。

无论添加了怎样的效果,主要目的都是为了提高用户体验,增加交互体验,让用户在触发导航的时候变得更“好玩”。

本文也是为了让用户在点击导航链接的时候觉得更有趣,所以分享了一个导航下划线的动画特效,其实就是当点击之后会在导航链接下方增加边框效果,但这个边框是具有动画效果,所以会显得更加有趣,让用户可以玩一天。

效果如上图所示。

接下来直接看代码:

基础结构与样式代码

<style>
        
* {
    padding: 0;
    margin: 0;
    list-style: none;
    box-sizing: border-box;
}
body {
  background: #1A1E23;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 50em;
}

nav {
  position: relative;
  padding-bottom: 12px;
}
nav .line {
  height: 2px;
  position: absolute;
  bottom: 0;
  margin: 10px 0 0 0;
  background: #FF1847;
}
nav ul {
  display: flex;
}
nav ul li {
    height: 30px;
  margin: 0 40px 0 0;
  opacity: 0.4;
  transition: all 0.4s ease;
}
nav ul li:hover {
  opacity: 0.7;
}
nav ul li.active {
  opacity: 1;
}
nav ul li a {
  text-decoration: none;
  color: #fff;
  display: block;
  font-weight: 600;
  letter-spacing: 0.2em;
  font-size: 14px;
  line-height: 30px;
}
</style>

<nav>
    <ul>
        <li class="active"><a href="#">网站首页</a></li>
        <li class=""><a href="#">平面设计</a></li>
        <li class=""><a href="#">网页设计</a></li>
        <li class=""><a href="#">手绘设计</a></li>
        <li class=""><a href="#">UI设计</a></li>
        <li class=""><a href="#">web前端设计</a></li>
    </ul>
    <div class="line"></div>
</nav>

通过上面的代码可以看出,结构还是常用的结构,整体是ul,导航的边框结构是单独的标签控制,也就是line。

样式也是常用的的样式代码,这里为了方便居中以及排版,所以是采用了flex弹性布局,如果对弹性布局不熟悉的小伙伴可在网上搜索了解一下。

下面看js代码;

功能实现代码

<script src="jquery-1.7.2.min.js"></script>
<script>
var nav = $('nav');
var line = $('.line');

var active = nav.find('.active');
var pos = 0;
var wid = 0;

if(active.length) {
  pos = active.position().left;
  wid = active.width();
  line.css({
    left: pos,
    width: wid
  });
}

nav.find('ul li a').click(function(e) {
  if(!$(this).parent().hasClass('active')) {

    var _this = $(this);

    nav.find('ul li').removeClass('active');

    var position = _this.parent().position();
    var width = _this.parent().width();

    if(position.left >= pos) {
      line.animate({
        width: ((position.left - pos) + width)
      }, 300, function() {
        line.animate({
          width: width,
          left: position.left
        }, 150);
        _this.parent().addClass('active');
      });
    } else {
      line.animate({
        left: position.left,
        width: ((pos - position.left) + wid)
      }, 300, function() {
        line.animate({
          width: width
        }, 150);
        _this.parent().addClass('active');
      });
    }

    pos = position.left;
    wid = width;
  }
});
</script>

代码解释:

为了方便控制,案例中是通过jQuery来书写效果。

特效代码中,没有直接写死固定的数据,都是通过直接获取元素的相关样式,添加到边框划线中,好处是使用更灵活,方便维护。

if(active.length) {
  pos = active.position().left;
  wid = active.width();
  line.css({
    left: pos,
    width: wid
  });
}

这段代码主要是初始化.line的样式,包括位置以及宽度。

然后后面的代码主要是设置边框的动画效果,它的运动效果有两种,一种是从左往右进行位移以及发生长度变化;另外一种是从右往左进行位移,里面的代码都是jQuery中常用的方法,主要就是animate()方法以及样式设置的方法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,611评论 4 59
  • 美丽的雪谷,魅力无限,洁白的雪花,飘飘落落。喜欢大自然吗,喜欢就来吧!约你,走起!我在洪波客栈等你呦。
    雪谷秋姐阅读 393评论 0 4
  • 今天留店,到十点多才下班 悠悠的踩着单车往回走,感觉突然从一段时间以来的匆忙里脱离出来了 就像小时候学习比较紧张,...
    婧婷Fineyoga阅读 238评论 0 0
  • 深圳曾经开了一个很大规模的有关汽车售后服务的集中市场,皇马汽车百货广场,邀请我们去那里开了一个汽车主题的书店,销售...
    潘燕生阅读 294评论 0 1
  • 有人的地方就有江湖,有江湖的地方就有恩怨。有的恩怨避无可避,有的本可以避免,只是因为年轻不懂事,不懂得江湖的规矩,...
    991me阅读 181评论 1 1