vw+rem
### 1. 将mata标签改成如下
~~~
<meta name="viewport" content="width=device-width, initial-scale=2.0, maximum-scale=2.0, minimum-scale=2.0, user-scalable=no">
~~~
### 2. 设置font-size
~~~
//750px设计稿
html{
font-size: 13.3333vw;//(100px/750px)*100vw
}
//640px设计稿
html{
font-size: 15.625vw;//(100px/640px)*100vw
}
//1080px设计稿
html{
font-size: 9.25926vw;//(100px/1080px)*100vw
}
说明:vw和rem的转换
100 / 750 = 0.133333333333333vw
因为用视口单位度量,视口宽度为100vw,高度为100vh 所以 1px = 0.133333333333333vw
那么整个适口等于 0.133333333333333 * 100 = 13.3333333333333vw = 100px
故:100px = 1rem
~~~
### 3\. 使用
~~~
div {
// width: 100px;
width: 1rem;
}
span {
// height: 12px
height: .12rem
}
~~~
### 4\. 如果用过flexible适配方案的话,可能会更接受通过sass来计算,而且可以通过计算给body设置最大宽度和最小宽度,带来更好的体验
~~~
// rem 单位换算:定为 75px 只是方便运算,750px-75px、640-64px、1080px-1080px,如此类推
$vw_fontsize: 75; // iPhone 6尺寸的根元素大小基准值
@function rem($px) {
@return ($px / $vw_fontsize ) * 1rem;
}
// 根元素大小使用 vw 单位
$vw_design: 750;
html {
font-size: ($vw_fontsize / ($vw_design / 2)) * 100vw; //就是相当于20vw
// 同时,通过Media Queries 限制根元素最大最小值
@media screen and (max-width: 320px) {
font-size: 64px;
}
@media screen and (min-width: 540px) {
font-size: 108px;
}
}
// body 也增加最大最小宽度限制,避免默认100%宽度的 block 元素跟随 body 而过大过小
body {
max-width: 540px;
min-width: 320px;
}
~~~
### 5\. demo
~~~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=2.0, maximum-scale=2.0, minimum-scale=2.0, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0
}
html,
body {
font-size: 13.3333333333333vw;
/* 100px */
}
.demo {
width: 1rem;
height: .1rem;
background: red;
}
</style>
</head>
<body>
<div id="app">
<div class="demo">
</div>
</div>
</body>
</html>
~~~
- HTML,CSS
- 如何书写高效的css样式
- box-shadow
- 表格合并行列
- 自适应单位
- 隐藏元素
- 浏览器缓存
- 浏览器内核
- css和js的合理走位
- 2021样式问题汇总
- 模拟面试
- 移动端适配问题
- flexible(rem)
- vw+rem
- 判断一个属性是对象的私有属性
- px rpx em rem vw
- 清除浮动
- 栅格系统
- get&&post
- 雪碧图
- new操作符
- call apply bind区别
- 前端模块化
- 回调函数
- 回调地狱(封装版)
- 回调地狱(promise)
- 回调地狱(generator)
- 回调地狱(async)
- es6新特性
- let
- 箭头函数
- 展开 解构 默认赋值
- vue生命周期
- axios封装
- axios跨域拿数据
- ajax封装
- JavaScript
- 数组
- 排序
- 取偶数
- 反转排序
- 取最大值
- 数组去重
- 复杂版
- 数组的克隆(深拷贝)的方法
- 求质数
- 原型和原型链
- 创建对象
- 什么是路由
- SASS
- jQuery中的append和prepend区别?
- css动画及js动画的区别
- 隐式类型转换
- 原型
- 事件传播
- 函数
- 增加属性
- 构造函数
- 一元操作符
- 作用域
- 短语
- Vue
- - nextTick
- 自我介绍
- 哦豁(;д;)
- for in效果
- 事件
- promise特点
- 如何实现一个ajax请求
- 媒体查询
- substr和substring
- MVC、MVVM
- 面向对象
- 取数据、渲染数据
- ajax
- vue
- React
- es6-class
- 几种类型的DOM节点
- js同源策略
- 闭包
- 2021
- 数据类型
- 闭包2
- 防抖节流
- 原型与原型链
- call与apply与bind
- 深浅拷贝
- New关键字
