(精中求精) rem适配布局

article/2025/9/16 22:26:57

1.适配导读:

什么是适配布局?与flex或者流式布局又有什么区别?

所谓的适配布局,是让页面盒子的高度,宽度,内外边距,边框大小,文字的大小,定位的元素位置等能够根据屏幕宽度自动改变大小和位置,从而达到对不同的屏幕都能够做到最完美的展示,这就是rem适配布局的优秀地方。

flex和流式布局,主要针对盒子的宽度,仅能够做到宽度自适应屏幕,但是存在高度无法改变的缺陷,rem正好补全这一点。

以后的布局,不会是只用flex或者只用流式布局、rem布局,而是混合布局,flex布局做排版,rem做自适应屏幕。

最后的最后我会放上苏宁的案例,供大家理解flex+less+rem布局的完美

2.适配布局的方法:

1.rem + less +媒体查询

2.flexible.js + less +rem

本次重点在第一种方法

3.适配布局基础知识导读

1.初识rem em

1.rem 与 em ?

为什么放一块讲? rem 和 em都是相对单位,不同的地方在于 rem相对html的字体大小来确定 1rem = html的font-size em根据自身,如果自身没有设置字体大小,那么就会寻找最近具有字体大小的父盒子

2.为什么用rem

正是因为rem只根据html的字体大小有关,所以只要在不同的屏幕下,只要更改html的字体大小,就可以控制1rem = 多少,将盒子的高宽等 用px的地方都改为rem, 达到改变html字体大小从而改变整个页面的大小,达到适配效果。

2.html的字体大小的确定

rem的难点在于如何确定不同屏幕宽度下的html的字体大小问题?

先讲思路:

1.根据设计稿,将屏幕划分成10 / 15 /20 / 30 / 40份,选一个自己喜欢的,或者领导要求的份数

2.假设此时设计稿是750px 我们将设计稿分为15份 那么 每一份的大小为 50px

3.所以此时 我们只需要设置在750屏幕及以上,字体大小为50px

4.确定好份数后, 750px下,html字体大小为 50 450px下呢?

5.450px下 html字体大小 450 /15 = 30px

6.540px ? 540 / 15 = 36px

7.总结,html字体大小 = 屏幕宽度 / 确定划分的份数

下面列出几个问题?

为什么html字体大小 = 屏幕宽度 / 确定划分的份数?

因为我们要实现等比例的缩放 所谓的等比例,是屏幕宽度 与 html字体大小的比例 永远是 份数 : 1 这样才能够实现等比缩放。

如果750px下 字体大小为 50px 500px 屏幕下 字体大小为 20px 合适吗? 缩放也不会同步吧!

3.媒体查询

1.语句规范

1.如果界面的盒子摆放位置不变,那么媒体查询写在css中,如果是内嵌式,需要写在style内部 如果是外链式,需要写在css文件里

规范:

@media screen(手机,平板,pc端)/all (全部)/print(打印机) and (条件语句)

内容虽多,但是需要我们记住的就是下面这种类型!

@media screen and (max-width:540px)

2.如果界面的盒子位置需要改变,那么就需要写不同的css样式,媒体查询此时作用就是通过查询屏幕宽度,选择不同的样式 此时的书写方式

<link rel="stylesheet" href="./style780.css" media=" screen and (min-width:780px)">

2.媒体查询通用代码:

主要适配的屏幕宽度有:320px 360px 375px 384px 400px 414px 424px 480px 540px 720px 750px

@media screen and (min-width: 320px) {html {font-size: 21.33333333px;}
}
@media screen and (min-width: 360px) {html {font-size: 24px;}
}
@media screen and (min-width: 375px) {html {font-size: 25px;}
}
@media screen and (min-width: 384px) {html {font-size: 25.6px;}
}
@media screen and (min-width: 400px) {html {font-size: 26.66666667px;}
}
@media screen and (min-width: 414px) {html {font-size: 27.6px;}
}
@media screen and (min-width: 424px) {html {font-size: 28.26666667px;}
}
@media screen and (min-width: 480px) {html {font-size: 32px;}
}
@media screen and (min-width: 540px) {html {font-size: 36px;}
}
@media screen and (min-width: 720px) {html {font-size: 48px;}
}
@media screen and (min-width: 750px) {html {font-size: 50px;}

4.less使用

1.less介绍

less是帮助我们书写css的工具 帮助我们简化书写css样式的复杂性,最直接的就是不用再书写很长的父级变量名 而且less中可以定义变量,后期更易于维护代码。如若将颜色 字体大小 份数 定义为变量,那么我们只需要改变变量的值就可以实现全局的更改。

2.less的使用

后缀 .less

在less中写代码,后代写在父亲的大括号内 如果想要用结构伪类 伪元素,需要在前面加&

使用如图:

要求:第一个p 颜色是红色 第二个p里面的a鼠标经过变成红色 box里面的文字是绿色

html结构:
<body><div class="box"><p>我是第一个p标签;</p><p><a href="#">我是第二个p标签</a></p><div class="box2">hello</div></div>
</body>
less语句:
.box {p {&:first-child {color: red;}&:nth-child(2) {a {color: blue;&:hover {color: red;}}}}.box2 {color: green;}
}

以上就是rem适配布局的全部基础内容

4.苏宁移动端布局

1.搭建文件夹结构

 

2.index.html中引入normalize.css基础样式,设置视口标签

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><link rel="stylesheet" href="./css/normalize.css">

3.less中书写媒体查询

通常我们把媒体查询写在common.less中

// 设置常见的屏幕尺寸 修改里面的html文字大小
a {text-decoration: none;color: #333;
}// 我们此次定义的划分的份数 为 15
@no: 15;// 320
@media screen and (min-width: 320px) {html {font-size: (320px / @no);}
}// 360
@media screen and (min-width: 360px) {html {font-size: (360px / @no);}
}// 375 iphone 678
@media screen and (min-width: 375px) {html {font-size: (375px / @no);}
}// 384
@media screen and (min-width: 384px) {html {font-size: (384px / @no);}
}// 400
@media screen and (min-width: 400px) {html {font-size: (400px / @no);}
}// 414
@media screen and (min-width: 414px) {html {font-size: (414px / @no);}
}// 424
@media screen and (min-width: 424px) {html {font-size: (424px / @no);}
}// 480
@media screen and (min-width: 480px) {html {font-size: (480px / @no);}
}// 540
@media screen and (min-width: 540px) {html {font-size: (540px / @no);}
}// 720
@media screen and (min-width: 720px) {html {font-size: (720px / @no);}
}// 750
@media screen and (min-width: 750px) {html {font-size: (750px / @no);}
}

4.index.less中设置body基础

body {*width*: 15rem;*min-width*: 320px;*font-family*: Arial, Helvetica;*margin*: 0 auto;}

5.代码结构模块划分

 

6.代码书写

index.less代码:

body {width: 15rem;min-width: 320px;font-family: Arial, Helvetica;margin: 0 auto;
}@basefont : 50px;// 顶部搜索模块
.search-content {display: flex;position: fixed;top: 0;left: 50%;-webkit-transform: translate(-50%);transform: translate(-50%);height: (88rem / @basefont);width: 15rem;background-color: #FFC001;.classify {width: (44rem / @basefont);height: (70rem / @basefont);background: url(../images/classify.png) no-repeat;background-size: (44rem / @basefont) auto;margin: (11rem / @basefont) (25rem / @basefont) (7rem / @basefont) (24rem / @basefont);}.search {flex: 1;input {height: (66rem / @basefont);width: 100%;border: 0;outline: 0;border-radius: (33rem / @basefont);margin-top: (12rem / @basefont);background-color: #FFF2CC;font-size: (25rem / @basefont);padding-left: (55rem / @basefont);color: #757575;}}.login {width: (75rem / @basefont);height: (70rem / @basefont);background-color: blue;font-size: (25rem / @basefont);color: #fff;text-align: center;line-height: (70rem / @basefont);margin: (10rem / @basefont);}
}// banner模块
.banner {img {width: 100%;}
}//ad模块
.ad {display: flex;a {flex: 1;img {width: 100%;}}
}//nav模块
.nav {display: flex;flex-wrap: wrap;a {flex: 20%;display: flex;flex-direction: column;align-items: center;font-size: (25rem / @basefont);span {margin: (10rem / @basefont) 0 (20rem / @basefont);}img {width: (82rem / @basefont);}}
}

index.html结构

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><link rel="stylesheet" href="./css/normalize.css"><link rel="stylesheet" href="./css/common.css"><link rel="stylesheet" href="./css/index.css"><title>suning </title>
</head><body><!-- 顶部搜索模块 --><div class="search-content"><a href="#" class="classify"></a><div class="search"><!-- action 必需的 action 属性规定当提交表单时,向何处发送表单数据。 --><form action="#"><input type="search" value="厨卫保暖季 哒哒哒"></form></div><a href="#" class="login">登录</a></div><!-- banner模块 --><div class="banner"><a href="#"><img src="./uploads/banner.gif" alt=""></a></div><!-- 广告部分 --><div class="ad"><a href="#"><img src="./uploads/ad1.gif" alt=""></a><a href="#"><img src="./uploads/ad2.gif" alt=""></a><a href="#"><img src="./uploads/ad3.gif" alt=""></a></div><!-- nav模块 --><div class="nav"><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a><a href="#"><span><img src="./uploads/nav1.png" alt=""></span>爆款手机</a></div>
</body></html>

最后补充:

1.需要下载的插件:easyless less保存自动生成css文件

2.less中引入其他less文件 @import ‘文件名.less’ 要点 一定要有空格,文件名要用引号包裹

3.剩余的flexible.js 使用 下次再做补充


http://chatgpt.dhexx.cn/article/3uGcvmOb.shtml

相关文章

移动端布局(三) rem布局及原理

什么是rem 首先来了解一下什么是em: 作为font-size的单位时,其代表父元素的字体大小,em作为其他属性单位时,代表自身字体大小。 s1、s2、s5、s6的font-size和line-height分别是多少px? <div class"p1"><div class"s1">1</div><di…

安装Mysql

设置密码 检测安装是否成功 切换到安装目录的bin下C:\Program Files\MySQL\MySQL Server 8.0\bin&#xff0c;按住shift&#xff0c;单击鼠标右键&#xff0c;点选在此处代开命令窗口 在命令行中输入mysql -u root -p,之后输入之前设定的密码如果出现如下图所示&#xff0c;…

ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录

//在IT行业&#xff0c;不懂数据库是不行的&#xff0c;我自己在学校里还没有学过数据库有关的知识&#xff0c;不过由于前些日子写项目的要求&#xff0c;不得不去琢磨&#xff0c;虽然有很多数据库类别&#xff0c;包括微软的 SQL server &#xff0c;access,ORACLE公司的ORA…

QQ交谈、QQ在线状态代码生成…

原文地址&#xff1a;QQ交谈、QQ在线状态代码生成&#xff0c;非QQ商家可以正常生成 作者&#xff1a;HHeOnline 非QQ商家用户&#xff0c;直接在QQ互联可以生成QQ在线状态&#xff0c;也就是QQ交谈的代码。 直接放到对应的代码里就可以正常使用了。 QQ代码生成地址&#xff1a…

qq群关系数据库 mysql_QQ群关系数据库24.52G mdf源文件下载 附上使用教程

HQY 腾讯 7000W QQ群关系数据库泄漏共24.52G。 QQ24.5gb腾讯QQ群关系数据库,不包含密码。只包含个人名字(群备注名字等信息)。 如果想在线查询更多qq群数据信息可以查看: 一、下载完24.5gQQ数据库后,解压文件 下载后不要把文件改名,打开7z,点击其中一个文件,选择合并文件…

MySQL 数据类型

数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC)&#xff0c;以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词&#xff0c;关键字DEC是DECIMAL的同义词。 BIT数据类型保存…

mysql数据库的基本管理

一、数据库的介绍 1.数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle mongodb db2 sqlite sqlserver .......3.Mysql (SUN -----> Oracle)4.mariadb 是数据库服务器 数据库中的常用名词 字段 :表格中的表头 表 :表格 库 :存放表格的目录…

mysql数据库

文章目录 一、Windows1.1 修改mysql的data文件夹存放位置&#xff1a;1.2 修改mysql密码1.3 设置Mysql允许其他电脑访问1.4 重新手动安装 二、mysql 时间查询三.解锁四.Linux4.1 下载安装4.2 配置4.3 卸载 三、Bug 一、Windows 1.1 修改mysql的data文件夹存放位置&#xff1a;…

MySQL使用与练习01

MySQL数据库概述 用来存储数据和管理数据,最终形成类似于表格的样子,有行有列(字段) 分类: 关系型数据库 和 非关系型数据库 关系型数据库&#xff0c; Oracle、MySQL、SQLServer、Access非关系型数据库&#xff0c; MongoDB、Redis、Solr、ElasticSearch、Hive、HBase 数据…

MySQL项目3总结创建与维护

登录MySQL mysql -u root -p密码 查看所有数据库 show databases; 创建数据库 CREATE DATABASE 数据库名; 修改数据库默认字符集 alter database 数据库名default character set 新字符集; 查看hao数据库创建信息&#xff1b; show create database 表名\g; 删除数据库 …

关于mysql的表情包_mysql表情包 - mysql微信表情包 - mysqlQQ表情包 - 发表情 fabiaoqing.com...

MySQ从删库到跑路_删库_MySQ表情 TFBOYS 三人击掌 - TFBOYS 三人有着独特的击掌方式_tfboys_明星表情_tfboys_明星表情表情 走,带你试衣服去(UNIQLO)_uniqlo_衣服表情 内裤不试完,谁都别想走!(UNIQLO)_不试_uniqlo_内裤表情 qqloveddme_qqloveddme表情 QQLOVE DDME(qq爱)_qq…

二叉树的最大深度

题目 思路 二叉树大多用递归来实现&#xff0c;本题如果知道左子树的深度和右子树的深度&#xff0c;那么整个二叉树的深度就为max&#xff08;左子树&#xff0c;右子树&#xff09; 1&#xff1b;该方法也叫做深度优先搜索 代码 package hot_100;public class MaxDepth {…

c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数

二叉树的二叉链表的存储结构: typedef char TElemType; typedef struct BiTNode {TElemType data;//数据元素 BiTNode * lchild;//指向左孩子 BiTNode * rchild;//指向右孩子 }BiTNode,* BiTree; 一、二叉树的深度 如果二叉树为空,结点的深度为0; 如果二叉树只…

二叉树的深度和高度

二叉树的深度和高度的定义是不一样的&#xff0c;并且是相反的。深度是从上往下数的&#xff0c;高度是从下往上数的&#xff0c;即深度是从根节点到该节点的距离&#xff0c;高度是该节点到叶子节点的距离。当然树的高度和深度是相等的。 根节点的深度和高度为0&#xff0c;所…

求二叉树的深度

题目 写一个算法求一棵二叉树的深度&#xff0c;二叉树以二叉链表为存储结构 求二叉树深度的函数 //求二叉树深度 int getDepth(BTNode *T) {int LD,RD;//左右子树的深度if(TNULL){return 0;//设定空树的深度为0}else{//采用后根遍历LDgetDepth(T->lchild);//求左子树的深度…

二叉树的深度遍历

一、深度优先遍历 对于一棵二叉树&#xff0c;深度优先搜索&#xff08;Depth First Search&#xff09;是沿着树的深度遍历树的节点&#xff0c;尽可能深的搜索树的分支。 二、二叉树的深度遍历的三种方法 这三种方法常被用于访问树的节点&#xff0c;它们之间的不同在于访问每…

正则匹配中文数字

正则匹配中文数字 运营导入小说时遇到小麻烦&#xff0c;想要在章节目录前面加一些符号&#xff0c;word等工具搜半天没搜到&#xff0c;就想着用正则匹配试一下&#xff0c; 于是用notepad试了一下&#xff0c;正则匹配中文数字章节。 表达式为&#xff1a;(第[\u4e00-\u9f…

IDEA创建一个maven项目

1.打开IDEA&#xff0c;点击“Create New Project”,创建项目。 2.首先选择“Maven”&#xff0c;然后选择本地配置的JDK&#xff0c;我安装的是JDK 1.8版本,然后next。 3.填写GroupId、ArtifactId&#xff0c;然后next。 4.填写相关信息&#xff0c;然后finish。 5.这时候一个…

maven项目怎么运行

怎么运行Maven项目&#xff1f;Maven来管理大型项目还是很不错的&#xff0c;要运行Maven项目&#xff0c;必须要让开发工具支持Maven&#xff0c;首先要下载Maven项目&#xff0c;然后配置&#xff0c;配置好Maven后&#xff0c;在配置Maven运行参数&#xff0c;需要的朋友看看…

如何创建一个Maven项目

目录 一、Maven是什么&#xff1f;二、Maven的作用三、Maven的下载与安装下载地址:安装:Maven环境变量配置 四、创建一个Maven项目(使用IDEA)添加依赖 一、Maven是什么&#xff1f; Maven 的本质是⼀个项⽬管理⼯具&#xff0c;将项⽬开发和管理过程抽象成⼀个项⽬对象模型&am…