CSS+JS实现图片集展示

首先,说说实现的效果:

1、图片的展示与翻页;

2、点击图片放大图片。

实现的效果如下所示:

初始化和第一张

中间的图片

最后一张图片

单击放大显示图片详细与信息

实现的内容很简单,是常规图片的展示方式,下面说说我的实现思路。

1、图片的展示与翻页

a、图片展示

图片展示是通过<img />标签实现的:

<div class="container">
    <div class="image-list">
        <div id="prev" onclick="updateImage('prev')"></div>
        <a id="img1" class="thumb-a" onclick="showImg(1)">
            <img class="thumb-img" width="200" height="150" src="img/demopage/thumb-1.jpg" alt="" />
        </a>
        <a  id="img2" class="thumb-a thumb-a-hide" onclick="showImg(2)">
            <img class="thumb-img" width="200" height="150" src="img/demopage/thumb-2.jpg" alt="" />
        </a>
        <a  id="img3" class="thumb-a thumb-a-hide" onclick="showImg(3)">
            <img class="thumb-img" width="200" height="150" src="img/demopage/thumb-3.jpg" alt="" />
        </a>
        <div id="next"  onclick="updateImage('next')"></div>
    </div>
</div>

b、翻页

翻页是通过updateImage这个函数实现的,传递参数为type,判断操作时“上一张”还是“下一张”,updateImage函数如下:

        function updateImage(type){
            if(type==="prev"){
                if(imgIndex>1){
                    imgIndex=imgIndex-1;
                }
            }
            else{
                if(imgIndex<3){
                    imgIndex=imgIndex+1;
                }
            }
            for(var i=0;i<3;i++){
                $("#img"+(i+1)).addClass("thumb-a-hide");
            }
            $("#img"+imgIndex).removeClass("thumb-a-hide");

            if(imgIndex===3){
                $("#next").hide();
            }
            else{
                $("#next").show();
            }
            if(imgIndex===1){
                $("#prev").hide();
            }
            else{
                $("#prev").show();
            }
        };

函数中,imgIndex记录的是当前显示的图片的编号。

①、判断操作类型,并设置操作后的图片的编号。

②、循环添加thumb-a-hide样式,隐藏所有的图片,并移除图片编号为imgIndex的thumb-a-hide样式,显示图片;

③、根据imgIndex判断操作按钮的显示与隐藏。

2、点击显示图片详情与信息

该效果通过函数showImg实现,showImg的具体内容如下:

        function showImg(index){
            var width=600,height=400;
            var winWidth = $(window).width(),winHeight = $(window).height();
            var modalBg = $("<div></div>");
            modalBg.addClass("modal-bg");
            modalBg.appendTo($('body'));
            var modal = $("<div></div>");
            modal.addClass("modal");
            modal.css("position","absolute")
                 .css("top",(winHeight-height)/2+"px")
                 .css("left",(winWidth-width)/2+"px");
            var titleTipsBg = $("<div></div>").addClass("tips-bg");
            var titleTips = $("<a></a>").addClass("tips").html("I am a Chinese.");
            var titleClose =  $("<a></a>").addClass("close");
            var title = $("<div></div>");
            title.addClass("title");
            title.append(titleTipsBg)
                 .append(titleTips)
                 .append(titleClose);
            titleClose.on("click",function(){
                modalBg.hide();
                modal.hide();
            });
            title.appendTo(modal);
            var img = $("<img>").attr("width",width)
                                 .attr("height",height)
                                 .attr("src","img/demopage/image-"+index+".jpg");
            var imgDiv = $("<div></div>").append(img);
            imgDiv.appendTo(modal);
            modal.appendTo($('body'));
        }

上述代码生成Html代码之后如下:

<div class="modal-bg"></div>
<div class="modal" style="position: absolute; top: 270px; left: 540px;">
	<div class="title">
		<div class="tips-bg"></div>
		<a class="tips">I am a Chinese.</a>
		<a class="close"></a>
	</div>
	<div>
		<img width="600" height="400" src="img/demopage/image-1.jpg">
	</div>
</div>

其实是创建了一个模态层来显示放大图片。

