移动web适配和Less

news2024/11/26 1:33:20

移动web适配和Less

    • rem 适配
      • rem 单位
      • 媒体查询
      • flexible.js
      • 如何把设计稿的px转换为rem
    • LESS
      • Less注释
      • less 运算
      • less 嵌套
      • less 变量
      • less导入
      • less 导出
      • 控制当前Less文件导出
      • less 禁止导出
    • 小结

rem 适配

rem 单位

rem 是一个相对单位,1rem 就是 html 文字的大小

比如

/* 根html 为 12px */
html {
   font-size: 12px;
}
/* 此时 div 的字体大小就是 24px */       
div {
    font-size: 2rem;
}
rem的优势:父元素文字大小可能不一致, 但是整个页面只有一个html,可以很好来控制整个页面的元素大小。

媒体查询

媒体查询 media query 可以自动检测视口的宽度。

媒体查询一个非常大的作用是:根据屏幕宽度修改html文字大小

使用媒体查询, 根据不同的视口宽度, 设置不同的根字号 ,就完成了适配

语法:


@media (width:375px) {
    html {
        font-size: 40px;
    }
}

@media (width:320px) {
    html {
        font-size: 30px;
    }
}

综合:

<div class="box"></div>

 /* 需求: iphone 678   375px  html文字大小为 12*/
@media (width:375px) {
    html {
         font-size: 12px;
         /*font-size: 37.5px; */
    }
}
 /* 需求: iphone 678 x  414 html文字大小为 16 */
@media (width:414px) {
    html {
        font-size: 16px; 
         /* font-size: 41.4px;*/
    }
}

 /* 如果414屏幕下,一个盒子宽度沾满屏幕,高度和宽度一样大  414*414。  
    如果375屏幕下,一个盒子宽度沾满屏幕,高度和宽度一样大  375 * 375。  
    html文字大小设置为多少? */
.box {
    width: 10rem;
    height: 10rem;
    background-color: pink;
}
 /*目前rem布局方案中,将网页等分成10份, HTML标签的字号为视口宽度的 1/10 */

通过媒体查询,检测不同的视口宽度,设定不同的html文字大小,元素设置rem单位后,可以达到元素适配效果

flexible.js

媒体查询写起来超级麻烦,而且检测不够精确,因此我们使用 flexible.js 这个 js文件,通过js 实时检测屏幕窗口的变化实现检测视口宽度。

这个也是值得提倡使用的一种方式。

有了这个js文件,可以帮我们自动检测屏幕宽度,自动修改html文字大小,这样就可以让盒子配合rem完成适配。

 <div class="box"></div>
  <div class="box2"></div>
  <!-- 引入flexible.js 文件   检测屏幕大小, 修改html文字大小 都 这个js做了  -->
  <!-- 屏幕分成10等份,每一份是 37.5 px 也就是 1rem = 37.5px; -->
  <!-- 我有一个 375px 的盒子,那么写 rem 是多少?   375px / 37.5px = 10rem  -->
  <!-- 我需要一个 75*75px 一个盒子,那么需要 75 / 37.5 = 2 rem? -->
  <script src="./js/flexible.js"></script>
 .box {
      width: 10rem;
      height: 10rem;
      background-color: pink;
    }

    .box2 {
      width: 0.8rem;
      height: 0.8rem;
      background-color: skyblue;
    }

如何把设计稿的px转换为rem

问题:

  1. flexible 能够修改html文字大小,修改文字大小: 当前屏幕 / 10 就是文字大小

    例如: 当前屏幕 375px,则加了 flexible之后,html文字大小为 37.5px

  2. 我们的设计稿里面元素大小是固定的吗? 是 , 而是 px 单位 ,但是我们开发的时候,要使用 rem 才能适配。

  3. 那怎么把我们测量的px 转换为适配的rem呢?

    直接使用测量的px值 / 37.5 就是 rem的值

后面我们学习vue开发的时候,所有的单位我们写 px。就足够了。

LESS

less 可以帮我们把px单位转换到rem单位。

Less是一个CSS预处理器, Less文件后缀是.less

扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力。

