移动端适配
原文链接: 移动端适配
## 对 HTML 的设置
<!DOCTYPE html> 设置正确的浏览器渲染模式
<html lang="zh-cmn-Hans"> 设置页面内容的语言为 简体中文;
<html lang="zh-cmn-Hant"> 为繁体中文;
<html lang="en"> 为英文
<meta charset="UTF-8"> 设置编码格式为 UTF-8
<meta name="format-detection" content="telephone=no" /> 当该 HTML 页面在手机上浏览时,该标签用于指定是否将网页内容中的手机号码显示为拨号的超链接,iPhone 上默认 telephone 设置为 yes
<meta name="format-detection" content="email=no" /> 忽略 Android 平台中对邮箱地址的识别
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 详情使用参考 MDN-在移动浏览器中使用 viewport 元标签控制布局
<link rel="icon" href="**/*.*" /> 设置 icon
浏览器重置样式设置
reset.css
可重置点击链接时出现的高亮颜色及 outline
* { outline: 0; -webkit-tap-highlight-color: transparent; }
参考 -webkit-tap-highlight-color
text-size-adjust
html { -webkit-text-size-adjust: 100%; -moz-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
参考 text-size-adjust
大屏幕下 body 水平居中
body { margin: 0 auto; padding: 0; max-width: 540px; }
设置图片无法被选中
img { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; }
参考 user-select
公有样式设置
style.css
使用面向属性的 CSS
.fs12 { font-size: 12px; } .fs14 { font-size: 14px; } .fw200 { font-weight: 200; } .fw600 { font-weight: 600; }
clearfix 清除浮动
.clearfix { zoom: 1; } .clearfix:after { content: ""; display: block; height: 0; visibility: hidden; clear: both; }
0.5px 边框实现
.bd0_5 { position: relative; } .bd0_5:before { content: ''; position: absolute; top: 0; left: 0; width: 200%; height: 200%; box-sizing: border-box; border: 1px solid transparent; transform-origin: left top; transform: scale(0.5); z-index: -1; }
遮罩层样式
.shade { display: none; position: absolute; top: 0; left: 0; min-width: 100%; min-height:100%; background: rgba(0, 0, 0, 0.7); z-index: 800; }
人民币符号
.rmb:before { content: '¥'; vertical-align: baseline; }
集成手淘 rem 方案
可伸缩布局方案
使用 Flexible 实现手淘 H5 页面的终端适配
flexible.js 源码
阅读源码可以知道,如果我们设置了 viewport 元数据,那么 dpr = 1 / scale;如果手动设置 flexible,则 dpr 取决于设置值;如果两者都不设置,那么 flexible.js 会根据 IOS/Android 平台去动态生成 meta 标签并设置 dpr(此时 dpr 值可能为 1~3)及缩放比例。
建议使用修改源码后的 rem.js,设置 viewport 视口,在锁定缩放比例的同时,还可以使用提供的 class 过滤功能。
- 一个0.5像素边框的东西:
.bd1px_scale {
position: relative;
}
.bd1px_scale:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 200%;
height: 200%;
box-sizing: border-box;
border: 1px solid transparent;
transform-origin: left top;
transform: scale(0.5);
z-index: -1;
}
这种比图片的好处就是可以有圆角2333
不过需要是写成2倍的弧度