上面,涉及到的CSS样式内容如下:

    <style type="text/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;
            top: 0px;
            width: 100%;
            background: #48525e;
            opacity: 0.4;
            z-index: 10;
        }
        .modal{
            position: relative;
            z-index: 99;
            opacity: 1;
            top: 15%;
            left: 40%;
            width: 600px;
            height: 400px;
        }
        .modal .title .tips-bg{
            position: absolute;
            bottom: 0px;
            left: 0px;
            background: #48525e;
            width: 100%;
            height: 50px;
            opacity: 0.8;
        }
        .modal .title .tips{
            position: absolute;
            bottom: 13px;
            left: 10px;
            font-family: "Arial";
            font-weight: bold;
            font-size: 20px;
        }
        .modal .title .close{
            background: url(img/close.png) no-repeat;
            width: 27px;
            height: 27px;
            position: absolute;
            top: 5px;
            right: 5px;
        }
        .modal .title .close:hover{
            cursor: pointer;
        }
        .container{
            position: absolute;
            top: 200px;
            text-align: center;
            width: 100%;
            z-index: 5;
        }
        .image-list{
            width:300px;
            margin-left: 40%;
            position: relative;
        }
        #prev{
            display: none;
            position: absolute;
            top: 55px;
            left: 35px;
            float: left;
            width: 45px;
            height: 50px;
            background: url(img/prev.png);
        }
        #next{
            position: absolute;
            top: 55px;
            right: 40px;
            width: 45px;
            height: 50px;
            background: url(img/next.png);
        }
        #prev:hover,#next:hover{
            cursor: pointer;
        }
        .thumb-a{
            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-a:hover{
            background-color:#4ae;
            cursor: pointer;
        }
        .thumb-a-hide{
            display: none;
        }
        .thumb-img{
            -webkit-border-radius:5px;
            -moz-border-radius:5px;
            -ms-border-radius:5px;
            -o-border-radius:5px;
            border-radius:5px
        }
    </style>

至此,图片集显示就完成了,完整html代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Image List</title>
    <style type="text/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;
            top: 0px;
            width: 100%;
            background: #48525e;
            opacity: 0.4;
            z-index: 10;
        }
        .modal{
            position: relative;
            z-index: 99;
            opacity: 1;
            top: 15%;
            left: 40%;
            width: 600px;
            height: 400px;
        }
        .modal .title .tips-bg{
            position: absolute;
            bottom: 0px;
            left: 0px;
            background: #48525e;
            width: 100%;
            height: 50px;
            opacity: 0.8;
        }
        .modal .title .tips{
            position: absolute;
            bottom: 13px;
            left: 10px;
            font-family: "Arial";
            font-weight: bold;
            font-size: 20px;
        }
        .modal .title .close{
            background: url(img/close.png) no-repeat;
            width: 27px;
            height: 27px;
            position: absolute;
            top: 5px;
            right: 5px;
        }
        .modal .title .close:hover{
            cursor: pointer;
        }
        .container{
            position: absolute;
            top: 200px;
            text-align: center;
            width: 100%;
            z-index: 5;
        }
        .image-list{
            width:300px;
            margin-left: 40%;
            position: relative;
        }
        #prev{
            display: none;
            position: absolute;
            top: 55px;
            left: 35px;
            float: left;
            width: 45px;
            height: 50px;
            background: url(img/prev.png);
        }
        #next{
            position: absolute;
            top: 55px;
            right: 40px;
            width: 45px;
            height: 50px;
            background: url(img/next.png);
        }
        #prev:hover,#next:hover{
            cursor: pointer;
        }
        .thumb-a{
            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-a:hover{
            background-color:#4ae;
            cursor: pointer;
        }
        .thumb-a-hide{
            display: none;
        }
        .thumb-img{
            -webkit-border-radius:5px;
            -moz-border-radius:5px;
            -ms-border-radius:5px;
            -o-border-radius:5px;
            border-radius:5px
        }
    </style>
    <script src="js/jquery-1.8.3.js"></script>
    <script>
        var imgIndex = 1;
        function showImg(index){
            var width=600,height=400;
            var winWidth = $(window).width(),winHeight = $(window).height();
            var modalBg = $("<div></div>");
            modalBg.addClass("modal-bg");
            modalBg.appendTo($('body'));
            var modal = $("<div></div>");
            modal.addClass("modal");
            modal.css("position","absolute")
                 .css("top",(winHeight-height)/2+"px")
                 .css("left",(winWidth-width)/2+"px");
            var titleTipsBg = $("<div></div>").addClass("tips-bg");
            var titleTips = $("<a></a>").addClass("tips").html("I am a Chinese.");
            var titleClose =  $("<a></a>").addClass("close");
            var title = $("<div></div>");
            title.addClass("title");
            title.append(titleTipsBg)
                 .append(titleTips)
                 .append(titleClose);
            titleClose.on("click",function(){
                modalBg.hide();
                modal.hide();
            });
            title.appendTo(modal);
            var img = $("<img>").attr("width",width)
                                 .attr("height",height)
                                 .attr("src","img/demopage/image-"+index+".jpg");
            var imgDiv = $("<div></div>").append(img);
            imgDiv.appendTo(modal);
            modal.appendTo($('body'));
        }
        function updateImage(type){
            if(type==="prev"){
                if(imgIndex>1){
                    imgIndex=imgIndex-1;
                }
            }
            else{
                if(imgIndex<3){
                    imgIndex=imgIndex+1;
                }
            }
            for(var i=0;i<3;i++){
                $("#img"+(i+1)).addClass("thumb-a-hide");
            }
            $("#img"+imgIndex).removeClass("thumb-a-hide");

            if(imgIndex===3){
                $("#next").hide();
            }
            else{
                $("#next").show();
            }
            if(imgIndex===1){
                $("#prev").hide();
            }
            else{
                $("#prev").show();
            }
        };
    </script>
</head>
<body>
<div class="container">
    <div class="image-list">
        <div id="prev" onclick="updateImage('prev')"></div>
        <a id="img1" class="thumb-a" onclick="showImg(1)">
            <img class="thumb-img" width="200" height="150" src="img/demopage/thumb-1.jpg" alt="" />
        </a>
        <a  id="img2" class="thumb-a thumb-a-hide" onclick="showImg(2)">
            <img class="thumb-img" width="200" height="150" src="img/demopage/thumb-2.jpg" alt="" />
        </a>
        <a  id="img3" class="thumb-a thumb-a-hide" onclick="showImg(3)">
            <img class="thumb-img" width="200" height="150" src="img/demopage/thumb-3.jpg" alt="" />
        </a>
        <div id="next"  onclick="updateImage('next')"></div>
    </div>
</div>
</body>
</html>

如有疑问请联系:

QQ:1004740957

Emai:[email protected]

时间: 2024-10-12 20:44:51

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

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

题目与上面的两篇文章有所重复,但是内容与上两篇上有所区别,本文中,实现的图片集展示的效果为: 1.详细图和缩略图的同步展示: 2.图片的自动播放: 3.显示图片的缩影图的焦点显示与别的图片的遮盖显示: 4.鼠标移动至详图显示图片控制控件. 具体效果图如下: 初始化或者第一张状态 中间状态 最后一张状态 这种方式的图片展示一般用的图片新闻或者类似的东西中比较常见,例如百度首页的新闻就是用类似的方式来展示的,如下: 百度首页新闻 下面将我实现的代码贴出来,以供大家参考. 1.showimg.css

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

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"> 更好的

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

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

CSS &amp; JS 制作滚动幻灯片

==================纯CSS方式==================== <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> * { padding: 0px; margin: 0px; } .show-box { height: 80

html+css+js实现复选框全选与反选

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <title>html+css+js实现复选框全选与反选</title> 5 <meta http-equiv="content-type&qu

如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件

有网友碰到过这样的问题:如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件,问题详细内容为: 如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件 ? ,我搜你通过互联网收集了相关的一些解决方案,希望对有过相同或者相似问题的网友提供帮助,具体如下: 解决方案1: /.*\.(?:(?!(jpg|css|js|html|htm|png)).)+/ --- 共有 3 条评论 --- 皮总find . -ty

WordPress引入css/js方法总结

WordPress引入css/js方法很多,条件很多.如何全局加载,或仅在某些页面精准加载,什么时候需要先注册脚本再加载,本文希望找到最简单的方式,并给出探索更多方法的途径. 在前台加载css/js 用wp_enqueue_script()函数加载js,用wp_enqueue_style()加载css,加载资源的位置(action)只有一个——wp_enqueue_scripts. 用wp_enqueue_系列函数可以更好的处理脚本样式表的依赖关系,防止重复加载,以twentyfifteen主题