动态REM

简介: 动态REM

动态REM


使用 JS 动态调整 REM

让 html 的 font-size == page width 如何做呢?

使用 JS 来做, 设置JS使 font-size == page width ,正因为 rem 是依赖 font-size 的,设置后那就会间接依赖宽度

var pageWidth = window.innerWidth
document.write('<style>html{font-size:' + pageWidth + 'px;}</style> }')

上面的代码表示 1rem == html font-size == 1 page width

优化

  1. 使用 meta viewport
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
  1. 从 pageWidth 来找答案

font-size = pageWidth/100

var pageWidth = window.innerWidth
document.write('<style>html{font-size:' + pageWidth/100 + 'px;}</style> }')

但是这个的 font-size 可能是一个 <10 的值(320/100),在 Chrome 里会有问题(最小12px)

于是再次优化 font-size = pageWidth/10

var pageWidth = window.innerWidth
document.write('<style>html{font-size:' + pageWidth/10 + 'px;}</style> }')

但是这个会带来 1px 的问题

假设屏宽 640px, 1px => (1/640) * 10 = 0.015rem,计算得出它比 1px 还要小 那么该如何解决? 自己写 1px 就行 就不要去换算 rem 了, 字体的写成 font-size: 16px,rem 和 px可以混用

px 自动变为 rem

使用SCSS

如何使用命令行部署 SCSS

  • npm config set registry registry.npm.taobao.org/
  • touch ~/.bashrc
  • echo 'export SASS_BINARY_SITE="npm.taobao.org/mirrors/nod… >> ~/.bashrc
  • source ~/.bashrc
  • npm i -g node-sass
  • mkdir ~/Desktop/scss-demo
  • cd ~/Desktop/scss-demo
  • mkdir scss css
  • touch scss/style.scss
  • start scss/style.scss
  • node-sass -wr scss -o css

编辑 scss 文件就会自动得到 css 文件

如何添加 SCSS

在 scss 文件里添加

@function px( $px ){
  @return $px/$designWidth*10 + rem;
}
$designWidth : 640; // 640 是设计稿的宽度
.child {
  width: px(320);
  height: px(160);
  margin: px(40) px(40);
  border: 1px solid red;
  float: left;
  font-size: px(16);
}


相关文章
|
机器学习/深度学习 监控 数据可视化
基于YOLOv8的人脸表情识别项目【完整源码数据集+PyQt5界面+完整训练流程+开箱即用】
本项目基于YOLOv8开发人脸表情识别系统,集成PyQt5图形界面,支持图片、文件夹、视频及摄像头等多种输入方式的表情检测。具备开箱即用的特性,包含完整源码、预训练模型权重与数据集,适合毕业设计、科研及行业应用。功能涵盖单张/批量图片检测、视频实时分析、摄像头流处理等,并可保存结果。项目附带详细训练与部署流程,助力快速构建情绪识别系统。
Threejs使用CubeCamera实现环境映射
这篇文章详细介绍了如何在Three.js中使用CubeCamera来实现环境映射,包括创建CubeCamera、设置反射材质以及实时更新渲染结果的具体步骤。
321 3
|
运维 安全 网络安全
Web安全-企业网络架构
Web安全-企业网络架构
257 1
|
人工智能 物联网 Android开发
探索安卓开发的未来趋势:从传统到尖端技术
随着技术的不断进步,安卓开发领域也迎来了新的变革。本文将深入探讨安卓开发的最新趋势,包括Kotlin的崛起、Flutter的应用、AI集成以及物联网的结合等方面。我们将通过分析这些技术如何影响当前的开发实践,来揭示未来安卓应用开发的可能方向。文章旨在为开发者提供前瞻性的视角,帮助他们把握技术发展的脉搏,从而在竞争激烈的市场中脱颖而出。
358 1
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的大学生在线论坛系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的大学生在线论坛系统附带文章和源代码部署视频讲解等
119 0
Threejs实现宇宙中地球动态展示和卫星绕地运动
Threejs实现宇宙中地球动态展示和卫星绕地运动
1441 0
Threejs实现宇宙中地球动态展示和卫星绕地运动
|
存储 分布式计算 DataWorks
阿里云 DataWorks数据集成 的开源版本DataX
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。
阿里云 DataWorks数据集成 的开源版本DataX
|
存储 分布式计算 安全
世界杯项目案例:HDFS分布式文件系统
  项目案例:HDFS分布式文件系统 Hadoop的简介:Hadoop是apache软件基金会的开源分布式计算平台hadoop集群包括两种角色Mater和Slave。一个HDFS集群由一个运行于Master上的NameNode和若干个运行于Slave节点的DataNode组成。
1135 0