前端页面--天猫右侧信息栏弹出效果实现

       今天记录的是现在很常见的一个页面效果,那就是类似天猫界面右侧购物车的信息展示的效果,下面这个黑色的就是今天的主角——animation

     这个是我毕设里面实现的效果

        虽然没有真正天猫上面的好看(╯‵□′)╯︵┴─┴,但是毕竟我这个没有审美的程序猿已经尽力了…….那么我们就来一步步的介绍这个效果的实现过程吧~

        首先,我们先分析一下,都需要实现什么功能,第一,在刚进入页面的时候是不显示的,当我们滑动滚动条的时候才会出现右侧的信息栏,而当我们返回页面顶端的时候这个信息栏也会相应的隐藏起来,那么这个效果就很简单了,只需要将display属性设置为none就可以隐藏了,而在js中判断当前滚动条滚动的高度来设置display是block还是none了。

//根据下拉判断是否显示隐藏导航
    $(window).scroll(function(){

        //这里我的顶部导航栏的top为116,所以监听的高度就为116了
        if($(window).scrollTop()>116){

            //当满足条件时就显示出右侧的信息栏
            $("#sidebar").show();
        }else{

            //当条件不满足的时候就隐藏右侧的信息栏
            $("#sidebar").hide();
            $(‘.nav-content‘).removeClass(‘sidebar-move-left‘);
        }
    });

       接下来就是显示出信息栏之后的功能了,那么自然而然的就是那个从右往左滑动的渐入渐出效果了,其实当页面加载完成之后每一个单独的信息栏都已经加载完成了,而我只是把它们隐藏了起来,但需要注意的是在这里隐藏这些信息栏使用的不是display:none,而是透明度(opacity),这样配合动画效果将透明度从0增加到1才真正的达到了渐入渐出的效果。

     我在这里设置了两个动画效果,一个是打开时候的向左移动动画(sidebar-move-left),一个是向右移动动画(sidebar-move-right):

/*信息栏弹出动画*/
.sidebar-move-left{
    animation-name: sml;
    animation-duration: 1s;
    animation-iteration-count: 1;
    animation-fill-mode: forwards;
}
@keyframes sml {
    from{
        opacity: 0;
    }
    to{
        opacity: 1;
        transform: translateX(-266px);
    }
}

       我们首先定义一个动画的名字:sml,然后它是在1s内完成动画的(animation-duration),并且我们只需要这个动画播放一次(animation-iteration-count),以及希望对象状态是停留在动画结束之后的(animation-fill-mode),下面就是我们真正的动画效果了,首先是从开始的form设置,这个时候的透明度为0。接着当动画完成时(to)透明度变为了1,与此同时我们希望这个对象从右向左移动一定的距离(translateX),这样一个从右往左移动的动画效果就有了,但这并没有结束, 因为浏览器的兼容问题,我们现在的效果仅仅能在ie浏览器下工作,而到了chrome和火狐的时候就需要另外的设置了,当兼容chrome内核的浏览器的时候需要在每个属性前面加上:-webkit-,而火狐的就加上:-moz-,同时下面的@keyframes也要对应的加上不同内核的前缀。

      而剩下的向右收回基本和上面的一样,仅仅是移动坐标不同罢了。

      现在动画也有了,马上就要js来帮助我们将正确的属性加到正确的位置就好了,在外面加载完页面的时候就需要将右侧信息栏中的每一个图标都加上一个click事件,同时也要为关闭按钮添加关闭事件。

