首页 > 其他分享 >Day09_单位转换-综合案例

Day09_单位转换-综合案例

时间:2024-11-18 14:14:15浏览次数:3  
标签:Day09 转换 rem height 单位 案例 视口 vw 字体大小

Day09_单位转换-综合案例

背景 : 前面我们已经把HarmonyOS生态系统中的PC端和移动端的项目进行了开发 ; 但是我们目前使用的单位是px ( 像素 ) 单位 , 是一种固定形式的布局, 但是再实际开发的时候我们可使用的单位还是有很多的 ; 本节课我们主要学习的就是常见的单位

今日学习目标

  1. 常见单位
  2. 单位转换
  3. 不同单位再Harmony生态里面的应用
  4. 常见的Harmony生态中APP的布局方法
  5. 综合案例

1. 常见单位

​ 背景 : 实际开发的过程中布局单位有很多, 每一种单位代表了不同的含义 , 接下来要详细为大家解释一下常见的单位有哪些

1) 固定单位px

​ 含义 : 单位名称为像素,可以理解成在当前电脑分辨率的情况下是固定单位 ; 但是像素px是相对于显示器屏幕分辨率而言的。像素的使用性特别广。使用px定义文字,无论用户怎么设置,都不会改变大小。

​ 案例 :

<style>
    *{margin:0;padding:0}
    /* 在这里需要注意的是px为固定单位, 就算使用对应的方法,把浏览器显示比例放大或者是缩小, 元素的大小和字体的大小仍然是固定的值 */
    div{
        width:200px;
        height:200px;
        background-color:red;
        font-size:30px
    }
</style>
<div>我是一个普通的div</div>

2) 百分比单位%

​ 含义 : 百分比单位是占容器或者是父元素的百分之多少 , 一般应用于宽度高度上面比较多 ; 同时在窗口的自适应里面应用频率比较高 ; 如果高度使用百分比单位 , 推荐一定要添加 html,body{height:100%} 此代码; 因为元素默认高度是自适应的 ( height:auto ) ;

​ 案例 :

<style>
    /*3)如果想要让div占满整个窗口的大小 需要把子元素设置成高度100% 同时添加代码*/
    body,body{
        height:100%
    }
    body{
        /*2)当付父元素有固定的高度的话, 则子元素会有自己的高度; 百分比使用父元素这里取值占比*/
        /*height:100px;*/
    }
    div{
        width:500px;
        /*此时高度为固定的高度*/
        /*height:500px;*/
        background-color:red;
        /*1)注释掉固定高度换成百分比单位*/
        /*高度使用百分比实现不了对应的效果*/
        height:50%;
    }
</style>
<body>
	<div></div>
</body>

3) 相对单位em

​ 含义 : 单位名称为相对长度单位。它没有一个固定数值,支持小数点后三位数,相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

​ 注意 : 若父元素设置了文本大小,这父级大小会随文本大小而改变,会继承父级元素的字体大小。

​ 注意 : em是一个单位 , 可以应用于字体上面, 也可以应用于宽度高度上面均可以实现效果; 简而言之, 只不过是根据字体大小进行缩放的一个倍数

​ 案例1 :

<style>
    *{
        margin:0px;
        height:0px;
    }
    div{
        width:300px;
        height:300px;
        background-color:red;
        /*父元素字体大小*/
        /*当父元素拥有自己的字体大小,子元素没有自己的字体大小,则em参照的是父元素字体大小;*/
        /*10em=200px*/
        font-size:20px
    }
    /*在这里:em是相对单位,元素本身没有字体大小, 父元素也没有字体大小则参照的是默认字体:16px*/
    /*此时10em=160px*/
    p{
        width:10em;
        height:10em;
        font-size:1em;
    }
</style>
<div>
	<p>
        千锋教育
    </p>
</div>

​ 案例2 :

<style>
    *{
        margin:0px;
        height:0px;
    }
    div{
        width:300px;
        height:300px;
        background-color:red;
        font-size:20px
    }
    /* 在这里父元素拥有自己的字体大小; 子元素也有自己的字体大小; */
    /* 当有自己的字体大小的时候, 我们em参照的是以自己的字体为参照 */
    /*10em=180px*/
    p{
        width:10em;
        height:10em;
        font-size:1em;
        font-size:18px;
    }
</style>
<div>
	<p>
        千锋教育
    </p>
</div>

4) 相对单位rem

​ 含义 : rem是CSS3新增的一个相对单位(root em,根em),是相对HTML根元素。通过它既可以做到只修改根元素就可以成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。 目前,除了IE8及更早版本外,所有浏览器均已支持rem。

​ 案例 :

<style>
    *{
        margin:0px;
        height:0px;
    }
    div{
        width:300px;
        height:300px;
        background-color:red;
        font-size:20px
    }
    /* 在此案例中,子元素, 父元素均有自己的字体大小; */
    p{
        width:10rem;
        height:10rem;
        font-size:1rem;
        font-size:18px;
    }