Less插件:Easy Less(less文件保存自动生成css文件)

Less注释

  • 单行注释
    • 语法:// 注释内容
    • 快捷键:ctrl + /
  • 多行注释
    • 语法:/* 注释内容 */
    • 快捷键:ctrl + /
//体验Less
.box {
  // width: 100px + 200em;
  // height: 100px - 50rem;
  padding: 20rem * 30;
  // 除法特殊 尽量小括号
  margin: (100 / 20rem);
  background-color: pink;
}

less 运算

.box {
  width: 100px + 100;
  // 注意:单位的转换 计算的时候以第一个单位为准
  height: (100 / 37.5rem);
  // height: (100rem / 37.5);
  // height: 100px - 50;
  /*表达式存在多个单位以第一个单位为准*/
  height: (60px / 20rem);
  margin: (20px * 5) auto;
  padding: (10px / 5);
  border: 1px + 2 * 3 solid red;

}

注意点:

  1. 计算以第一个单位为准, 尽量写到最后一个数字上。 比如

     height: (100 / 37.5rem);
    
  2. 除法比较特殊,必须添加小括号。

  3. 计算别忘了先乘除后加减

less 嵌套

可以生成后代选择器

.father {
    width: 500px;
    height: 500px;
    background-color: purple;
    // 孩子
    .son {
        width: 200px;
        height: 200px;
        background-color: pink;
        p {
            color: red;
        }
    }

}

生成css之后:

.father {
  width: 500px;
  height: 500px;
  background-color: purple;
}
.father .son {
  width: 200px;
  height: 200px;
  background-color: pink;
}
.father .son p {
  color: red;
}

在这里插入图片描述

我们在写伪类和伪元素的时候,经常使用 & 来代替父元素

.nav {
  width: 100px;
  height: 100px;
  background-color: pink;
  &::before {
    content: '1';
  }
  &:hover::before {
    color: red;
  }
}
.nav {
  width: 100px;
  height: 100px;
  background-color: pink;
}
.nav::before {
  content: '1';
}
.nav:hover::before {
  color: red;
}

less 变量

变量最大的优点是: 方便使用和修改。

语法:

@变量名:;
@fontSize: 16px;

@suibian: hotpink;
body {
  background-color: @suibian;
}
p {
  background-color: @suibian;

}
div {
  color: @suibian;
}
nav {
  border: 1px solid @suibian;
}
body {
  background-color: hotpink;
}
p {
  background-color: hotpink;
}
div {
  color: hotpink;
}
nav {
  border: 1px solid hotpink;
}

less导入

less的导入实际 是 less 文件的导入。

导入: @import “文件路径”;
@import './less变量.less';
或
//如果是less文件,可以省略后缀.less
 @import './less变量';

注意 @import 空格 “文件路径”;
@import url(./less变量.less);

使用less导入的好处是: 减少了html页面 的 link标签数量。

less 导出

可以使用插件来设置导出:

  "less.compile": {
    "out": "../css/" // 设置导出css路径
  },

控制当前Less文件导出

手动给每个less文件指定导出

导出必须写到第一行

// out: 路径/文件名
// out: ./mycss/pink.css

设置导出: 当面目录下,创建一个 mycss 文件夹, 生成 一个 pink.css (做了改名)

// out: ./mycss/

设置导出: 当面目录下,创建一个 mycss 文件夹, 生成 一个 跟less一样的文件名(原名)

less 禁止导出

// out: false

小结

我们的需求的是要做移动端适配: 页面中的元素尺寸跟随屏幕宽度等比例缩放(适当调整大小)

方案如下:

flex + rem + flexiable.js + less

  1. 我们移动端采取 flex 布局
  2. rem单位: 做移动端适配的。
    • rem相对单位,跟html文字大小有关系
  3. 媒体查询: 检测屏幕的视口宽度
  4. flexiable.js :可以根据屏幕的宽度自动修改html文字大小
  5. less: less让我们的css具有了计算能力
    • less 可以让我们很方便的 把 px 转换为 rem

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础10:常用API

Java基础10&#xff1a;常用API一、Math二、System1. currentTimeMillis2. arraycopy三、Runtime四、Object1. toString2. equals3. clone五、Objects六、BigInteger1. 构造方法&#xff08;获取BigInteger&#xff09;2. 常用方法七、BigDecimal1. 构造方法&#xff08;获取Bi…

计算机相关专业混体制的解决方案(考公务员)

文章目录序&#xff1a;编制介绍1、公务员报考要求2、公务员工作待遇3、公务员工作内容4、公务员报考复习序&#xff1a;编制介绍 编制介绍&#xff1a;编制&#xff0c;也就是常说的铁饭碗。 编制的诞生为了控制吃财政饭的人员数量无限膨胀而设置的&#xff0c;所以名额有限受…

密码学基本概念

密码学简介 密码是经过加密过后的口令&#xff0c;是指用特定的变换对数据信息进行加密保护或者安全身份认证的物质和技术&#xff0c;密码学是对安全通信技术的研究&#xff0c;要能够有效的防范潜在攻击&#xff0c;也就是对信息加密解密的过程。 密码基本性质 密码学的发展…

CSS3 选择器 :nth-child 与 :nth-of-type 区别

一、:nth-child 1.1 说明 :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素&#xff0c;不论元素的类型。n 可以是数字、关键词或公式。 注意&#xff1a;如果第 N 个子元素与选择的元素类型不同则样式无效&#xff01; 1.2 示例 <style> div>p:nth-child(2…

1行Python代码识别身份证信息,还能自动告警,YYDS

大家好&#xff0c;这里是程序员晚枫。 录入身份证信息是一件繁琐的工作&#xff0c;如果可以自动识别并且录入系统&#xff0c;那可真是太好了。 今天我们就来学习一下&#xff0c;如何自动识别身份证信息并且录入系统~ 识别身份证信息 识别身份证信息的代码最简单&#x…

【金融量化】CTA策略之VeighNa量化实战笔记(1)

量化投资实战笔记 1 基本概念 1、一手股票&#xff1a;100支股票 2、收盘比开盘上涨的百分比&#xff1a;&#xff08;收盘-开盘&#xff09;/开盘 3、开盘比前日收盘的百分比&#xff1a;&#xff08;开盘-前日收盘&#xff09;/前日收盘 4、从dataframe中取每个月的第一天 …

Hgame-week 1(部分)

标题MISCSing InWhere am I神秘的海报e99p1ant_want_girlfriendWEDClassic Childhood Game改源码直接看jsBecome A MemberUser-Agent:Cookie:Referer:X-Forwarded-For:json请求方式登陆Guess Who I AmCRYPTO神秘的电话注意大小写REVERSEtest your IDAMISC Sing In aGdhbWV7V2…

【GPLT 二阶题目集】L2-027 名人堂与代金券

对于在中国大学MOOC&#xff08;http://www.icourse163.org/ &#xff09;学习“数据结构”课程的学生&#xff0c;想要获得一张合格证书&#xff0c;总评成绩必须达到 60 分及以上&#xff0c;并且有另加福利&#xff1a;总评分在 [G, 100] 区间内者&#xff0c;可以得到 50 元…

二十、Gtk4-GtkMenuButton, accelerators, font, pango and gsettings

本节将重新构造Tfe文本编辑器。 在工具栏上放置了打开、保存和关闭按钮。此外&#xff0c;GtkMenuButton被添加到工具栏中。当点击这个按钮时会显示一个弹出式菜单。在这里&#xff0c;弹出式的含义很广泛&#xff0c;包括下拉式菜单。新建、另存为、偏好和退出项目被放入菜单…

Java IO流之序列化流

序列化流/对象操作输出流 可以把Java中的对象写到本地文件中 序列化流的小细节 使用对象输出流将对象保存到文件时会出现NotSerializableException\color{#FF0000}{NotSerializableException}NotSerializableException 异常 解决方案&#xff1a;需要让JavaBean类实现Serializa…

【树】二叉树递归遍历和创建

二叉树的遍历二叉树的遍历是将二叉树的每个结点访问且访问一次遍历按根来说常用三种设访问根结点记作V&#xff0c;遍历根的左子树记作L&#xff0c;遍历根的右子树记作R&#xff1b;有&#xff1a;先序遍历VLR&#xff0c;中序遍历LVR&#xff0c;后序遍历LRV。这个遍历是递归…

设计模式 - 六大设计原则之ISP(接口隔离原则)

文章目录概述CaseBad ImplBetter Impl概述 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;,要求尽量将臃肿庞大的接口拆分成更小的和更具体的接口&#xff0c;让接口中只包含相关的方法。 接口隔离是为了高内聚、低耦合。 在实际的开发中&#x…

Altova MobileTogether 8.1

Altova MobileTogether 8.1 使用RecordsManager进行无代码开发的主要更新 可视化配置复杂条件的主要脚本扩展。 分层用户组。 客户端之间的UI兼容性模式 当开发人员希望应用程序在所有平台上看起来都一样&#xff0c;而不是使用每个平台的原生外观时&#xff0c;现在可以使用新…

蓝桥杯刷题016——最大子矩阵(尺取法+单调队列)

题目来源&#xff1a;最大子矩阵 - 蓝桥云课 (lanqiao.cn) 问题描述 小明有一个大小为 NM 的矩阵, 可以理解为一个 N 行 M 列的二维数组。 我们定义一个矩阵 m 的稳定度 f(m) 为f(m)max(m)−min(m), 其中 max(m) 表示矩阵 m 中的最大值, min(m) 表示矩阵 m 中的最小值。 现在小…

朴素贝叶斯分类

一、朴素贝叶斯法原理 1.基本原理 朴素贝叶斯法(Naive Bayes)是一种基础分类算法&#xff0c;它的核心是贝叶斯定理条件独立性假设。贝叶斯定理描述的是两个条件概率之间的关系&#xff0c;对两个事件A和B&#xff0c;由乘法法则易知(A∩B)P(A)P(B│A)P(B)P(A│B)(A∩B)P(A)P(…

离散数学与组合数学-06特殊的图

文章目录离散数学与组合数学-06特殊的图6.1 欧拉图6.1.1 哥尼斯堡七桥问题6.1.2 欧拉图的定义6.1.3 无向欧拉图的判定6.1.4 有向欧拉图的判定6.1.5 一笔画问题6.1.6 求回路6.2 哈密顿图6.2.1 周游世界问题6.2.2 哈密顿图的定义6.2.3 哈密顿图的必要条件6.2.4 哈密顿图的充分条件…

Hadoop基础之《(5)—MapReduce概述》

一、什么是MapReduce MapReduce将计算过程分为两个阶段&#xff1a;Map和Reduce。 1、Map阶段并行处理输入数据。 2、Reduce阶段对map结果进行汇总。 二、结构图 三、HDFS、Yarn、MapReduce三者之间的调用关系 HDFS三台服务器&#xff0c;第一台上有DataNode和NameNode。第二…

如何像程序员一样思考

如何像程序员一样思考 全世界越来越多的人发现了软件开发的乐趣和兴奋。一个你构建东西的职业&#xff0c;去打破它们&#xff0c;然后再把它们构建得更好。您可以经常设定自己的工作时间并与来自全球各地的客户一起工作的职业。一个可以自己当老板的职业&#xff1f;编程在 2…

android12.0(S) Launcher3 导入 AndroidStudio 调试编译

验证环境 aosp 12.0 源码&#xff0c;分支 android-12.0.0_r3 可以参考之前写的 android12.0(S) Pixel 3XL (QCOM 845) 编译刷机 AndroidStudio 版本 Android Studio Arctic Fox | 2020.3.1 Patch 4 gradle 版本 gradle-7.0.2-bin.zip gradle:7.0.4 二手 Pixel 3 XL一台可直…

[WUSTCTF2020]颜值成绩查询(布尔注入)

目录 信息收集 脚本 reference 信息收集 输入1出现固定的回显&#xff0c;输入2-4出现乱码 Hi admin, your score is: 100 输入其他特殊字符无回显&#xff0c;也无报错回显 采用布尔注入进行判断 布尔注入原理 代码存在SQL注入漏洞&#xff0c;然而页面即不会回显数据&am…