zoukankan      html  css  js  c++  java
  • 图片滚动

    html代码:

     1 <div class="imgDiv">
     2                 <volist name="locationInfo" id="locationInfoItem">
     3                 <div class="imgDivChild" id="locationInfoItem{$i}">
     4                     <a target="_blank" href="{$locationInfoItem.jump_url}">
     5                         <img class="src_img" src="{$locationInfoItem.attach_id}" />
     6                     </a>
     7                     <php>if ($locationInfoItem['rtype'] != 'activity') {</php>
     8                     <div class="titleBlackBox">
     9                         <h1><a target="_blank" href="{$locationInfoItem.jump_url}">{$locationInfoItem.lname}</a></h1>
    10                         <span>人气:{$locationInfoItem.like_count|default="0"}</span>
    11                     </div>
    12                     <div class="titleBlackBoxBg">
    13                         <!--<h1 style="color: #000; font-size: 30px; font-weight: bold; margin-left: 13px; margin-top: 11px; font-family: 微软雅黑;"><a style="color: #000;font-family: 微软雅黑;font-size: 30px;font-weight: bold;" target="_blank" href="<php> echo U('location/Location/detail',array('id'=>$locationInfoItem['location_id']));</php>">{$locationInfoItem.lname}</a></h1>
    14                         <span style="color: #000; margin-top: 10px; margin-left: 15px; font-size: 14px; font-family: 微软雅黑;">人气:{$locationInfoItem.like_count|default="0"}</span>-->
    15                     </div>
    16                     <php>}</php>
    17                     <php>if($locationInfoItem['recommend_type'] == '1'){</php>
    18                         <php>if ($locationInfoItem['alt']){</php>
    19                         <div class="mainTipsBlackBox">
    20                             <h1>{$locationInfoItem.alt}</h1>
    21                             <php>if ($locationInfoItem['rtype'] != 'activity'){</php>
    22                             <a target="_blank" href="<php>echo U('search/Search/home')</php>">[看其他城市]</a>
    23                             <php>}</php>
    24                         </div>
    25                         <div class="mainTipsBlackBoxBg" style="top:380px; height:20px;"></div>
    26                         <php>} else {</php>
    27                         <div class="mainTipsBlackBoxBg" style="top:380px; height:20px;"></div>
    28                         <php>}</php>
    29                     <php>} else {</php>
    30                     <div class="mainTipsBlackBox">
    31                         <h1>{$strRand}</h1>
    32                         <a target="_blank" href="<php>echo U('search/Search/home')</php>">[看其他城市]</a>
    33                     </div>
    34                     <div class="mainTipsBlackBoxBg" style="top:380px; height:20px;"></div>
    35                     <php>}</php>
    36                 </div>
    37                 </volist>
    38             </div>
    39             <ul class="triBtn">
    40                 <li class="f activeSlide">01</li>
    41                 <li>02</li>
    42                 <li>03</li>
    43                 <li>04</li>
    44                 <li class="l">05</li>
    45             </ul>

    div为imgDiv中的是图片循环的,图片没有大小,可以用预加载模式算出图片大小的。

     1 function loadImage(url, callback, index) {
     2     var img = new Image();
     3     img.src = url;
     4     
     5     if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
     6         callback.call(img, index);
     7         return; // 直接返回,不用再处理onload事件
     8     }
     9     
    10     img.onload = function() {//图片下载完毕时异步调用callback函数。
    11         callback.call(img, index);// 将callback函数this指针切换为img。
    12         img.onload = null;
    13     };
    14 }
    15 
    16 function imgLoaded(index) {
    17     var imgWidth = this.width;
    18     imgWidth = imgWidth ? imgWidth : 604;
    19     var imgHeight = this.height;
    20     imgHeight = imgHeight ? imgHeight : 395;
    21 
    22     var scaleWidth = 604;
    23     var scaleHeight = 395;
    24     var scale = scaleWidth / imgWidth;
    25 
    26     if (scale < (scaleHeight / imgHeight)) {
    27         scale = scaleHeight / imgHeight;
    28     }
    29 
    30     if (scale <= 1) {    //不用缩放            
    31     } else {
    32         if (imgWidth * scale >= scaleWidth) {
    33             imgWidth = parseInt(imgWidth * scale);
    34             imgHeight = scaleHeight;
    35         } else {
    36             imgWidth = scaleWidth;
    37             imgHeight = parseInt(imgHeight * scale);
    38         }
    39     }
    40 
    41     var $img = $('.imgDiv').find('.imgDivChild').eq(index).find('.src_img').eq(0);
    42     $img.css({imgWidth, height:imgHeight});
    43 }

    循环算出图片的大小:

    1 //调整图片宽度
    2     $('.box2 .imgDiv .imgDivChild').each(function(index){
    3         var $img = $(this).find('img.src_img').eq(0);
    4         loadImage($img.attr('src'), imgLoaded, index);
    5     });

    然后滚动:

    滚动运用的插件是jquery.cycle.js插件:

    先要引入该js,然后js中的代码调用:

     1 $('.box2 .imgDiv').cycle({
     2         fx: 'fade',
     3         speed: 1000,
     4         timeout: 7000,
     5         pause: 1,
     6         pauseOnPagerHover:  1,
     7         pager: $pager,
     8         pagerAnchorBuilder: function(idx, slide) {    
     9             return '.triBtn li:eq(' + idx + ')';
    10         },
    11         pagerEvent: 'mouseenter.cycle',
    12         before: function(curr, next, opts) {
    13             if (firstScroll) {
    14                 setTimeout(function(){
    15                     imgScroll($('.imgDiv').find('.imgDivChild').eq(0).find('.src_img').eq(0));
    16                 }, 10)
    17             }
    18             firstScroll = false;
    19         },
    20         after: function(curr, next, opts) {
    21             var $img = $(this).find('img.src_img').eq(0);
    22             imgScroll($img);
    23         }
    24     });

    每一张图片大小超过dv的大小,内部滚动代码:

     1 var intervalFlag = false;
     2     function imgScroll($obj) {
     3         var $img = $obj;
     4         var height = $img.height();
     5         var witdh = $img.width();
     6         var diffTop = -(height - 395);
     7         var diffLeft = -(witdh - 604);
     8         var curLeft = $img[0].style.marginLeft;
     9         var curTop = $img[0].style.marginTop;
    10         
    11         if(!curLeft) curLeft = 0;
    12         if(!curTop) curTop = 0;
    13         
    14         if (witdh > 604) {
    15             if (height > 395) {    //如果高度大于395
    16                 if((curLeft == diffLeft + "px") && (curTop == diffTop + "px")){
    17                     $img.animate({marginLeft:'0px'}, 7000,function(){    //向右移
    18                         $img.animate({marginTop:'0px'}, 7000, function(){    //再向下移
    19                             if(intervalFlag) imgScroll($obj);
    20                         });
    21                     });
    22                 } else if((curLeft == diffLeft + "px") && (curTop != diffTop + "px")) {
    23                     $img.animate({marginTop:diffTop+'px'}, 7000, function(){    //向下移
    24                         if(intervalFlag) imgScroll($obj);
    25                     });    
    26                 } else if((curLeft != diffLeft + "px") && (curTop = diffTop + "px")) {
    27                     $img.animate({marginLeft:diffLeft+'px'}, 7000, function() {    //向左移
    28                         if(intervalFlag) imgScroll($obj);
    29                     });
    30                 } else {
    31                     $img.animate({marginLeft:diffLeft+'px'}, 7000,function(){    //向右移
    32                         $img.animate({marginTop:diffTop+'px'}, 7000, function(){    //再向下移
    33                             if(intervalFlag) imgScroll($obj);
    34                         });
    35                     });
    36                 }
    37             } else {
    38                 if(curLeft == diffLeft + "px") {
    39                     $img.animate({marginLeft:'0px'}, 7000, function(){
    40                         if(intervalFlag) imgScroll($obj);
    41                     });
    42                 } else {
    43                     $img.animate({marginLeft:diffLeft+'px'}, 7000, function(){
    44                         if(intervalFlag) imgScroll($obj);
    45                     });
    46                 }
    47             }
    48         } else {
    49             if (height > 395) {    //如果高度大于395
    50                 if (curTop == diffTop + "px") {
    51                     $img.animate({marginTop:'0px'}, 7000, function(){
    52                         if(intervalFlag) imgScroll($obj);
    53                     });
    54                 } else {
    55                     $img.animate({marginTop:diffTop+'px'}, 7000, function(){
    56                         if(intervalFlag) imgScroll($obj);
    57                     });
    58                 }
    59             }
    60         }
    61         
    62     }

     针对滚动的图片还要加上其他事件的话,用jquery中的live方法:

    $("ul.triBtn li,.src_img").live("mouseover", function(){
            intervalFlag = true;
        });
        $("ul.triBtn li,.src_img").live("mouseout", function(){
            intervalFlag = false;
        });
  • 相关阅读:
    jquery 操作单选框,复选框,下拉列表实现代码
    使用NewtonSoft.JSON.dll来序列化和发序列化对象
    c# HttpWebRequest与HttpWebResponse 绝技
    从新浪微博的改版谈网页重构
    选择GET还是POST?
    ckeditor3.0.1上传图片功能
    EM算法入门相关文章翻译与总结3
    EM算法入门相关文章翻译与总结2
    EM算法入门相关文章翻译与总结1
    PLSA中的EM算法
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3412766.html
Copyright © 2011-2022 走看看