</style>
<div>
	<p>
        千锋教育
    </p>
</div>

5) vw和vh

​ 含义 : vw和vh代表了视口的宽度和视口的高度 , vw代表的是viewport width 视口的宽度 ; vh代表的是viewport height 视口的高度 ; 视口指的是浏览器的可视区域;而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Viewport(视觉视口),Ideal Viewport(理想视口); 在这里的视口宽度视口高度我们代表的是 : 视觉视口 ;

​ 注意1 : width:100vw; 代表的是一个完整的视口宽度 ; height:100vh; 代表的是一个完整的视口高度 ; 如果要考虑单位转换, 则需要考虑不同屏幕窗口的大小 ;

​ 注意2 : 1vw = 代表了视口宽度的 1% 1vh = 代表了视口高度的 1% ;

​ 注意3 : 如果是iPhone678手机中 , 手机屏幕尺寸宽度375px 100vw = 375px 1vw = 视口宽度的1% = 3.75px

​ 注意4 : vw和vh是单位 , 可以应用于宽度,高度, 字体大小 ; 如果宽度高度使用同一个单位的话 , 则能出现一个正方向, 同时能进行伸缩显示; vw再实际开发的时候使用频率域rem一样; 都有使用的;

​ 案例 :

<style>
    *{margin:0;padding:0}
    div{
        width:10vw;
        height:10vw;
        background-color:red;
        font-size:2em
    }
</style>
<div>
	你好
</div>

6) vmin和vmax

​ 含义 : vmin和vmax代表了视口宽度和视口高度里面的最小值和最大值 ; vmin 代表的是 vw 和 vh 中的最小值 ; vmax 代表的是 vw 和 vh 中的最大值 ; 主要考虑到横纵屏幕切换的时候 , 让我们的界面变得更加美观 ; 但是再实际开发过程中 , 使用vmin的频率比较高 ;

​ 特点 :

<style>
    *{margin:0;padding:0}
    html,body{height:100%}
    body{
        display:flex;
        flex-direction:column;
    }
    header{
        height:10vmin;
        background-color:blue;
    }
    section{
        flex:1;
        background-color:yellow;
    }
    footer{
        height:10vmin;
        background-color:orange;
    }
    /*切换到设备模拟器之后,切换横纵屏幕;头部所占的高度是一样, 使用vmin 的时候, 该单位参照的是视口中的最小值; */
</style>
<body>
    <header>头部</header>
    <section>主体</section>
    <footer>尾部</footer>
</body>

2. 单位转换

1) px to rem

​ 像素单位和rem单位进行转换的时候 , 可以使用插件进行转换, 除了插件转换之外 , 还可以自行转换rem也是可行的; 接下来我们使用传统的方式来恢复单位转换 ;

<!--单位转换px to rem-->
<style>
    *{margin:0;padding:0}
    /*
    	设计稿测量的大小为 : 300px * 300px 
    	在这里我们需要注意的是 需要讲300px*300px 转换成rem单位使用
    	1) 了解 300px * 300px 是物理像素
    	2) 首先需要讲物理像素转换成可以写在代码里面的CSS像素: 物理像素 / dpr = CSS像素 
    		得出 : 300/2 * 300/2
    		最终 : 150px * 150px  这个距离是我们CSS像素
    	3) 最终开发的时候我们需要讲CSS像素中的数值转换成rem单位; 
    		rem是相对于根目录字体大小进行缩放的倍数; 如果想要转换成rem我们需要知道 1rem=16px
    		所以编码的时候如果想要使用rem单位
    		则需要讲CSS像素,继续将距离除以赌赢的字体大小
    		w : 150 / 16 = 9.375rem
    		h : 150 / 16 = 9.375rem
    	4) 总结一点 : 如果想要转换成rem单位, 我们需要将 测量的距离 / dpr / font-size 即可完成
    	5) 需要注意的是 每次除以对应的根目录字体大小不好完成, 但是我们可以调整根目录字体大小;也是可以的
    		例如:调整根目录字体大小为:50px; 
    			300 / 2 /50 = 300 / 100 =0.3rem
    		也许有的小伙伴会有疑问, 为哈两次计算的结果不一样 ? 原因点就是根目录字体大小调整了;
    */
    div{
       	width:9.375rem;
        height:9.375rem;
        background-color:red
    }
</style>
<div>
</div>

2) px to vw

​ 乍一看像素单位和vw单位之间没有任何联系 , 但是像素单位和vw之间也存在千丝万缕的关系 , vw代表的是视口的距离 , 视口的距离默认就是像素单位; 100vw代表了一整个完整的视口 ; 所以要考虑像素和vw单位必然得考虑手机机型;

​ 注意 : 需要注意的是 , 像素和vw单位转换的时候 , 比较复杂, 实际开发的时候我们可以使用插件完成

