/*
| autoSerializePicture.js 自适应格式化图片
| auther : baichaohua/2017-09-21
+------------------------------------------------ */ /* JSON 示例
[
{
"imgSrc":"logo.png", //路径
"imgText":"示例图片1", //文本
"width":"185", //原始宽
"height":"185" //原始高
},
{
"imgSrc":"1.jpg",
"imgText":"示例图片2",
"width":"1024",
"height":"640"
}
]
*/
// 用法示例:addPictureAutoSize(json数据, 父级:document.getElementById('xxx')元素-默认body, ); var autoSerializePicture = function (json, parent, callback) { var obj = JSON.parse(json);
var totalDiv = document.createElement('div');
totalDiv.id = 'autoSerializePictureBox'; for (var i = 0; i < obj.length; i++) {
var box = document.createElement('div');
var imgDIv = document.createElement('imgDIv');
var p = document.createElement('p');
var pv = document.createElement('p');
var textNode = document.createTextNode(obj[i].imgText); var width = obj[i].width * 300 / obj[i].height;
var height = obj[i].height * 300 / obj[i].width; var img = new Image();
img.src = obj[i].imgSrc; if (obj[i].width / obj[i].height >= 1)
img.style.cssText = 'width: 300px; height: auto;position: absolute;left: 50%;margin-left: -150px;top: 50%;margin-top: -' + height / 2 + 'px';
else
img.style.cssText = 'width: auto; height: 300px;position: absolute;left: 50%;margin-left: -' + width / 2 + 'px;top: 50%;margin-top: -150px'; imgDIv.style.cssText = 'width:300px;height: 300px;position:relative;float: left; border: 1px solid #eee;padding: 8px;margin-top: 0px;';
box.style.cssText = 'overflow: hidden;width:300px;height: 350px;position:relative;float: left;padding: 8px;margin-top: 0px;';
p.style.cssText = 'text-align: center;margin-top: 324px;';
pv.style.cssText = 'height: 40px;'; imgDIv.appendChild(img);
p.appendChild(textNode);
box.appendChild(imgDIv);
box.appendChild(p);
box.appendChild(pv);
totalDiv.appendChild(box);
}
if(parent)
parent.appendChild(totalDiv);
else
document.getElementsByTagName('body')[0].appendChild(totalDiv); if (callback) callback(json); return {
//...
}
}

今天同事遇到一个问题,就是有很多图片,需要生成列表,但是图片大小需要自适应且居中,就写了一个方法。

直接上代码了,自适应格式化图片,图片效果:

js图片自适应尺寸居中函数处理的更多相关文章

  1. [css或js控制图片自适应]

    [css或js控制图片自适应]图片自动适应大小是一个非常常用的功能,在进行制作的时候为了防止图片撑开容器而对图片的尺寸进行必要的控制,我们可不可以用CSS控制图片使它自适应大小呢?此个人博客想到了一个 ...

  2. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  3. 移动站Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  4. JS实现自适应宽度的Tag切换

    效果体验:http://hovertree.com/texiao/js/3.htm 该效果使用纯JavaScript代码,实现TAB页切换效果,TAB标签根据内容自适应宽度,点击TAB标签切换内容页. ...

  5. Android ImageView图片自适应 (转)

    网络上下载下来的图片自适应:android:adjustViewBounds="true"(其详细解释在下面)<ImageView     android:id=" ...

  6. Android ImageView图片自适应

    网络上下载下来的图片自适应:android:adjustViewBounds="true"(其详细解释在下面) <ImageView     android:id=" ...

  7. 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器

    使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...

  8. cropper.js图片裁剪

    最近做电子名片的项目,可是个人照片展示上出现了 用户上传的图片尺寸严重失调,所以要求进行图片裁剪,再此我对图片裁剪进行调研 还不太成熟 以后再改 这个实现的原理是 前台获取到 坐标 图片的尺寸 原图文 ...

  9. JS图片灯箱(lightBox)效果基本原理和demo

    到年底了,项目不怎么忙,所以有空特地研究了下KISSY中源码JS灯箱效果,感觉代码比较简单,所以就按照他们的思路依赖于Jquery框架也封装了一个,特地分享给大家,以前经常看到网上很多这样的插件,感觉 ...

随机推荐

  1. 清空表中数据 id从1开始

    删除表的记录以后,如何使新记录的编号仍然从1开始有两种方法: 方法1: truncate table 你的表名 --这样不但将数据删除,而且可以重新置位identity属性的字段. 方法2: dele ...

  2. iOS 代码调试

    僵尸对象导致crash(Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)),需要给位release模式,debug模式不打印内存地址 https://blog. ...

  3. JTemplate学习(一)

    使用模板绑定数据,可以嵌套循环 参考:http://www.doc88.com/p-6621237324128.html <!DOCTYPE html PUBLIC "-//W3C// ...

  4. Linux动态共享库

    Linux操作系统上面的动态共享库大致分为三类:   一.操作系统级别的共享库和基础的系统工具库 libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/us ...

  5. Mockplus教程:分分钟搞定APP首页原型设计

    Mockplus是一款快速原型设计工具,支持包括APP原型在内的多种原型与线框图设计.除了快速,Mockplus广受欢迎更因为它极低的上手门槛.今天小编就为大家展示如何用Mockplus在3分钟内完成 ...

  6. cocos2d接安卓facebook插件(已测cocos-x 3.7 3.8版本)

    1  控制台创建新工程: a 控制台 进入cocos2d文件夹下面,如cocos2d-x-3.7.1,执行setup.py,未设置NDK SDK ANT 路径的设置路径,需要改路径的 explore ...

  7. java 打包jar 并后台运行

    编译java: javac main.java 运行: java main.class 生成jar: 第一步:新建 一个MANIFEST.MF 第二步:将如下信息放到该文件中 Manifest-Ver ...

  8. ipad The data couldn’t be read because it isn’t in the correct format

    原来是land left和land right都勾选的,去掉land left后出现这个问题

  9. centos7 rabbitmq安装以及应用

    安装单机rabbitmq   1.安装erlang cd /usr.local yum install wget yum install net-tools wget http://erlang.or ...

  10. 博客停更转战简书http://www.jianshu.com/u/7ac4047c9cfa

    博客停更转战简书 http://www.jianshu.com/u/7ac4047c9cfa