CSS+JS实现图片集展示(二)

题目与上面的两篇文章有所重复,但是内容与上两篇上有所区别,本文中,实现的图片集展示的效果为:

1、详细图和缩略图的同步展示;

2、图片的自动播放;

3、显示图片的缩影图的焦点显示与别的图片的遮盖显示;

4、鼠标移动至详图显示图片控制控件。

具体效果图如下:

初始化或者第一张状态

中间状态

最后一张状态

这种方式的图片展示一般用的图片新闻或者类似的东西中比较常见,例如百度首页的新闻就是用类似的方式来展示的,如下:

百度首页新闻

下面将我实现的代码贴出来,以供大家参考。

1、showimg.css

html, body{
    height: 100%;
    margin: 0;
    padding: 0;
    text-align: center;
}
#prev{
    position: absolute;
    top: 125px;
    left: 0px;
    width: 45px;
    height: 50px;
    background: url(../img/prev.png);
}
#next{
    position: absolute;
    top: 125px;
    right: 0px;
    width: 45px;
    height: 50px;
    background: url(../img/next.png);
}
#prev:hover,#next:hover{
    cursor: pointer;
}
.detail-div{
    position: relative;
    display:inline-block;
    padding:4px;
    margin:0 0.5rem 1rem 0.5rem 1rem;
    line-height:0;
    -webkit-transition:background-color 0.1s ease-out;
    -moz-transition:background-color 0.1s ease-out;
    -o-transition:background-color 0.1s ease-out;
    transition:background-color 0.1s ease-out;
    -webkit-border-radius:6px;
    -moz-border-radius:6px;
    -ms-border-radius:6px;
    -o-border-radius:6px;
    border-radius:6px;
}
.thumb-div{
    position: absolute;
    bottom: -110px;
    left: 4px;
    background: #555;
}
.thumb{
    margin-left: 7px;
    margin-top: 5px;
    margin-bottom: 5px;
    float: left;
    position: relative;
}
.thumb-img{
    -webkit-border-radius:5px;
    -moz-border-radius:5px;
    -ms-border-radius:5px;
    -o-border-radius:5px;
    border-radius:5px
}
.thumb-active{
    border: 2px solid #fff;
    -webkit-border-radius:5px;
    -moz-border-radius:5px;
    -ms-border-radius:5px;
    -o-border-radius:5px;
    border-radius:5px;
    height: 100px;
}
.thumb-modal{
    background: #141414;
    opacity: 0.5;
    filter:alpha(opacity=50);
    position: absolute;
    left: 0px;
    bottom: 2px;
    -webkit-border-radius:5px;
    -moz-border-radius:5px;
    -ms-border-radius:5px;
    -o-border-radius:5px;
    border-radius:5px;
}
.thumb-modal-hide{
    display: none;
}

2、juqery.showimg.js

(function($){
    $.fn.showImg = function(options){
        var defaults = {};
        var options = $.extend(defaults, options);
        var container=$(this);
        var imgUrls = options.imgUrls;
        var width = options.width,height = options.height,thumbHeight = options.thumbHeight;
        var autoPlay = options.autoplay;

        container.css("width",width+"px");

        var imgIndex = 1,length = imgUrls.length;
        var play;

        /**
         * 图片详情
         */
        var detailDiv = $("<div></div>").addClass("detail-div").appendTo(container);

        var ctrlDiv = $("<div></div>").appendTo(detailDiv).hide();
        var prevA = $("<a></a>").attr("id","prev").appendTo(ctrlDiv).hide(),
            nextA = $("<a></a>").attr("id","next").appendTo(ctrlDiv);

        $(".detail-div").live("mouseenter",function(){
            play = clearInterval(play);
            ctrlDiv.show();
        });
        $(".detail-div").live("mouseleave",function(){
            play = setInterval(playImg,3000);
            ctrlDiv.hide();
        });

        var detailImgA = $("<a></a>").appendTo(detailDiv);
        var detailImg = $("<img />").attr("id","detailImg")
            .attr("width",width)
            .attr("height",height)
            .attr("src","img/demopage/image-"+imgIndex+".jpg")
            .appendTo(detailImgA);

        /**
         * 缩影图片
         */
        var thumbDiv = $("<div></div>").addClass("thumb-div")
            .appendTo(container)
            .css("width",width+"px");
        addThumbImgs();

        prevA.on("click",function(){
            imgCtrlFun("prev");
        });
        nextA.on("click",function(){
            imgCtrlFun("next");
        });

        if(autoPlay){
            play = setInterval(playImg,3000);
        }
        function playImg(){
            if(imgIndex===length){
                imgIndex=0;
            }
            nextA.click();
        }
        /**
         * 图片控制
         * @param type
         */
        function imgCtrlFun(type){
            if(type==="prev"){
                if(imgIndex>1){
                    imgIndex= imgIndex-1;
                }
            }
            else{
                if(imgIndex<length){
                    imgIndex= imgIndex+1;
                }
            }
            $("#detailImg").attr("src","img/demopage/image-"+imgIndex+".jpg");
            thumbDiv.html("");
            addThumbImgs();
            if(imgIndex===length){
                $("#next").hide();
            }
            else{
                $("#next").show();
            }
            if(imgIndex===1){
                $("#prev").hide();
            }
            else{
                $("#prev").show();
            }
        };
        /**
         * 添加图片缩影
         */
        function addThumbImgs(){
            var thumbWidth = width/3-10;
            for(var i=imgIndex-2;i<imgIndex+1;i++){
                var thumb = $("<div></div>").addClass("thumb").appendTo(thumbDiv);
                var thumbModalDiv = $("<div></div>").addClass("thumb-modal").appendTo(thumb);
                thumbModalDiv.css("height",thumbHeight+"px")
                    .css("width",thumbWidth+"px");
                var thumbImg = $("<img />").attr("id","thumb"+(i+1))
                    .attr("width",thumbWidth)
                    .attr("height",thumbHeight)
                    .addClass("thumb-img")
                    .appendTo(thumb);
                if(!(i<0)){
                    thumbImg.attr("src",imgUrls[i]);
                }
                if(i===imgIndex-1){
                    thumb.addClass("thumb-active");
                    thumbModalDiv.addClass("thumb-modal-hide");
                }
            }
        };
    }
})(jQuery);

