前两天在给公司制作华丹官网网页时,遇到图片在电脑端显示正常,在移动端图片将页面撑开,无法做到自适应布局的情况。这时就需要对图片进行自适应缩放。

缩放的方式有两种,一种是通过css进行缩放,一种是通过JavaScript进行缩放,接下来分别介绍两种缩放的方式:

1、css方式:主要途径是通过@media,区别不同的屏幕宽度,添加不同的css样式,具体代码如下:

@media only screen (max-width : 768px) {

.img_01 {width: 90%;}

}

代码解释;

@media only screen (max-width : 768px){...} ,判断当前容器小于等于768px(基本上对应移动端),就执行{}内的css

.img_01 {width: 90%;},对class含有img_01的元素进行css样式设置或附加。

2、JavaScript方式:通过JavaScript代码获取当前容器的宽度高度,再根据获取到的图片对象再进行算法处理。具体代码如下

<script>

$(function () {

//获取图片对象

var imglist = document.getElementsByName("context_img");

var _width;

doDraw();

window.onresize = function () {

//捕捉屏幕窗口变化,始终保证图片根据屏幕宽度合理显示

doDraw();

}

function doDraw() {

//window.innerWidth 为当前屏幕的宽度

//100为图片两边到屏幕边缘的空白距离,可根据实际情况进行调节

_width = window.innerWidth-100;

for (var i = 0, len = imglist.length; i < len; i++) {

DrawImage(imglist[i], _width);

}

}

function DrawImage(ImgD, _width) {

var image = new Image();

image.src = ImgD.src;

image.onload = function () {

//限制,只对宽高都大于30的图片做显示处理,换成你想要的宽度。

if (image.width > 30 && image.height<30) {

if (image.width > _width) {

ImgD.style.width = "";

ImgD.style.height = "";

ImgD.width = _width;

// 高度按比例缩小

ImgD.height = (image.height * _width) / image.width;

} else {

ImgD.style.width = "";

ImgD.style.height = "";

ImgD.width = image.width;

ImgD.height = image.height;

}

}

}

}

})

</script>

上面就是两种方法的具体处理方式,总结一下优缺点:

css方式:

优点:

1)代码简单。

2)可以针对不同的容器大小进行固定处理。

3)当页面中相同大小图片元素比较多的时候,效率高。

缺点:

1)只能固定化处理,对于多种大小要求的图片,需要写很多css,维护较麻烦。

2)浏览器存在兼容问题,版本过低的浏览器不支持。

JavaScript方式:

优点:

1)可自动适应屏幕,较为方便。

2)浏览器兼容良好。

3)能够同时不同大小的图片进行同比缩放,无需再写代码。

4)每个图片元素无需写独有的css样式或其他标志属性。

缺点:

1)图片过多,会导致页面加载有一定的延时。

2)对于多个图片元素在一行上的情况不适合使用。