问题
一开始在react的public下的index.html下引用了阿里巴巴flexible.js,源代码判断了设备像素比(device pixel ratio),会导致不同手机下缩放不一样,
样式的定义也就成了
1 2 3 4 5
| .selector {width: 2rem;border: 1px solid #ddd;} [data-dpr="1"] .selector {height: 32px;font-size: 14px;} [data-dpr="2"] .selector {height: 64px;font-size: 28px;
|
Amap引用之后,地图的显示会变的更小,因为里面的组件都是px单位。
解决方法1:
进入含有地图的页面,将meta标签device pixel ratio都设置为1,退出之后重新设置为原来的。
1 2 3 4 5 6 7 8 9 10 11 12 13
| var metaEl = document.getElementsByTagName('meta'), len = metaEl.length; componentWillMount(){ this.setState({ meta:metaEl[len-1].content }) metaEl[len-1].setAttribute('content', 'width=device-width,initial-scale=1,user-scalable=no'); } componentWillUnmount(){ let temp = this.state.meta; metaEl[len-1].setAttribute('content', temp); }
|
解决方法2:
index.html增加<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
这样所有的页面都是1.
放个简单模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <!doctype html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" /> <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script> <meta content="yes" name="apple-mobile-web-app-capable"> <meta content="yes" name="apple-touch-fullscreen"> <meta content="telephone=no,email=no" name="format-detection"> <title>title</title> </head> <body> <div id="root"></div> </body> </html>
|