jQuery实现首页悬浮框

 更新时间:2022年03月30日 11:45:44   作者:帅_帅  
这篇文章主要为大家详细介绍了jQuery实现首页悬浮框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了jQuery实现首页悬浮框的具体代码,供大家参考,具体内容如下

基于jQuery实现首页悬浮框,如下图所示

1、在页面中引入jQuery.bay-window.js,jQuery.bay-window.js的代码如下:

!function($){
  /**
   * Description: jquery飘窗插件,可自适应浏览器宽高的变化
   * Author: ddqre12345
   * CreateTime: 2017.5.3
   * param: args={startL:default, startT:default, angle:-Math.PI/4, speed: 125}
   * 参数说名: startL飘窗初始时距离左边的距离, startT飘窗初始化距离顶部的距离, angle飘窗初始运动方向, speed运动速度(px/s)
   */
  $.fn.autoMove = function(args){
    //先定义一些工具函数判断边距
    function isTop(pos, w_w, w_h, d_w, d_h){//飘窗到达上边距
      return (pos.top<=0) ? true : false;
    }
    function isBottom(pos, w_w, w_h, d_w, d_h){//飘窗到达下边距
      return (pos.top>=(w_h-d_h)) ? true : false;
    }
    function isLeft(pos, w_w, w_h, d_w, d_h){//飘窗到达左边距
      return (pos.left<=0) ? true : false;
    }
    function isRight(pos, w_w, w_h, d_w, d_h){//飘窗到达右边距
      return (pos.left>=(w_w-d_w)) ? true : false;
    }
    return this.each(function(){
      var w_w = parseInt($(window).width()),
        w_h = parseInt($(window).height()),
        d_w = parseInt($(this).width()),
        d_h = parseInt($(this).height()),
        d_l = (w_w-d_w)/2,
        d_t = (w_h-d_h)/2,
        max_l = w_w - d_w;
      max_t = w_h - d_h;
      //位置及参数的初始化
      var setobj = $.extend({startL:d_l, startT:d_t, angle:Math.PI/4, speed:100}, args);
      $(this).css({position: 'fixed', left: setobj['startL']+'px', top: setobj['startT']+'px'});
      var position = {left: setobj['startL'], top: setobj['startT']};//飘窗位置对象
      var that = $(this);
      var angle= setobj.angle;
      var time = 10;//控制飘窗运动效果,值越小越细腻
      var step = setobj.speed * (time/1000);//计算运动步长
      var decoration = {x:step*Math.cos(angle), y:step*Math.sin(angle)};//计算二维上的运动增量
      var mvtid;
      $(window).on('resize', function(){//窗口大小变动时重新设置运动相关参数
          w_w = parseInt($(window).width());
          w_h = parseInt($(window).height());
          max_l = w_w - d_w;
          max_t = w_h - d_h;
      });
      function move(){
        position.left += decoration.x;
        position.top  += decoration.y;
        if(isLeft(position, w_w, w_h, d_w, d_h)||isRight(position, w_w, w_h, d_w, d_h)){
          decoration.x = -1*decoration.x;
        }
        if(isRight(position, w_w, w_h, d_w, d_h)){
          position.left = max_l;
        }
        if(isTop(position, w_w, w_h, d_w, d_h)||isBottom(position, w_w, w_h, d_w, d_h)){
          decoration.y = -1*decoration.y;
        }
        if(isBottom(position, w_w, w_h, d_w, d_h)){
          position.top = max_t;
        }
        //that.css({left:position.left, top:position.top});
        that.stop().animate({left:position.left, top:position.top}, time);//改用jquery动画函数使其更加平滑
        mvtid = setTimeout(move, time);//递归调用,使飘窗连续运动
      }
      move();//触发动作
      that.on('mouseenter', function(){ clearTimeout(mvtid) });//添加鼠标事件
      that.on('mouseleave', function(){ move() });
    });
  }; //end plugin definition
}(jQuery);

2、接口获取悬浮框相关的数据

http("POST", "/School/detail", {"id":s_id}, function (e) {
     
        vm.piaoc = e.data;
        vm.$nextTick(function () {
            $('.automv').autoMove({angle:-Math.PI/4, speed:50});
            $("body").on("click",".automv span",function(){
                $(this).parent().find("a").removeAttr("href");
                $(this).parent().hide();
            })
        })
    })

