本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案。开始吧
在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集,这种文章只需要左右滑动浏览,最好的体验是让图片缩放显示在屏幕有效范围内,防止图片太大导致用户需要滑动手指移动图片来查看这种费力气的事情,用户体验大大降低。二是图文混排的文章,图片最大宽度不超过屏幕宽度,高度可以auto。这两种情况在项目中很常见。另外,有人说做个图片切割工具,把图片尺寸比例都设定为统一的大小,但即使这样,面对各种大小的移动设备屏幕,也是无法适用一个统一方案就能解决得了的。而且如果需求太多,那服务器上得存多少份不同尺寸的图片呢?显示不太符合实际。
下面是图集类型,需求方要求图片高宽都保持在手机可视视野范围,js代码列在下面:
<script type="text/javascript"> $(function(){ var imglist =document.getElementsByTagName("img"); //安卓4.0+等高版本不支持window.screen.width,安卓2.3.3系统支持 /* var _width = window.screen.width; var _height = window.screen.height - 20; var _width = document.body.clientWidth; var _height = document.body.clientHeight - 20; */ var _width, _height; doDraw(); window.onresize = function(){ doDraw(); } function doDraw(){ _width = window.innerWidth; _height = window.innerHeight - 20; for( var i = 0, len = imglist.length; i < len; i++){ DrawImage(imglist[i],_width,_height); } } function DrawImage(ImgD,_width,_height){ var image=new Image(); image.src=ImgD.src; image.onload = function(){ if(image.width>30 && image.height>30){ if(image.width/image.height>= _width/_height){ if(image.width>_width){ ImgD.width=_width; ImgD.height=(image.height*_width)/image.width; }else{ ImgD.width=image.width; ImgD.height=image.height; } }else{ if(image.height>_height){ ImgD.height=_height; ImgD.width=(image.width*_height)/image.height; }else{ ImgD.width=image.width; ImgD.height=image.height; } } } } } }) </script>
注意:测试中发现安卓4.0+的系统对window.screen.width属性支持的不好,很多情况在首次加载时返回的屏幕像素不正确。本人的安卓2.3.3系统测试通过,支持该属性。据说,这是安卓系统的bug,可以通过setTimeout设置延时时间来解决这个问题。不过,这个方法,本人怎么测试都行不通。所以干脆还是另寻高明吧。发现window.innerWidth可以担此重任,没有发现兼容问题,ok。
下面是,第二种情况,图文并茂的文章类型。这时候只对图片宽度和手机宽度适应有要求,对高度不做限制,相对容易些。
改造上面的javascript代码,如下:
<script type="text/javascript"> $(function(){ var imglist =document.getElementsByTagName("img"); //安卓4.0+等高版本不支持window.screen.width,安卓2.3.3系统支持 var _width; doDraw(); window.onresize = function(){ //捕捉屏幕窗口变化,始终保证图片根据屏幕宽度合理显示 doDraw(); } function doDraw(){ _width = window.innerWidth; 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.width=_width; ImgD.height=(image.height*_width)/image.width; }else{ ImgD.width=image.width; ImgD.height=image.height; } } } } }) </script>
说明:代码中的resize函数,是捕捉屏幕窗口变化,始终保证图片根据屏幕宽度合理显示。当然了,前提是像我的项目一样,文章直接为富文本格式,图片的父级标签已经设定了text-align:center的居中属性。如果你的文章内容是直接调用第三方的,那么你可以在上面的javascript代码中添加相应的处理语句即可。
本文转载自:http://blog.csdn.net/freshlover/article/details/9720515
相关推荐
在移动Web开发中,图片自适应是一个至关重要的问题,它直接影响到用户的浏览体验。本文将探讨两种使用JavaScript解决图片自适应的方法,适用于不同类型的页面布局。 首先,我们来看第一种情况,即图集类型的页面。...
CSS3的动画和过渡特性为移动Web提供了一个轻量级的动画解决方案,使得开发者能够在不依赖JavaScript或者Flash的情况下,为网页添加平滑的动画效果。移动Web手册中应该会包含对这些CSS3特性的详细介绍,并提供在移动...
移动Web网页开发是当前互联网行业中一个至关重要的领域,随着智能手机和平板电脑的普及,越来越多的用户通过移动设备访问网络,因此,为这些设备优化网页变得不可或缺。本资料集旨在提供全面的移动Web网页开发知识,...
本案例“移动Web开发---rem适配案例---优惠券”深入探讨了如何使用rem单位进行页面自适应布局,以确保在不同屏幕大小的手机和平板上都能呈现出良好的视觉效果。下面将详细介绍rem单位、适配策略以及两种实现方式——...
"兼容手机端的全屏自适应jQuery相册代码"是一个专为解决这一需求而设计的解决方案。下面将详细阐述这个知识点及其相关技术。 首先,jQuery是一种广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画和Ajax...
### 移动端页面自适应解决方案:rem布局篇 #### 一、概述 随着移动互联网的飞速发展,用户在不同设备上浏览网页的需求日益增长。为了满足这种需求,前端开发者们开发出了多种布局方式来实现页面的自适应。其中,`...
【标题】:“织梦响应式自适应手机端会员中心(两种编码)”是一个针对织梦(DedeCMS)内容管理系统开发的模板,旨在提供一个既适应电脑屏幕又能在手机端良好展示的会员中心解决方案。该模板有两种不同的编码版本,...
【标题】"基于PHP的WordPress自适应图片模板:Reeoo-V3 v3.zip" 描述了一款专为WordPress设计的图片展示模板,该模板利用PHP语言开发,旨在提供一个高度适应不同设备显示的解决方案。在当前移动互联网普及的时代,...
1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...
常见的跨域解决方案包括: - CORS(Cross-Origin Resource Sharing):通过设置服务器响应头`Access-Control-Allow-Origin`,允许特定或所有域进行跨域请求。 - JSONP(JSON with Padding):利用`<script>`标签...
低代码开发平台包括运行时表单建模设计和低代码开发两种开发方式,支持运行时在线可视化方式创建数据建模、业务对象模型和表单设计。可根据业务需求使用不同的表单模板,以可视化、拖拽式的方式快速定制不同类型的...
《HTML手机电脑网站网页源码:前端JS效果与自适应CSS UI组件...对于想要提升网站开发技能或寻找现成解决方案的开发者来说,这是一个宝贵的资料库。通过深入研究和实践,我们可以从中汲取灵感,创造出更优秀的网页应用。
Bootstrap是Twitter推出的一个开源的前端框架,它提供了一套完整的响应式布局、移动设备优先的WEB开发解决方案。Bootstrap包含了一系列预定义的CSS样式、JavaScript组件和HTML5模板,可以快速构建美观且响应式的网站...
本"屏幕自适应demo"旨在提供一种解决方案,帮助开发者构建能够在不同设备上完美显示的应用程序。 在Android开发中,屏幕自适应主要包括以下几个方面: 1. **布局资源的维度配置**:Android提供了多种尺寸的资源...
开发者可能使用了Flexbox或Grid布局来实现这种自适应效果,这两种布局模型是CSS3的重要进步,能更轻松地创建复杂、灵活的布局。 此外,考虑到移动端性能优化,H969模板可能包含了一些最佳实践,如减少HTTP请求、...
整体来看,这个源码包提供了一个完整的移动订单处理解决方案,涵盖了从用户下单到支付的全过程,支持支付宝和微信支付两种主流支付方式,并且有详细的使用说明和配置指南。对于想要快速搭建移动订单网站的开发者来说...
在这个模板中,这两种方法可能结合使用,确保网站在不同设备上都能呈现出最佳的视觉效果。 7. **photomadness**: 这可能是压缩包中的一个子文件夹或文件,可能包含了用于网站模板的图片资源,如背景图像、产品...
自适应WAP拼团商城个人免签网站系统是一种基于Web应用开发的电商平台解决方案,它集成了移动适配(WAP)、多人拼团功能,并支持个人免签支付方式。该系统还提供了一个双端应用程序(即Android与iOS版本的应用),...