项目中自己diy了一个图片查看器。因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮。等以后有时间了在重写一下样式和封装,作为备用的只是积累吧。如果有童鞋有用到,完全可以在此基础上改,比较容易,代码也比较简单
图片查看器主要有几个功能:
1.显示图片和图片信息(图片名称、发布者等等)
2.切换图片
3.关闭图片查看器
初始化接口函数pictureViewer.init: function(picInfos,tapNumber,isBig)
picInfos: 传入图片组信息,必须,格式如下
var picInfos = [
{
\"url\" : \"default.png\",
\"data\": [
{
\"key\":\"名称:\",
\"value\":\"测试图片\"
},
{
\"key\":\"发布者:\",
\"value\":\"chua\"
}
]
},
{
\"url\" : \"test.jpeg\",
\"data\": [
{
\"key\":\"名称\",
\"value\":\"测试图片\"
},
{
\"key\":\"发布者:\",
\"value\":\"发大水发大水发顺风h\"
},
{
\"key\":\"这个图片的其他信息\",
\"value\":\"vsfsgsdgfds234323424\"
}
]
},
...
] //传入参数的样式
tapNumber: 要显示的图片在图片列表中的索引,必须,从0开始
isBig:是否使用大图查看,默认是false,可选
html及css源码如下(后面有一个例子)
<!DOCTYPE html>
<html lang=\"ch-cn\">
<head>
<meta charset=\"utf-8\">
<script type=\"text/javascript\" src=\'jquery-1.9.1.js\'></script>
<link rel=\"stylesheet\" type=\"text/css\" href=\"imgTap.css\">
<script type=\"text/javascript\" src=\'imgTap.js\'></script>
<style type=\"text/css\">
html,body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td{
margin: 0;
padding:0;
}
*{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body{
font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;
}
.imgTapDetail {
display: none;
position: absolute;
z-index: 2000;
top: 0;
width: 100%;
height: 100%;
background: none transparent scroll repeat 0% 0%;
color: #000 !important;
}
.page-secShadow {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
background-color: rgba(0,0,0,.3);
filter: alpha(opacity=50);
}
.page-shadowContent {
width: 40%;
margin: 0 auto;
margin-top: 20%;
position: relative !important;
min-width: 400px;
}
.page-shadowContent.widget-big{
}
.leftTap, .rightTap {
margin-top: 50%;
width: 80px;
height: 80px;
border-radius: 50%;
position: absolute;
top: -80px;
cursor: pointer;
}
.leftTap {
left: -30%;
background: url(\"imgTap.png\") 0 0 no-repeat;
}
.rightTap {
right: -30%;
background: url(\"imgTap.png\") -80px 0 no-repeat;
}
.closeTap {
width: 60px;
height: 60px;
border-radius: 50%;
position: absolute;
right: -30px;
top: -30px;
cursor: pointer;
background: url(\"imgTap.png\") 0 -165px no-repeat;
z-index: 99;
}
.widget {
padding: 0 5px;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
margin: 3px 0 10px 0;
}
.widget-body {
background-color: #fff;
-webkit-box-shadow: 1px 0 10px 1px rgba(0,0,0,.3);
-moz-box-shadow: 1px 0 10px 1px rgba(0,0,0,.3);
box-shadow: 1px 0 10px 1px rgba(0,0,0,.3);
padding: 12px;
}
.page-shadowContent .widget-body {
min-height: 200px;
padding: 15px!important;
border: 1px solid #ccc;
overflow: hidden;
}
.widget-body .row {
margin-right: -10px !important;
margin-left: -10px !important;
}
.imgShow {
text-align: center;
height: 400px;
padding-left: 10px;
padding-right: 10px;
/*background: url(default.png) center no-repeat;*/
}
#tapContent{
padding-left: 10px;
padding-right: 10px;
}
.imgContent {
max-width: 400px;
max-height: 400px;
vertical-align: middle;
}
.widget-body img {
max-width: 100%;
height: auto!important;
}
.imgShow > span {
height: 100%;
display: inline-block;
vertical-align: middle;
}
.imgTapDetail .form-group {
overflow: hidden;
margin-bottom: 0 !important;
position: relative;
min-height: 34px;
}
.widget-detail .form-group .detail-LabelStyle {
float: left;
padding-left: 5px;
/* max-width: 50%; */
text-align: left;
line-height: 34px!important;
color: rgb(115, 115, 115);
padding-right: 5px;
height: 34px;
overflow: hidden;
left: 0;
top: 0;
}
.widget-detail .form-group .detail-SpanStyle {
padding: 8px 0 6px 5px;
line-height: 20px;
width: auto;
height: auto!important;
min-height: 34px;
float: left;
/* margin-left: 80px; */
word-break: break-all;
}
.widget-big {
width: 80%;
min-width: 300px;
}
.widget-big .leftTap{
left: -10%;
}
.widget-big .rightTap{
right: -10%;
}
.widget-big .widget-detail{
padding: 40px 0;
}
.widget-big .imgShow{
min-height: 500px;
}
.widget-big .imgShow img{
max-width: 800px;
max-height: 550px;
}
</style>
</head>
<body >
<div class=\"imgTapDetail\"></div>
<script type=\"text/javascript\">
var picInfos = [
{
\"url\" : \"default.png\",
\"data\": [
{
\"key\":\"名称:\",
\"value\":\"测试图片\"
},
{
\"key\":\"发布者:\",
\"value\":\"chua\"
}
]
},
{
\"url\" : \"test.jpeg\",
\"data\": [
{
\"key\":\"名称\",
\"value\":\"测试图片\"
},
{
\"key\":\"发布者:\",
\"value\":\"发大水发大水发顺风h\"
},
{
\"key\":\"这个图片的其他信息\",
\"value\":\"vsfsgsdgfds234323424\"
}
]
}
]
pictureViewer.init(picInfos,0,true);
</script>
</html>
js的源码如下
pictureViewer = {
picInfos: [],
curPicIndex: 0,
isBig:false,//大图查看?默认为false。默认图片显示区域为window宽度的40%,大图为80%
imgTapSelector:\".imgTapDetail\",
init: function(picInfos,tapNumber,isBig){
var _this = this;
_this.picInfos = picInfos;
_this.curPicIndex = tapNumber;
_this.isBig = isBig;
tapImgInit();
//图片查看器初始化
function tapImgInit(){
//页面代码和事件只需要初始化一次即可
if(!_this.guid){
_this.guid = 1;
initTapImgHtml();
$(document).on(\"click\",\"#rightTap\",function(){
_this.curPicIndex++;
if(_this.curPicIndex == _this.picInfos.length){
_this.curPicIndex = 0;
}
$(\"#tapContent\").html(\"\")
tapImg()
}).on(\"click\",\"#leftTap\",function(){
_this.curPicIndex--;
if(_this.curPicIndex < 0){
_this.curPicIndex = _this.picInfos.length-1;
}
$(\"#tapContent\").html(\"\")
tapImg();
}).on(\"click\",\"#closeTap\",function(){
$(_this.imgTapSelector).hide(\"fast\")
})
}
var offTop = top.document.body.scrollTop || top.document.documentElement.scrollTop;
$(\'#imgTapPanel\').css(\"margin-top\",_this.isBig?(offTop>30?offTop:30):offTop + 100)
tapImg();
$(_this.imgTapSelector).show(\"fast\");
}
//初始化图片查看器的html代码
function initTapImgHtml(){
var $detailText = \'<div class=\"page-secShadow\" >\'
+ \'<div id=\"imgTapPanel\" class=\"page-shadowContent \'+(_this.isBig?\"widget-big\":\"\")+\'\">\'
+ \'<div id=\"leftTap\" class=\"leftTap\"></div>\'
+ \'<div id=\"rightTap\" class=\"rightTap\"></div>\'
+ \'<div id=\"closeTap\" class=\"closeTap\"></div>\'
+ \'<div class=\"widget row\"><div class=\"widget-body\">\'
+ \'<div class=\"widget-detail row\">\'
+ \'<div class=\"imgShow\">\'
+ \'<img src=\"logo.png\" id=\"tapImg\" class=\"imgContent\"><span></span>\'
+ \'</div>\'
+ \'<div id=\"tapContent\"></div>\'
+ \'</div></div></div></div></div>\';
$(_this.imgTapSelector).html($detailText);
hoverButton(\"#leftTap\", 0, 0, 0, \"-80px\");
hoverButton(\"#rightTap\", \"-80px\", 0, \"-80px\", \"-80px\");
hoverButton(\"#closeTap\", 0, \"-165px\", \"-60px\", \"-165px\");
}
//添加左右切换图标、关闭图标的hover响应事件。这个其实可以起到css中更好一些
function hoverButton(id, x, y, A, B){
$(id).hover(function(){
$(this).css(\'background-position\', A + \' \'+ B)
},function(){
$(this).css(\'background-position\', x + \' \'+ y)
})
}
//刷新当前图片及图片信息
function tapImg(){
var reg = /[::]$/,
leftTap = $(\"#leftTap\"),
rightTap = $(\"#rightTap\"),
imgTap = $(\"#tapImg\"),
contentTap = $(\"#tapContent\");
leftTap.css(\"display\",\"block\");
rightTap.css(\"display\",\"block\");
if(_this.picInfos.length == 1){
leftTap.css(\"display\",\"none\");
rightTap.css(\"display\",\"none\");
}
imgTap.attr(\"src\",_this.picInfos[_this.curPicIndex].url);
var data = _this.picInfos[_this.curPicIndex].data,
dataLength = data.length,
$text = \"\";
for(var i=0; i<dataLength; i++){
$text += \'<div class=\"form-group\">\'
+ \'<label class=\"detail-LabelStyle\">\'+data[i].key.replace(reg,\"\")+\':</label>\'
+ \'<span id=\"spanLoginName\" class=\"detail-SpanStyle\">\'+data[i].value+\'</span>\'
+ \'</div>\';
};
contentTap.empty().append($text);
setTimeout(function(){
if(_this.isBig && imgTap.height() > 400){
imgTap.parent().attr(\"style\",\"height:inherit\");
}else{
imgTap.parent().removeAttr(\"style\");
}
},1);
}
}
}
希望本文所述对大家学习javascript程序设计有所帮助。
本文地址:https://www.stayed.cn/item/17011
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我