3、html页面引入相关html代码

<template v-if="piaoc != null">
      <template v-if="piaoc.is_open_float_win == '1'">
                <div class="automv" :style="'display: block;height:'+piaoc.open_float_height+';width:'+piaoc.open_float_width">
                    <span>×</span>
                    <a :href="piaoc.open_float_url" rel="external nofollow" >
                        <template v-if="piaoc.open_float_image">
                            <img :src="piaoc.open_float_image_name+'!y'" alt="">
                        </template>
                        <template v-else>
                            <img src="../image/piaochuang.jpg" alt="">
                        </template>
                    </a>
                </div>
            </template>
            <template v-else>
                <div class="automv" style="display: none;"></div>
      </template>
</template>

4、相关悬浮框的css

.automv{
    width: 200px;
    height: 150px;
    z-index: 1032;
    position: relative;
}
.automv a{
    display: block;
    width: 100%;
    height: 100%;
}
.automv a img{
    width: 100%;
    height: 100%;
}
.automv span{
    position: absolute;
    right: 3px;
    top: 3px;
    font-size: 26px;
    color: #fff;
    cursor: pointer;
    display: block;
    width: 20px;
    height: 20px;
    line-height: 20px;
    text-align: center;
}
.automv:hover span{
    color: #fc87a3;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)

    jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)

    实现弹出遮罩层的方法有很多种,接下来本文给大家介绍通过jquery操作dom实现弹出页面遮罩层以及web端和移动阻止遮罩层的滑动,对页面弹出遮罩层的相关知识感兴趣的朋友一起看看吧
    2016-08-08
  • jQuery实现的选择商品飞入文本框动画效果完整实例

    jQuery实现的选择商品飞入文本框动画效果完整实例

    这篇文章主要介绍了jQuery实现的选择商品飞入文本框动画效果,结合完整实例形式分析了jQuery动态操作页面元素属性实现动画效果的方法,涉及jQuery的事件绑定、元素遍历及属性操作等相关技巧,需要的朋友可以参考下
    2016-08-08
  • jQuery页面元素动态添加后绑定事件丢失方法,非 live

    jQuery页面元素动态添加后绑定事件丢失方法,非 live

    这篇文章主要介绍了jQuery页面元素动态添加后绑定事件丢失方法,非 live 的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06
  • Jquery实战_读书笔记2 选择器

    Jquery实战_读书笔记2 选择器

    jQuery相对于其他的javascript框架优秀的特点之一就是元素选择功能,通过简单的一条件语句可以查询一些复杂的元素
    2010-01-01
  • Jquey拖拽控件Draggable使用方法(asp.net环境)

    Jquey拖拽控件Draggable使用方法(asp.net环境)

    使用时首先依次引用Jquery,Jquery-Ui ,Draggable三个Js。然后在js中编写相应的代码,相关代码说明请看程序中的注释。
    2010-09-09
  • jQuery unbind()方法实例详解

    jQuery unbind()方法实例详解

    这篇文章主要介绍了jQuery unbind()方法,结合实例形式详细分析了unbind方法解除绑定的使用技巧,需要的朋友可以参考下
    2016-01-01
  • jquery实现图片随机排列的方法

    jquery实现图片随机排列的方法

    这篇文章主要介绍了jquery实现图片随机排列的方法,涉及jQuery操作图片的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • 单元选择合并变色示例代码

    单元选择合并变色示例代码

    这篇文章主要介绍了如何实现单元选择合并变色,感觉还不错的一个小功能,大家可以学习下
    2014-05-05
  • jQuery链使用指南

    jQuery链使用指南

    这篇文章主要介绍了jQuery链使用方法,以及用哪些方法尅控制jQuery链,非常的详细,需要的朋友可以参考下
    2015-01-01
  • 收集的10个免费的jQuery相册

    收集的10个免费的jQuery相册

    或许在网络上你已经见过数百种通过jQuery实现的相册,但是我们发现的这些相册,他们有额外的东西,优雅和独特的创意!每个相册都是可在线预览和免费下载的。你可以为你的Web项目添加色彩。
    2011-02-02

最新评论