• 在不同设备上正常使用
  • 一般主要处理屏幕大小的问题
  • 主要方法:
    • 隐藏+折行+自适应空间
    • rem/viewport/media query

image.png

rem

rem(font size of the root element)是指相对于根元素(即HTML元素)的字体大小的单位。
假设根元素的字体大小是10px, 则5rem的大小为 5*10=50px

  1. html{
  2. font-size: 10px;
  3. }
  4. p{
  5. width: 2rem; /* 2*10 = 20px;*/
  6. margin: 1rem;
  7. }

当屏幕不同,通过媒题查询设置根字体大小,设计稿下i375px的html的font-size预设基准值为100px(方便计算),即1rem = 100px

  1. @media only screen and (min-width: 320px) {
  2. html {
  3. font-size: 85.333px;
  4. }
  5. }
  6. // only 提升兼容性
  7. @media only screen (min-width: 360px) {
  8. html {
  9. font-size: 96px;
  10. }
  11. }
  12. @media only screen (min-width: 375px) {
  13. html {
  14. font-size: 100px;
  15. }
  16. }
  17. @media only screen (min-width: 414px) {
  18. html {
  19. font-size: 110.4px;
  20. }
  21. }
  22. body {
  23. font-size: 14px; /* 设置字体 */
  24. }

缺点:

  • 阶梯型

JS计算: 监听分辨率的变化来动态改变根元素的字体大小;

  1. document.documentElement.style.fontSize = document.documentElement.clientWidth / 750 + 'px';
  • 缺点:html文件头部需插入一段js代
  1. var height = window.innerHeight
  2. || document.documentElement.clientHeight
  3. || document.body.clientHeight;
  4. // 三者还是有区别的

vw/vh

viewport

https://www.w3cplus.com/javascript/offset-scroll-client.html

  • window.screen.height 屏幕高度
  • window.innerHeight 网页视口高度
  • document.body.clientHeight body高度
  • vw : 1vw 等于视口宽度的1%
  • vh : 1vh 等于视口高度的1%
  • vmin
  • vmax

px2rem,px2vw

响应式布局 - 图2