3、index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Image List</title>
    <link rel="stylesheet" href="css/showimg.css">
    <style>
        .container{
            position: relative;
            text-align: center;
            margin-left: 25%;
        }
    </style>
    <script src="js/jquery-1.8.3.js"></script>
    <script src="js/jquery.showimg.js"></script>
    <script>
        var imgUrls = new Array(
            "img/demopage/image-1.jpg",
            "img/demopage/image-2.jpg",
            "img/demopage/image-3.jpg",
            "img/demopage/image-4.jpg",
            "img/demopage/image-5.jpg"
        );
        $(document).ready(function (){
            $('#container').showImg({
                imgUrls:imgUrls,
                width:600,
                height:300,
                thumbHeight:100,
                autoplay:true
            });
        });
    </script>
</head>
<body>
<div id="container" class="container"></div>
</body>
</html>

思路很简单,我相信大家看完代码就知道是什么思路,希望对大家有所帮助,抛砖引玉。

下载地址

如有疑问,请联系:

QQ:1004740957

Emai:[email protected]

时间: 2024-10-14 22:19:33

CSS+JS实现图片集展示(二)的相关文章

CSS+JS实现图片集展示(续)

上一篇文章里,我们实现了图片集的展示,在本文,对上一篇文章的内容作了封装,实现效果上作了一些优化,具体的思路我就不再赘述,下面将我的代码贴出来,以供搭建参考. 1.imglist.css html, body, .modal-bg { height: 100%; margin: 0; padding: 0; font-size: 13px; font-weight: bold; color: #fff; } .modal-bg{ position: absolute; left: 0px; to

CSS+JS实现图片集展示

首先,说说实现的效果: 1.图片的展示与翻页: 2.点击图片放大图片. 实现的效果如下所示: 初始化和第一张 中间的图片 最后一张图片 单击放大显示图片详细与信息 实现的内容很简单,是常规图片的展示方式,下面说说我的实现思路. 1.图片的展示与翻页 a.图片展示 图片展示是通过<img />标签实现的: <div class="container">     <div class="image-list">         <

arcgis api for js入门开发系列二不同地图服务展示(含源代码)

上一篇介绍了arcgis api离线部署,这篇开始正式介绍arcgis api for js开发:想要学习webgis开发,首先得熟悉了解前端技术,比如界面布局设计的html+css,核心的是javascript(js),arcgis api就是js写的,就是说想要开发gis功能前提下,你得熟悉了解js,不然你连源代码都看不懂.在这里,推荐esri官网的arcgis api for js:https://developers.arcgis.com/javascript/3/jsapi/:里面详细

Node.js静态页面展示例子2

例程下载:https://files.cnblogs.com/files/xiandedanteng/nodejsStaticHtmlSample.rar 页面效果: Html页面代码(注意用文本编辑器如Editplus3保存文件时要指定编码为UTF-8,否则容易出现乱码): <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type" content="

HTML/CSS/JS编码规范

最近整理了一份HTML/CSS/JS编码规范,供大家参考.目录:一.HTML编码规范二.CSS编码规范三.JS编码规范 一.HTML编码规范 1. img标签要写alt属性 根据W3C标准,img标签要写alt属性,如果没有就写一个空的.但是一般要写一个有内容的,根据图片想要表达的意思,因为alt是在图片无法加载时显示的文字.如下不太好的写法: <img src="company-logo.svg" alt="ABC Company Logo"> 更好的

从零开始学JAVA(08)-使用SpringMVC4 Restful 风格引用静态文件 css/js/png

在写完helloworld后想给网页加点样式(*.css),结果怎么也显示不了,百度了很多种方法后试行尝试,试验成功并记录下来,方便以后查看. 时隔两年,继续学习JAVA,太久没学了,忘记得差不多,还好以前写的helloworld,还能用. 一.关于开发环境 eclipse-jee-neon-1a-win32 Jdk 1.8u112 (32位版本) SpringMVC 4.3.4.RELEASE apache-tomcat-8.5.8 二.helloworld.jsp文件中的引用的样式表为 st

CSS+JS下拉菜单和纯CSS下拉菜单

一.CSS+JS下拉菜单 原理:一级菜单的li中包含二级菜单ul.在鼠标没有移上去时,二级菜单的ul是display:none的状态,鼠标一移上去变成display:block.改变这个display属性值是通过JS来实现.鼠标hover时,把整个二级菜单的ul给display出来,用到的事件onmouseonver.鼠标移出又把整个二级菜单的ul 给隐藏掉. nav-js.html文件 <!DOCTYPE html > <html> <head> <meta c

用html+css+js实现选项卡切换效果

文章转载自:http://tongling.github.io/JSCards/ 用html+css+js实现选项卡切换效果 使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安家东三环 北京首现零首付楼盘 53万购东5环50平 京楼盘直降5000 中信府 公园楼王现房 家居: 40平出租屋大改造 美少女的混搭小窝 经典清新简欧爱家 90平老房焕发新生 新中式的酷色温情 66平撞色活泼家居

纯css+js下拉菜单实例代码

纯css+js下拉菜单实例代码 分享一个css+js下拉菜单代码,js+css实现的简单下拉菜单,兼容性不错. 例子:<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <