首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >rem+css预处理+媒体查询与rem+flexible.js做网页适配

rem+css预处理+媒体查询与rem+flexible.js做网页适配

作者头像
切图仔
发布于 2022-09-08 08:16:56
发布于 2022-09-08 08:16:56
2.3K00
代码可运行
举报
文章被收录于专栏:生如夏花绚烂生如夏花绚烂
运行总次数:0
代码可运行
引入
  1. 页面布局文字能否随着屏幕大小变化而变化?
  2. 流式布局和flex布局主要争对宽度布局,那高度如何设置?
  3. 怎样让屏幕发生变化时候元素高宽等比例缩放?

rem是什么?l rem是一种新的单位,是一个相对单位,类似于em。 不同的是rem的基准是相当于html元素的字体大小

rem的优势? 由于rem是基于html的字体大小,所以我们在不同屏幕大小的时候只需要设置html的font-size即可实现整体控制,以实现页适配

媒体查询 争对不同的屏幕尺寸设置不同的样式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@media mediatype and|not|only (media feature){
css..
}
  • @media声明媒体查询
  • mediatype 媒体类型
    • all 所有设备
    • print 打印机和打印预览
    • screen 电脑屏幕,平板,手机等
  • and not only 关键字
    • and 将多个媒体类型连接到一起
    • not排除某个媒体类型
    • only 指定某个特定媒体类型
  • media feature 媒体的特性 (宽高等)

例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*屏幕宽度小于等于800px的样式*/
@media screen and (max-width:800px){
  css...
}

媒体查询引入资源

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<link href="320.css" media="screen adn (min-width:320px)">
<link href="640.css" media="screen adn (min-width:640px)">

当屏幕大于320px的时候引入320.css当屏幕尺寸大于640px的时候引入的是640css

rem适配方案

一、

  • css预处理语言
  • 媒体查询
  • rem

二、

  • flexible.js
  • rem

动态设置html标签font-size的大小 案例

  1. 如果设计稿是750px

2.假如我们把整个屏幕划分为15等份(10/20都可以) 3.那么每一份的大小作为html的字体大小如这里就是50px 4.那么在320px设备的时候,字体大小为320/15就是 21.33px 5.用我们页面元素的大小除以不同的html字体大小就会发现他们的比例还是相同的 6.比如我们以750标准设计稿 7.一个100100元素在750屏幕下,就是100/50,转换为rem就是2rem2rem 比例是1:1 8.在320屏幕下 html的字体大小为21.33则2rem=42.66px此时宽高都是42.66他们的比例还是1:1 9.但是已经实现了不同屏幕下页面元素盒子的比例缩放效果。

元素大小取值方法

  1. 页面元素的rem值=页面元素px/(屏幕宽度/划分的份数)
  2. html的font-szie就等于 屏幕宽度/划分的份数
  3. 也就是 页面元素的rem指=页面元素px指/html的标准font-size(这里的标准是指以哪个尺寸的设计稿算出来的font-size值)

rem配合 flexible.js 使用第一种方式有点麻烦 如下代码 很多媒体查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* 设置常见屏幕尺寸,修改html文字大小*/
//320
/*划分份数为15*/
@num:15;
/*限定html大小 (pc打开直接50px)*/
html{
    font-size: 50px;
}
@media screen and (min-width:320px){
    html{
        font-size: 320px / @num;
    }
}
//360
@media screen and (min-width:360px){
    html{
        font-size: 360px / @num;
    }
}
/*375*/
@media screen and (min-width:375px){
    html{
        font-size: 375px/@num;
    }
}
/*384*/
@media screen and (min-width:384px){
    html{
        font-size: 384px/@num;
    }
}
/*400*/
@media screen and (min-width:400px){
    html{
        font-size: 400px/@num;
    }
}
/*414*/
@media screen and (min-width:414px){
    html{
        font-size: 414px/@num;
    }
}
/*424*/
@media screen and (min-width:424px){
    html{
        font-size: 424px/@num;
    }
}
/*480*/
@media screen and (min-width:480px){
    html{
        font-size: 480px/@num;
    }
}
/*540*/
@media screen and (min-width:540px){
    html{
        font-size: 540px/@num;
    }
}
/*720*/
@media screen and (min-width:720px){
    html{
        font-size: 720px/@num;
    }
}
/*750*/
@media screen and (min-width:750px){
    html{
        font-size: 750px/@num;
    }
}

