移动Web中图片自适应的两种JavaScript解决方法
在现代移动Web开发中,图片自适应显得尤为重要,尤其是在手机站点中。对于图集和单篇文章中的图片,如何实现其自适应显示,确保在各种屏幕尺寸下都能提供最佳的用户体验呢?接下来,让我们一起这个问题。
在构建适配手机客户端的Web wap页面时,我们面临两种常见的图片显示需求。一种是图集类型的文章,用户通过左右滑动浏览图片,这时我们希望图片能够自动缩放,以适应屏幕的有效范围,避免用户不必要的滑动操作。另一种则是图文混排的文章,其中的图片最大宽度不超过屏幕宽度,高度可自动调整。尽管有提议使用图片切割工具,设定统一的图片尺寸比例,但在面对众多不同尺寸的移动设备屏幕时,这种方案并不适用。而且,如果需求多样,服务器需要存储大量不同尺寸的图片,这显然不符合实际。
对于图集类型的网站如狼蚁网站SEO优化,我们更关注图片的宽度和高度都能在手机可视视野范围内。为此,我们可以使用JavaScript来实现图片的自适应。以下是关键代码段的解读:
通过`window.screen.width`和`window.screen.height`获取屏幕宽度和高度。考虑到安卓系统对`window.screen.width`属性的支持问题,我们在代码中进行了特别处理。
接着,在`doDraw`函数中,我们遍历所有的图片元素(`imglist`),并根据屏幕大小对每张图片进行缩放调整。关键逻辑在于根据图片的原始比例与屏幕比例进行比较,确定图片的缩放方向。我们还对图片的最小尺寸进行了判断,避免过度缩放导致图片失真。
这段代码旨在实现图片的自适应显示,确保在不同屏幕尺寸下都能提供最佳的用户体验。在实际应用中,还需根据具体需求进行调整和优化。希望这篇文章能够帮助到那些在面对移动Web中图片自适应问题的朋友们。经过深入研究,我们发现安卓系统存在一个神秘的bug,尽管通过setTimeout设置延时时间是一种常见的解决方案,但在实际测试中发现这一方法似乎并不奏效。我们并未因此气馁,而是积极寻找新的解决方案。我们发现,windownerWidth属性似乎能够胜任此重任,且在实际应用中并未出现兼容性问题,这让我们感到欣慰。
在我们所面对的狼蚁网站SEO优化项目中,内容以图文并茂的文章类型为主。在这种情况下,我们只需要对图片宽度与手机宽度进行适配,而对高度则没有太多限制,这使得任务相对轻松一些。为此,我们对上述的javascript代码进行了改造。
改造后的代码如下:
$(function(){
var imglist = document.getElementsByTagName("img");
//考虑到安卓系统的版本差异,我们需要对窗口宽度的获取方式进行判断
var _width;
doDraw();
//当窗口大小发生变化时,重新绘制图片尺寸,确保图片始终根据屏幕宽度合理显示
window.onresize = function(){
doDraw();
}
function doDraw(){
_width = windownerWidth;
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;
}
}
}
}
})
这段代码中的resize函数用于捕捉屏幕窗口变化事件。当窗口大小发生变化时,会重新计算并设置图片的宽度和高度,以确保图片始终根据屏幕宽度进行合理显示。这一功能的前提是,文章直接为富文本格式,图片的父级标签已经设定了text-align:center的居中属性。如果实际应用场景有所不同(例如,文章内容是直接调用第三方的),可以根据实际需求在上述javascript代码中添加相应的处理语句。
代码中还提到了我们的项目“cambrian”,并通过调用`cambrian.render('body')`来渲染文章主体部分。
编程语言
- 移动Web中图片自适应的两种JavaScript解决方法
- thinkphp路由规则使用示例详解和伪静态功能实现
- Email正则表达式日常整理大全
- PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及
- ajax请求post和get的区别以及get post的选择
- JavaScript编程设计模式之构造器模式实例分析
- JavaScript中引用vs复制示例详析
- vue2 全局变量的设置方法
- JS实现的几个常用算法
- Angularjs处理页面闪烁的解决方法
- vue单页面打包文件大?首次加载慢?nginx带你飞,
- jQuery插件FusionCharts绘制的3D饼状图效果实例【附
- SQL 根据汉字获取全拼的代码
- jquery自定义右键菜单、全选、不连续选择
- php实现登录tplink WR882N获取IP和重启的方法
- JavaScript实现图片懒加载的方法分析