什么是响应式页面?
* 响应式页面就是随着设备属性(如宽高)的变化,网页也随着变化。
* 响应式页面需要两套图:手机端和网页端(推荐先做手机端)
移动端如何做适配?
手机端的交互方式
* 没有 hover、resize、滚动条
* 有 touch 事件
1.media query
媒体查询(响应式)
<style>
@media(max-width:375px){ body{background: blue;} }
</style>
//如果媒体满足max-width: 375px,就生效这个css样式
@media
可以用css
文件代替,在link
里加上media
查询条件,才能生效。
<link rel=“stylesheet” href=“style.css” media=“(max-width: 320px)”>
避免css
层叠覆盖方法
1.范围条件不要有交集。
2.范围大的写在前面。
2.手机端加一个meta
(响应式)
快捷写法:meta:vp
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
/*以下为注释*/
device-width //设备视可宽度
initial-scale //初始的缩放比例
minimum-scale //允许用户缩放到的最小比例
maximum-scale //允许用户缩放到的最大比例
user-scalable //用户是否可以手动缩放
加上上面meta
后能做到在移动端
* 防止手机页面模拟 980px 宽度
* 防止页面在用户双击时候放大
* 防止页面变成横屏
3.方法一:使用JS
动态调整rem
由于rem
代表根元素(html
元素)的 font-size
大小。那么可以先设置1rem = html 的 font-size = 1page width
,这样后面就可以按比例直接调整rem
。
如图
将单位变成整数
最终代码
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<script>
var pageWidth = window.innerWidth
document.write('<style>html{font-size:'+pageWidth/10+'px;}</style>')
</script>
// pageWidth/10 是将 rem 调整成整数。1rem = 0.1px。
// 改成 pageWidth/100 时,就违背了 12像素原则,会造成排版错乱。
// rem 可以与其他单位同时存在。很小的单位上,可以用 px 或 em,比如线条。
方法二:在scss
文件里添加,这个方法可实现px
自动变rem
@function px( $px ){
@return $px/$designWidth*10 + rem;
}
$designWidth : 750; // 750 是设计稿的宽度。
.child{
width: px(375);
height: px(160);
margin: px(40) px(40);
border: 1px solid red;
float: left;
font-size: 1.2em;
}