-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
viewport 最佳实践 #152
Comments
手机实测,浏览器,微信,安卓和iOS的webview中,表现一致,可以进行生产开发。 |
谢谢 @agileago 我的主题和该文章还是有区别的,我这个可以解决1px 边框等问题。 同时,缩放也不依赖target-densitydpi,因为这个属性在webview中是无效的,2012年就不支持了。 |
看起来挺好的,明天试试。 |
发现在chrome的模拟器中会偶发的出错,因此JS代码需要修改为:
|
另外在模拟器上,开发全图片的活动页发现一个问题,上下2张图片之间有一个淡淡的线,原因是图片经过缩放后,高度不是整数,在手机上没有问题。 |
这是我现在生产环境中的处理代码,设计图虽然是750的,但我一般都会把它缩小到375就是正常的宽度来做,1px我用css处理的1px解决方案 <meta name="viewport" content="width=375, user-scalable=no"> // 设置低版本安卓的viewport
function setAndroidViewPort(designWidth) {
function setViewPort () {
var match
var scale
var TARGET_WIDTH = designWidth || 375
if (match = navigator.userAgent.match(/Android (\d+\.\d+)/)) {
if (parseFloat(match[1]) < 4.4) {
if (TARGET_WIDTH == 320) TARGET_WIDTH++
var scale = window.screen.width / TARGET_WIDTH
document
.querySelector('meta[name="viewport"]')
.setAttribute('content', 'width=' + TARGET_WIDTH + ',initial-scale=' + scale + ',target-densitydpi=device-dpi,user-scalable=no')
}
}
}
setViewPort()
window.addEventListener('orientationchange', setViewPort)
} |
你的方案在内嵌APP的时候不会有问题吗?target-densitydpi=device-dpi早在2012年就不支持了 |
2012年不支持什么意思?支持不支持难道不是根据系统带的浏览器情况么?跟年份有什么关系?这个只是对低版本的viewport做兼容,高版本根本无需设置scale,浏览器自己会做适应,目前没发现有用户报页面显示有问题 |
浏览器是会自动缩放,但webview不会啊 |
今天发现安卓webview里面,该设置不生效,经过测试,发现只要把js移植到onload中就可以了。 |
用以下代码代替html meta标签
|
你这个onload方法解决了我的问题 非常感谢 |
初始化,默认设置750的宽度,根据设计稿来就好了,现在一般的设计标准是750或1500
附加上一小段JS,
这样就收工了,页面完全可以按照固定宽度750的尺寸来进行开发,无需顾忌任何屏幕尺寸的变化。
The text was updated successfully, but these errors were encountered: