rem绝对自适应方案

news/2024/7/5 23:58:41 标签: CSS

rem

  css3新增的rem是现在非常受欢迎的单位。看一下MDN上的说明:

  这个单位代表根元素的 

font-size
 大小(例如 
<html>
 元素的font-size)。

  使用这个单位可以创建完美的可扩展布局,只需根据页面大小去修改html的font-size,就能达到适配整个页面的目的。那么问题来了,如何使html的font-size自适应呢?

媒体查询

  media的用法这里就不赘述,简单说明通过媒体查询修改html的font-size以达到页面自适应的目的。

    html如下:

  <article class="container">
    <ol>
      <li>rem是相对于root元素(html)字体大小的一个单位。 eg:html默认font-size为16px  则1rem = 16px</li>
      <li>若元素以rem为单位去设置字体、宽高、边距等。则修改html字体大小就能达到所有元素一起等比例修改的效果</li>
      <li>所以要实现html字体在不同页面大小下自适应</li>
    </ol>
  </article>

    css如下:

//媒体查询控制html字体大小 
 @media (max-width:767px) {
    html{
      font-size: 14px;
    }
  }
  @media (min-width:768px) {
    html{
      font-size: 16px;
    }
  }
  @media (min-width:992px) {
    html{
      font-size: 20px;
    }
  }

//页面元素的简单样式
  .container{
    padding: 1rem;
  }
  li{
    font-size: 1rem;
  }

  通过媒体查询,在不同大小区间的页面上,设置html的font-size都不一样;

  页面宽度为700px时,html的字体大小为14px,此时 1rem = 14px ,li元素的字体大小就是14px,包裹的内边距也是14px;改变页面宽度为800px,html的字体大小为16px,此时 1rem = 16px ,li元素的字体大小变为16px,包裹的内边距也变为16px;

  这种方式当然媒体查询划分的越细致,自适应越强,但是无法实现完全自适应,只是区间性的。

vw

  vw代表的视口的 1/100 100vw代表的即是视口的宽度。使用它我们就可以实现html的font-size完全自适应了。

  css如下:

  html{
    font-size: calc(16/768*100vw);   //以768时16px为标准进行缩放
  }

  例子的768px为一个假设的标准值,一般设计稿的大小为标准,然后再进行适配。调节页面大小,可以完全自适应。

JS调整

  加载页面和调整窗口大小的时,设置html的字体大小,已达到自适应的目的。

    (function(){
      var doc = document.documentElement,
          resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';

      function changeFontSize(){
        var clietWidth = doc.offsetWidth,
            scale = clietWidth/768;   //以768为标准

        doc.style.fontSize = scale * 16   'px';
      }

      if (!doc.addEventListener) return;

      window.addEventListener(resizeEvt,changeFontSize)  //窗口大小变化或者手机横屏
      document.addEventListener('DOMContentLoaded',changeFontSize) //加载页面触发
    })()

  1、获取视口宽度

  2、以视口宽度对标准的变化,设置html的font-size

 


http://www.niftyadmin.cn/n/1733058.html

相关文章

【恢复】慕课网《网页布局基础》学习笔记

好久之前&#xff0c;最初入坑前端时的学习笔记。那时候「慕课网」的几个路径还是免费的&#xff0c;也有好几个跟网页布局有关的课程&#xff0c;其中有一个叫《网页布局基础》讲得很棒&#xff0c;那时候刚好喜欢上 markdown 写作&#xff0c;于是结合几个课程写下了这篇笔记…

error while loading shared libraries: libhcnetsdk.so: cannot open shared object问题解决

2021/09/09-2020/09/09 我的系统 lsb_release -a 查看和编辑动态库配置文件ld.so.conf ls -l /etc/ld.so.conf cat /etc/ld.so.conf sudo nano /etc/ld.so.conf 添加/home/ccdc/HKCapture/lib&#xff0c;这是我的程序的动态库路径。 更新配置 sudo ldconfig -v 问题解决。 …

OLAP的基本多维分析操作

http://docs.huihoo.com/database/dw2.html http://book.csdn.net/bookfiles/327/10032713198.shtml OLAP的基本多维分析操作有钻取&#xff08;Drill-up和Drill-down&#xff09;、切片&#xff08;Slice&#xff09;和切块&#xff08;Dice&#xff09;、以及旋转&#xff08…

在CRON定时任务中xxx not found错误处理

2021/09/09-2020/09/09 我的系统 lsb_release -a 在定时任务cron中运行程序ffmpeg出现错误 cat /var/mail/ccdc 查看ffmpeg在哪里 $ which ffmpeg /snap/bin/ffmpeg 或者 $ whereis ffmpeg ffmpeg: /snap/bin/ffmpeg.ffplay /snap/bin/ffmpeg /snap/bin/ffmpeg.ffprobe 将…

深入理解css3中的线性渐变

css3中的线性渐变 线性渐变公式&#xff1a; background-image: linear-gradient( [ <angle> | <side-or-corner> ]?, <color-stop> [, <color-stop>] ); 意为&#xff1a;(角度deg或者方位词,一个或多个渐变颜色关键结点&#xff08;多个的话用&q…

eXtreme Table 的基本用法及配制

http://www.javaeye.com/topic/249801。简介&#xff1a; Extreme Table 是ExtremeCompontents&#xff08;Home Page:http://www.extremecomponents.org? &#xff09;中一个功能强大 而又容易配置,扩展,自定义的Table 控件&#xff0c;其功能包括排序, 分页, 导出Excel,…

cron定时任务和No MTA installed, discarding output错误处理

陈拓 2021/09/09-2020/09/12 0. 我的系统 lsb_release -a 1. 设置cron 为了定时执行程序启用cron。 我的项目需求为每5分钟执行一次hkCapJpeg1。下面通过编辑crontab进行设置。 crontab编辑命令 crontab -e 选择1&#xff1a; 在crontab的最后添加&#xff1a; */5 * * * …

将childNodes返回的数据转化维数组的方法

1 //将childNodes返回的数据转化为数组的方法2 function convertToArray(nodes){3 var arraynull;4 try{5 arrayArray.prototype.slice.call(nodes,0);6 }catch(ex){7 a…