<style>
	/*
    	1) 以iPhone45为例
    		100vw=320px  ?  为啥是320px 因为手机屏幕视口的宽度为320px
    		转换
    		  1vw=3.2px
    		提问
    		  1px=?vw   需要等式左右除以320即可
    		  1px=0.3125vw
    		100px=31.25vw
    
    	2) 以iPhone678为例
    		100vw=375px  ?  为啥是375px 因为手机屏幕视口的宽度为375px
    		转换
    		  1vw=3.75px
    		提问
    		  1px=?vw
    		  1px=0.2667vw
    		100px=26.67vw
    */
</style>
<div>
</div>

3. 不同单位再Harmony里面的应用

​ 开发过程中常见的单位以rem和vw和vmin使用的频率比较高 ; 所以这些方法一定要知道

4. 综合案例

​ 案例1

​ 案例2

​ 案例3

标签:Day09,转换,rem,height,单位,案例,视口,vw,字体大小
From: https://blog.csdn.net/weixin_51326968/article/details/143817704

相关文章

  • ABAP开发学习——内外部转换
    如图可以看到在SAP中数据有时会出现不同的未转换值,在数据库中存储未转换值,但在报表中需要更改成转化的值,方便用户的浏览 开发报表时可以考虑使用该函数实现内外部值的转换......
  • 使用 PowerShell 的 Get-LocalUser 命令可以获取本地用户账户的详细信息。要将输出转
    使用PowerShell的Get-LocalUser命令可以获取本地用户账户的详细信息。要将输出转换为JSON格式,使用ConvertTo-Json命令,这样可以方便地查看和分析这些信息,尤其是在处理多个用户账户时。步骤说明1.使用 Get-LocalUser 获取本地用户信息Get-LocalUser命令用于列出本地......
  • 使用 Go 语言进行多时区时间转换
    使用Go语言进行多时区时间转换在日常开发中,我们经常会遇到跨境电商、国际会议调度等全球化应用的需求,这时处理多时区的时间就是一个普遍问题。例如,你可能需要将某个事件的北京时间转换为洛杉矶时间、纽约时间和伦敦时间等。本文将详细介绍如何使用Go语言优雅地完成这一任务。......
  • 通过Js将时间转换为刚刚、几分钟前、几小时前
    前言常见的评论或者朋友圈都能看到的发送时间是刚刚,几分钟前,几小时前,如何把时间改成这样呢?代码首先需要传入的是评论时间,格式如:2020-01-1220:10:15/***dateTimeStamp是评论的发送时间2020-01-1220:10:15这样的形式*@paramdateTimeStamp......
  • javaScript交互案例
    1、模态框(弹出框)(1)、需求:点击弹出层,会弹出模态框,并且显示灰色半透明的遮挡层点击关闭按钮,可以关闭模态框,并且同时关闭半透明遮挡层鼠标放在模态框最上面一行,可以按住鼠标拖拽模态框在页面中移动鼠标松开,可以停止拖动模态框移动思路:点击弹出层,模态框和遮挡层就会显示出来d......
  • HarmonyOS Next 密钥转换技巧:提升加解密灵活性
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、引言在当今数字化安全领域,密钥转......
  • Java学习教程,从入门到精通,Java继承语法知识点及案例代码(29)
    1、Java继承语法知识点及案例代码一、继承的基本概念继承是面向对象编程中的一个重要概念,指的是子类从父类继承属性和方法的能力。通过继承,子类可以直接访问父类的非私有属性和非私有方法,实现代码重用和扩展。二、继承的语法在Java中,使用关键字extends来实现继承。子类......
  • 通过将 USB to TTL 转换器连接到路由器的串口接口,并使用串口终端软件,你可以访问路由器
    USBtoTTL是一种常见的电子接口转换器,它将USB接口转换为TTL(Transistor-TransistorLogic)电平的串行通信接口。TTL电平通常用于嵌入式系统、单片机、开发板等硬件设备之间的通信。具体来说,它是一种USB转串行通信接口的桥接器。什么是USBtoTTL?USB(UniversalSerial......
  • C++类型转换详解
        在C语言和C++有很多的类型转换,内置类型(int,char,bool等等编译器自带的)之间的转换像隐式类型转换,强制类型转换,此外还有自定义类型(自己定义的类)和内置类型的转换,自定义类型间的转换,父类和基类之间的类型转换。总之C语言和C++的类型转换复杂多样,如果你对上面的内容有......
  • 利用kali实现永恒之蓝案例重演
    永恒之蓝案例重演1、输入msfconsole进入工具使用菜单2、永恒之蓝的编号是ms17-010,可以直接搜索searchms17-010 3、首先利用扫描辅助工具扫描漏洞端口(永恒之蓝攻击的端口是445)Useauxiliary/scanner/smb/smb_ms17_010Requird列表下面显示yes是必填项RHOSTS需要填写要扫......