[关闭]
@windchimes 2018-03-27T03:41:34.000000Z 字数 2457 阅读 310

移动端适配各种页面

手机兼容性


  1. <!doctype html>
  2. <html class="no-js" lang="zh">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="format-detection" content="telephone=no" />
  6. <meta name="description" content="">
  7. <meta name="keywords" content="">
  8. <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
  9. <meta name="renderer" content="webkit">
  10. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  11. <style>
  12. body,html{
  13. display: -webkit-box;
  14. -webkit-box-align: center;
  15. -webkit-box-orient: vertical;
  16. padding: 0px;
  17. margin: 0px;
  18. }
  19. img {
  20. width: 7.5rem;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <script>
  26. (function (doc, win) {
  27. var docEl = doc.documentElement,
  28. //方向改变事件
  29. resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
  30. isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
  31. recalc = function () {
  32. var clientWidth = docEl.clientWidth;
  33. var clientHeight = docEl.clientHeight;
  34. if (!clientWidth) return;
  35. if(clientWidth >= 750 ){
  36. clientWidth = 750;
  37. doc.body.style.width = 750 + 'px';
  38. }else{
  39. doc.body.style.width = clientWidth + 'px';
  40. }
  41. docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
  42. docEl.dataset.percent = 100 * (clientWidth / 750);
  43. docEl.dataset.width = clientWidth;
  44. docEl.dataset.height = clientHeight;
  45. };
  46. recalc();
  47. if (isIOS) {
  48. doc.documentElement.classList.add('iosx' + win.devicePixelRatio);
  49. }
  50. win.addEventListener(resizeEvt, recalc, false);
  51. })(document, window);
  52. </script>
  53. <div>
  54. <a href="http://3g.163.com/links/7314"><img src="http://cms-bucket.nosdn.127.net/105e255267324e05bbb1521c18e2359c20160902115412.png"></a>
  55. </div>
  56. </body>
  57. </html>

理解:
rem:根元素(html)的字体大小,所谓的rem就是以元素的font-size作为单位的相对单位。如果根元素的font-size是100px,那么1rem就是100px。此处font-size为100px,那么1rem则为100px
注意:懒得转换rem和px时,可以用sublime text的插件cssrem https://github.com/flashlizi/cssrem
对应教程:http://www.cnblogs.com/wzls/p/5381478.html
http://www.cnblogs.com/beiz/p/5666477.html

  1. <!doctype html>
  2. <html class="no-js" lang="zh">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="format-detection" content="telephone=no" />
  6. <meta name="description" content="">
  7. <meta name="keywords" content="">
  8. <meta content="target-densitydpi=device-dpi,width=640" name="viewport">
  9. <meta name="renderer" content="webkit">
  10. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  11. <style>
  12. body,html{
  13. display: -webkit-box;
  14. -webkit-box-align: center;
  15. -webkit-box-orient: vertical;
  16. padding: 0px;
  17. margin: 0px;
  18. }
  19. img {
  20. width: 100%;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div>
  26. <a href="http://3g.163.com/links/7314"><img src="http://cms-bucket.nosdn.127.net/105e255267324e05bbb1521c18e2359c20160902115412.png"></a>
  27. </div>
  28. </body>
  29. </html>

注意:
优点:简单快捷,能够随视觉稿的尺寸变化修改为640或者750
缺点:1)此种方法较老,且被iframe嵌套时适配样式会失效
2)width初始必须设置为100%,否则不能适配各种手机

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注