//右侧信息栏
function Sidebar(){

    //首先先取到每个按钮的对象
    var prof = $(‘#prof‘);
    var asset = $(‘#asset‘);
    var brand = $(‘#brand‘);
    var broadcast = $(‘#broadcast‘);
    var foot = $(‘#foot‘);
    var calendar = $(‘#calendar‘);

    var close = $(‘.nav-con-close‘);

    //接下来就是给每个按钮绑定对应的click事件了
    close.click(function(){
        $(‘.nav-content‘).removeClass(‘sidebar-move-left‘);
        $(‘#sidebar‘).css(‘border-left‘,‘‘);
        $(‘.nav-content‘).addClass(‘sidebar-move-right‘);
    });

    prof.click(function(){
        var prof_content = $(‘#prof-content‘);

        //判断当前信息栏是否为打开状态,如果是就将其关闭
        if($(‘.nav-content‘).is(‘.sidebar-move-left‘)){
            $(‘.nav-content‘).removeClass(‘sidebar-move-left‘);
        }

        /*
           当点击这个按钮的时候就为这个信息栏触发动画效果,
           并设置一个于右侧基本信息栏的边界线
        */
        prof_content.addClass(‘sidebar-move-left‘);
        $(‘#sidebar‘).css(‘border-left‘,‘1px dotted #000‘);

        if(prof_content.is(‘.sidebar-move-right‘)){
            prof_content.removeClass(‘sidebar-move-right‘);
        }
    });

}

      那么在javascript中的思路就是当点击关闭按钮的时候就把每一个信息栏中左移显示的属性移除掉并添加逐渐右移的属性,那么就会显示出慢慢左移关闭的效果了。

      而单独点击每个按钮的时候就会坚持当前是否为打开状态,如果不是的话就会移除掉其他信息栏上展开的属性,并为自己添加左移展开的效果,我在上面的代码就只展示第一个按钮的代码(prof),其他的按钮和第一个基本类似。

      好了╰(*′︶`*)╯?~今天的这个效果就完全介绍完了~其实整个的思路还是很简单的,就是一个对CSS中animation属性的运用而已,但实际的效果还是很(高大上)的啊~~

时间: 2024-12-17 04:35:19

前端页面--天猫右侧信息栏弹出效果实现的相关文章

JS学习笔记(一): 使用原生JS 实现导航栏下多级分类弹出效果

在给静态页面静添加交互效果时遇到的问题 : 鼠标划入二级菜单时 一级菜单样 ":hover" 式无法保持 情景如下: 解决思路: 利用二级菜单的onmouseover/out事件 重新构建一级菜单 ".hover" 样式类 代码如下: CSS部分: 在原来的目标:hover样式中 增加 .hover状态 li.app_jd a:hover,li.app_jd a.hover{ background-position: -126px -397px; } li.serv

在ASP.NET MVC4中实现同页面增删改查,无弹出框02,增删改查界面设计

在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今天的阳光真特么好,写完本篇,好出去在阳光下溜溜狗.散散步什么的,正所谓文武之道一张一弛,走神了,进入正题. 首先是一个View Model,在这里定义验证规则,提交和保存数据的时候还必须和领域模型映射. using System; using System.ComponentModel.DataAnnotat

JS实现边栏弹出动画

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS实现边栏弹出动画</title> <style type="text/css"> *{margin:0;padding:0;} #box{width:200px;height:200px;background-color:

jQuery制作信息提示弹出层插件【推荐】

给大家分享一款非常实用的弹窗提示窗口插件,包含多种模式.带有回执函数值的功能.?1. [代码][JavaScript]代码 <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script><!--[if IE 6]><script type="text/javascript" src="js/iepngfix_tilebg

爱淘宝手机版分类导航菜单弹出效果设计

来和大家一起讨论讨论爱淘宝手机版的分类导航菜单弹出效果是如何设计实现的.先来看几个截图,一个是爱淘宝官方网站的截图,另一部分是我仿照爱淘宝做的截图 先声明一下我们只是借鉴爱淘宝手机版界面来进行技术的学习,如有博友看到请各位一定要理解.此博客毫无盗用淘宝核心技术. 第一张图是爱淘宝官网的截图,后面两张是我们自己仿照做的截图. 首先分析一下要实现的功能细节 点击手机页面商品列表的图片,导航菜单会从手机的右侧出来 导航菜单下面会有一个遮盖层,这样子的作用防止用户点击最底层的商品 最底层的商品可以在遮盖

分享20个华丽的模态窗口弹出效果示例(梦想天空)

分享20个华丽的模态窗口弹出效果示例 在你的品牌和网站访问者之间建立情感联系是非常重要的.模态弹出窗口可能会帮助您完成这个具有挑战性的任务,以及分享给游客一些重要信息.作为一项常用规则,模态弹出窗口被用于各种号召行动的消息,如鼓励用户订阅新闻邮件,下载一些免费赠品或通知关于一些新的产品,服务或功能发布等.在这里,你会看到值得你注意的20个华丽的弹出窗口示例. 您可能感兴趣的相关文章 经典网页设计:超炫动画效果单页网站 30个独具匠心的精美单页网站设计案例 25个以全屏照片为背景的精美网页作品 2

仿简书、淘宝等等App的View弹出效果

昨天用简书App的时候觉得这个View的弹出效果特别好,而且非常平滑,所以我就尝试写了一个,和简书App上的效果基本一致了: 下面开始讲解: 1.首先我们要知道这个页面有几个View?这个页面其实有四个View,self.view , 图中白色VC的View rootVC.view ,白色VC上的maskView maskView , 以及弹出的popView popView .我们创建它们: self.view.backgroundColor = [UIColor blackColor]; _

Android PopupWindow 仿微信弹出效果

项目中,我需要PopupWindow的时候特别多,这个东西也特别的好使,所以我今天给大家写一款PopupWindow 仿微信弹出效果,这样大家直接拿到项目里就可以用了!首先让我们先看效果: 那么我首先先看下布局代码非常简单:如下 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pop_layout" android:layout_

cocos2d-x 弹入、弹出效果(以菜单为例子)

弹入和弹出菜单为了使动作更平滑,涉及到动作组合.(CCMoveTo .CCEaseExponentialOut)(菜单背景图位置仅为示范例子,还需调整) 以菜单的背景图为例: //生成菜单背景图 CCSprite* MainMenuBG = CCSprite::create("menu_bg.png"); MainMenuBG->setPosition(ccp(visibleSize.width/2 +10,visibleSize.height +20)); this->a