很多计算

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.search-content{
    position: fixed;
    left:50%;
    top:0;
    transform: translateX(-50%);/*移动自己宽度的一半*/
    width: 15rem;
    height: 88rem / @baseFont;
    background-color: #ffc001;
    display: flex;
    .class{
        width: 44rem / @baseFont;
        height: 70rem /@baseFont;
        margin: 11rem /@baseFont 25rem / @baseFont 7rem / @baseFont 24rem / @baseFont;
        background-color: seagreen;
      }
      .search{
          flex:1;
          background-color: sandybrown;
      }
      .login{
        width: 75rem / @baseFont;
        height: 70rem / @baseFont;
        background-color: rosybrown;
        margin:10rem  / @baseFont
      }
}

每次设计到高宽都要除下font-size

解决办法是通过flexible.js github 它是手机淘宝团队出的简洁高效移动端适配库 我们不需要在写不同屏幕的媒体查询,因为js做了相关处理 它的原理是把当前设备划分为10等份,但是在不同设备下比例一致 我们要做的就是确定好我们当前设备的html文字大小就可以了 比如当前设计稿750px,那么我们只需要把html文字大小设置为75px(750px/10)就可以 里面页面元素rem值:页面元素的px值 / 75 剩下的交给flexible.js 如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
html{
  font-size: 20px!important;
}
body{
  min-width: 320px;
  max-width: 750px ;
  /*750划分10份每一份 75px 750/75=10=最大宽度*/
  width: 10rem; /*750/*/
  margin: 0 auto;
  line-height: 1.5;
  background-color: #f2f2f2;
}

但是我们还是要手动计算元素的rem值,也就是元素的像素除以html的font-size 750设计稿被分成10分那么html的font-size = 75px 也就是我们每个元素的高宽都要除下75 ,还是有点麻烦,之前我们用less还可以实现自动计算,现在确要我们手动计算了 不急如果你使用vscode那么只需要一个插件就能解决,这个插件能自动帮我们将px转换为rem

如下

搜索cssrem,箭头的方向就是我们html的font-size大小

最后将vscode重启即可

到这里还没有完,我们要在css定义一个最大的宽度,当屏幕宽度超过设计稿时,就使用设计稿的宽度 如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@media screen and (min-width:750px){
  html{
    font-size: 75px!important;
  }
}

如果不添加这个代码在电脑上看上去会非常的大,显示不好看,因为我们只做了移动端的布局

到这里我们就可以直接按照设计稿进行编码了,并且实现自动适应

最后感谢pink老师 https://www.ixigua.com/home/1490567706713357/pseries/?preActiveKey=hotsoon

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
移动端H5通过flexible.js+rem自适应适配方案
手机淘宝团队出的简洁高效移动端适配库 它的原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。 我们要做的,就是确定好我们当前设备的html文字大小就可以了 比如当前设计稿是750px,那么我们只需要把html文字大小设置为75px(750px/ 10)就可以 里面页面元素rem值:页面元素的px值/ 75 剩余的,让flexible.js来去算
青梅煮码
2023/03/02
1.8K0
移动端H5通过flexible.js+rem自适应适配方案
盘点:响应式布局的5种实现方式
响应式设计通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容;
艾编程
2022/12/01
2.8K0
盘点:响应式布局的5种实现方式
移动web开发(5)之rem适配布局
刚刚又把携程的案例做了一遍,发现还是有问题的,虽然说子盒子为弹性容器的时候,虽然是没有行内元素和块级元素的区别了,但是当里面没有内容的时候,设置了大小也还是不生效的.案例自己做的时候发现也没那么麻烦啦,只是刚学习了新的知识点 , 所以写起来还是比较慢的.
y191024
2022/09/20
1.3K0
移动web开发(5)之rem适配布局
CSS3新单位——rem学习
  近期,公司招了一个前端,看他的代码时,有特别多的rem作为单位。对于我这种H5小菜鸟来说,没有办法,又被强制学习了一波。    rem是css3中新增加的一个单位属性(font size of the root element),根据页面的根节点的字体大小进行转变的单位。而根节点就是<html>节点。
饮水思源为名
2018/10/09
6060
CSS: 了解一下 REM
先看看 rem 兼容性(基本上所有主流的浏览器都支持)-https://caniuse.com/#feat=rem
西南_张家辉
2021/02/02
5570
rem适配布局
rem 是根 em(root em)的缩写,是相对于根元素(html 元素)的字体大小。
赤蓝紫
2023/01/02
1.5K0
rem适配布局
vue项目移动端、pc端适配方案
flexible会为页面根据屏幕自动添加标签,动态控制initial-scale,maximum-scale,minimum-scale等属性的值。
青梅煮码
2023/03/13
4.1K0
移动开发-媒体查询布局
每种媒体类型都有各自不同的特性,根据不同媒体类型的媒体特性设置不同的展示风格,暂且了解三个,注意他们要加小括号包含
小城故事
2022/11/21
1.5K0
postcss-px-to-viewport之vw、vh、rem
很久没有做过移动端的项目了,关于移动端的自适应,最早之前用rem,我个人觉得效果很不错。忘记是哪个大神的文章提到过,lib-flexible有一些问题,建议使用viewport,今天使用一下viewport。
wade
2021/07/08
1.9K0
postcss-px-to-viewport之vw、vh、rem
08-移动端开发教程-移动端适配方案
由于移动端的特殊性,屏幕的尺寸碎片化严重,要想很好的适配不同的尺寸的设备,需要我们前端开发相比PC端要做一些基层的适配方案。
老马
2018/02/18
3.8K0
08-移动端开发教程-移动端适配方案
布局常用解决方案对比(媒体查询、百分比、rem和vw/vh)
简要介绍:前端开发中,静态网页通常需要适应不同分辨率的设备,常用的自适应解决方案包括媒体查询、百分比、rem和vw/vh等。本文从px单位出发,分析了px在移动端布局中的不足,接着介绍了几种不同的自适应解决方案。
用户8639654
2021/07/26
2.4K0
rem适配布局
@media mediatype and | not lonly (media feature) {
星辰_大海
2020/09/30
2K0
css @media 查询和屏幕适配
css语法 @media mediatype and|not|only (media feature) { CSS-Code; } 媒体类型 值 描述 all 用于所有设备 print 用于打印机和打印预览 screen 用于电脑屏幕,平板电脑,智能手机等。 speech 应用于屏幕阅读器等发声设备 媒体功能 值 描述 aspect-ratio 定义输出设备中的页面可见区域宽度与高度的比率 color 定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0 color-index 定义在输
友儿
2022/09/13
1.3K0
移动适配-rem
注意: 如果电脑显示的缩放为125%,那么给媒体特性设置宽度时只设置手机型号的宽度不起作用。(因为电脑显示的手机宽度是 :125%×真实手机宽度)
且陶陶
2023/04/12
1.6K0
移动端常用适配方案二
虽然我们将移动端独立到一套代码中了, 但是由于移动端也有很多的屏幕尺寸, 所以也需要进行适配,例如:
程序员NEO
2023/09/28
2980
移动端常用适配方案二
移动端适配大法
前端代码的编写永远逃不过“兼容”二词,从前PC时代,因为IE的傲娇,导致程序猿们一直在兼容IE的道路上挣扎,如今移动设备的普及,仿佛让我们看到了希望,仿佛马上就要摆脱IE了,可是!一波还未平息,一波又来侵袭~移动端确实不用考虑IE了,各种CSS新特性也用的爽到飞起,但一座大山压了过来,那就是分辨率的适配,移动端由于展示区域比较小,因此对于页面在不同分辨率手机上的展示细节也要求更加严格,这时像PC端有些固定宽高的布局方式显然不适应,我们被要求对于不同大小手机页面能自适应,真是非常有(tong)趣(ku)呢~ 话不多说,下面就总结了一些移动端常用的适配手法:
IMWeb前端团队
2019/12/03
2.9K0
简单粗暴的移动端适配方案 - REM
0. 前言 手机市场日渐丰富的同时,给我们前端开发人员带来的网页内容自适应屏幕尺寸进行显示的问题也日渐凸显出来。原本可能通过百分比/媒体查询等简单手段就可以常见的适配问题,但是对于页面有复杂结构或者
腾讯NEXT学位
2018/05/14
2K0
[ CSS ] H5 移动端适配与通用样式配置总结
css 样式重置实质上就是对不同浏览器的样式使用一个统一的标准,他的目的在于减少 css 的样式代码。css reset 也有比较常见的“库”,比如,normalize.css 或者是 meyerweb.css。在早期的一些简单的项目开发,css reset 直接可以了引用这样的文件,因为这是一些比较标准的写法。
GavinUI
2021/06/19
2.9K0
[ CSS ] H5 移动端适配与通用样式配置总结
html --- rem 媒体查询
手机屏幕的分辨率越来越高,比如iPhone 5为640*1136 px、iPhone 6/6S为750*1334 px。我拿到的UI图,其参考分辨率为1440*2560 px。
小蔚
2019/09/11
1.7K0
细说移动端 经典的REM布局 与 新秀VW布局
说到前端页面的布局方案,可以从远古时代的Table布局说起,然后来到 DIV+CSS布局,之后有了Float布局,Flex布局,Column布局,Grid布局等等。
书童小二
2018/10/09
12.3K0
细说移动端 经典的REM布局 与 新秀VW布局
相关推荐
移动端H5通过flexible.js+rem自适应适配方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档