ios web App 使正文中的图片、视频根据屏幕尺寸自适应

1 篇文章 0 订阅
0 篇文章 0 订阅

设计一个专门为android或iphone优化的网页通常会将页面与手机浏览器设置成1:1大小(禁止手册浏览器缩放).

这时候每个手机的屏幕尺寸都不一致(包括横屏竖屏),例如当你浏览一篇文章时,正文的文字可以根据手机屏幕的尺寸自动换行,但图片、视频、iframe等这些对象不能够自适应屏幕。

现在需要获得到手机屏幕的物理尺寸,例如屏幕的寛是230*480那么正文中的图片最大宽度就为230px,;若横屏时图片的最大宽度为480px;以下是我的解决办法:

1.首先在页面中放一个 id=mviewport的div容器,令它充满等个屏幕,当设置initial-scale=1时这个div的宽度与高度就是屏幕尺寸.(为什么不用window.screen.width和window.screen.height呢?因为window.screen.width获得的是手机浏览器的viewport尺寸而不是屏幕的尺寸)

<head>

    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />

</head>

<body>

    <div id='mviewport' style="position:absolute; width:99%; height:99%; left:0; top:0;display:none;"></div>;

</body>


2.这是让尺寸改变时,图片自适应的一个简单的方法。让图片的max-width等于 $('#mviewport').width();,这种方法只用在没有被设置height属性的img标签,因为一旦设置了高度宽度拉伸后将会变形,而且像 embed iframe等标签不会自动根据宽度的改变调整高度。

window.οnresize=function(){
	changesize();
};

//--------------------
//调整文章正文内的各个元素尺寸
//--------------------
function changesize(){
	var vw = $('#mviewport').width();
	var vh = $('#mviewport').height();
        $("#article_content img").css('max-width',vw);
}

3.以下的通过遍历正文中的 img 和 embed标签,按比例缩放.其中img标签,先通过$(n).removeAttr('width');和$(n).removeAttr('height');移除了原先的图片尺寸,接着在用$(n).attr('yw',n.width);和$(n).attr('yh',n.height);获得原图的尺寸.

window.οnresize=function(){ 
     changesize();
 }; 

//-------------------- 
//调整文章正文内的各个元素尺寸 
//-------------------- 
function changesize(){ 
  var objimg  = document.getElementById("article_content").getElementsByTagName('img');
  	$.each(objimg , function(i, n){
		if(!($(n).attr('yw')>0)){
			$(n).removeAttr('width');
			$(n).removeAttr('height');
		 	$(n).attr('yw',n.width);
		 	$(n).attr('yh',n.height);
		}
		DrawObj(n,vw,vh);
	});

	var objembed = document.getElementById("article_content").getElementsByTagName('embed');
	$.each(objembed , function(i, n){
		 $(n).attr('yw',640);
		 $(n).attr('yh',360);
		 DrawObj(n,vw,vh);
	});

} 

//--------------------
// 调整某对象的最大宽度和高度
//--------------------
function DrawObj(obj,FitWidth,FitHeight){
	
	var _width  = $(obj).attr('yw');
	var _height = $(obj).attr('yh');
	
	if(_width>FitWidth){
		obj.width =FitWidth;
		if(_height>0){
			obj.height=(_height*FitWidth)/_width;
		}
	}else{
		obj.width=_width;
		if(_height>0){
			obj.height=_height;
		}
	}
	
} 

也可以加上这句

$("#article_content *").css('max-width',vw);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值