Web前端—移动Web第三天(移动Web基础、rem、less、综合案例—极速问诊)

本文主要是介绍Web前端—移动Web第三天(移动Web基础、rem、less、综合案例—极速问诊),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

版本说明

当前版本号[20231120]。

版本修改说明
20231120初版

目录

文章目录

  • 版本说明
  • 目录
  • 移动 Web 第三天
    • 01-移动 Web 基础
      • 谷歌模拟器
      • 屏幕分辨率
      • 视口
      • 二倍图
      • 适配方案
    • 02-rem
      • 简介
      • 媒体查询
      • rem 布局
      • flexible.js
      • rem 移动适配
    • 03-less
      • 注释
      • 运算
      • 嵌套
      • 变量
      • 导入
      • 导出
      • 禁止导出
    • 04-综合案例-极速问诊
      • 准备工作
      • 头部布局
      • 头部内容
      • banner 区域
      • 问诊类型布局
      • 问诊类型内容

移动 Web 第三天

01-移动 Web 基础

谷歌模拟器

模拟移动设备,方便查看页面效果

1681811083202

屏幕分辨率

分类:

  • 物理分辨率:硬件分辨率(出厂设置
  • 逻辑分辨率:软件 / 驱动设置

结论:以后编写代码时就要参考 逻辑分辨率 来制作了。

1681811157520

视口

作用:显示 HTML 网页的区域,用来约束 HTML 的尺寸

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><!– 视口标签 --><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body></body>
</html>
  • width=device-width:视口宽度 = 设备宽度(逻辑分辨率的宽度)
  • initial-scale=1.0:缩放1倍(不缩放)

二倍图

概念:设计稿里面每个元素的尺寸的倍数

作用:防止图片在高分辨率屏幕下模糊失真

使用方法:

image-20231119150753537

适配方案

  • 宽度适配:宽度自适应

    • 百分比布局
    • Flex 布局
  • 等比适配:宽高等比缩放

    • rem
    • vw

02-rem

简介

  • rem单位,是相对单位

  • rem单位是相对于HTML标签的字号计算结果

    如:此时我们给html标签大小为font-size:30px , 而width:5rem; height: 3rem;最后盒子在移动端显示的大小就是(30* 5)*(30*3)=150 * 90 pxc 了。

  • 1rem = 1HTML字号大小

1、看看是否能等比例缩小/放大,看移动端的适配效果

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 5rem;height: 5rem;background-color: pink;}</style>
</head>
<body><div> </div><script src="../js/flexible.js"></script>
</body>
</html>

就可以发现可以等比例缩小了。

image-20231119152118871

媒体查询

媒体查询能够检测视口的宽度,然后编写差异化的 CSS 样式

当某个条件成立, 执行对应的CSS样式

1681811369469

@media (width:320px) {html {background-color: green;}
}

通过对比,可以看到,符合视口宽度的背景颜色才会变成绿色,不符合的不会。

image-20231119153508734

rem 布局

目前rem布局方案中,将网页等分成10份, HTML标签的字号为视口宽度的 1/10

1681811438512

flexible.js

flexible.js 是手淘开发出的一个用来适配移动端的 js 库

核心原理就是根据不同的视口宽度给网页中 html 根节点设置不同的 font-size

【意思主要是在自己写代码的时候就不用自己写媒体查询了。】

<body>......<script src="./js/flexible.js"></script>
</body>

rem 移动适配

rem单位尺寸

  1. 确定基准根字号
  • 查看设计稿宽度 → 确定参考设备宽度(视口宽度) → 确定基准根字号(1/10视口宽度)
  • 目前大部分视口宽度为375,所以基准根字号可以旋转37.5
  1. rem单位的尺寸
  • rem单位的尺寸 = px单位数值 / 基准根字号

在上面我们可以看到,求rem的尺寸特别的麻烦,每一个都要除以37.5,这时我们就可以使用less去统一的操作。

03-less

Less是一个CSS预处理器, Less文件后缀是.less。扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力

注意:浏览器不识别 Less 代码,目前阶段,网页要引入对应的 CSS 文件

VS Code 插件:Easy LESS,保存 less文件后自动生成对应的 CSS 文件

1681811545628

注释

  • 单行注释
    • 语法:// 注释内容
    • 快捷键:ctrl + /
  • 块注释
    • 语法:/* 注释内容 */
    • 快捷键: Shift + Alt + A

运算

  • 加、减、乘直接书写计算表达式
  • 除法需要添加 小括号 或 . (注:但使用 . 这种用法的话,会出现红色波浪线,易让你以为是报错的代码提示 )
  • 表达式存在多个单位以第一个单位为准

1681811616094

嵌套

作用:快速生成后代选择器

1681811640347

提示:用 & 表示当前选择器,不会生成后代选择器,通常配合伪类或伪元素使用

1681811659709

如下图所示:

image-20231119162416698

有例外,如:&表示的是当前选择器,代码写到谁的大括号里面就表示谁,不会生成后代选择器。

image-20231119170454574

变量

概念:容器,存储数据

作用:存储数据,方便使用和修改

语法:

  • 定义变量:@变量名: 数据;
  • 使用变量:CSS属性:@变量名;
// 定义变量
@myColor: pink;
// 使用变量
.box {color: @myColor;
}
a {color: @myColor;
}

导入

作用:导入 less 公共样式文件

语法:导入: @import “文件路径”;

提示:如果是 less 文件可以省略后缀

@import './base.less';
@import './common';

注:这里是在less文件中导入别的less文件哦,并不是在html文件中导入!html文件是不可以导入less文件的,可以把less文件转成css文件才能进行导入!

导出

写法:在 less 文件的第一行添加 // out: 存储URL

提示:文件夹名称后面添加 /

// out: ./index.css
// out: ./css/

禁止导出

写法:在 less 文件第一行添加: // out: false

1681811772496

04-综合案例-极速问诊

1681811796608

准备工作

  • 项目目录

1681811827562

1、建立 less 文件,并导出成 css 文件。

// out: ../css/@import "./base.less";

image-20231119204626580

下图便是 /base.less 转的 /base.css 。

image-20231119204650448

  • 引入HTML 结构
<link rel="stylesheet" href="./iconfont/iconfont.css">
<link rel="stylesheet" href="./css/index.css"><body>......<script src="./js/flexible.js"></script>
</body>

头部布局

  • HTML 结构
<!-- 头部 -->
<header>1</header>
  • less 样式
// 头部
header {display: flex;justify-content: space-between;padding: 0 (15 / @rootSize);height: (44 / @rootSize);background-color: pink;line-height: (44 / @rootSize);
}

根据设计图,一步步来弄:

image-20231119205115812

头部内容

  • HTML 结构
<a href="#" class="back"><span class="iconfont icon-left"></span></a>
<h3>极速问诊</h3>
<a href="#" class="note">问诊记录</a>
  • less 样式
.icon-left {font-size: (22 / @rootSize);
}h3 {font-size: (17 / @rootSize);
}.note {font-size: (15 / @rootSize);color: #2CB5A5;
}

1、建立好框架。

<body><!-- 头部 --><header>1</header><script src="./js/flexible.js"></script>
</body>
/* 头部 */
header{height: (44 / 37.5rem);background-color: pink;
}

image-20231119210417305

2、将头部的文字填充好,并设置好居中的位置。

<!-- 头部 --><header><a href="#" class="back">1</a><h3>极速问诊</h3><a href="#" class="note">问诊记录</a></header>
/* 头部 */
header{display: flex;justify-content: space-between;height: (44 / 37.5rem);background-color: pink;
}

image-20231119211017058

3、设置好内边距。

padding: 0 (15 / 37.5rem);

image-20231119211139842

4、设置行高。

line-height: (44 / 37.5rem);

image-20231119211317253

5、再定义。

/* 定义变量 */
@rootSize:37.5rem;/* 头部 */
header{display: flex;justify-content: space-between;padding: 0 (15 / @rootSize);height: (44 / @rootSize);line-height: (44 / @rootSize);background-color: pink;
}
<a href="#" class="back"><span class="iconfont icon-left"></span></a>

image-20231119212059538

6、将文字的大小尺寸修改好。

header .back{font-size: (22 / @rootSize);
}header h3{font-size: (17 / @rootSize);
}header .note{font-size: (15 / @rootSize);color: #2CB5A5;
}

image-20231119212555884

7、把背景颜色注销掉后,便是我们想要的背景。

image-20231119212734946

banner 区域

  • HTML 结构
<!-- banner -->
<div class="banner"><img src="./assets/entry.png" alt=""><p><span>20s</span> 快速匹配专业医生</p>
</div>
  • less 样式
// banner
.banner {margin-top: (30 / @rootSize);margin-bottom: (34 / @rootSize);text-align: center;img {margin-bottom: (18 / @rootSize);width: (240 / @rootSize);height: (206 / @rootSize);}p {font-size: (16 / @rootSize);span {color: #16C2A3;}}
}

1、插入图片。

<!-- banner区域 --><div class="banner"><img src="./assets/entry.png" alt=""><p><span>20s</span> 快速匹配专业医生</p></div>
// bannner区域
.banner{text-align: center;
}

image-20231120142931213

2、使文字部分与图片之间有间隔。

margin-top: (30 / @rootSize);
margin-bottom: (34 / @rootSize);

image-20231120143129409

3、设置宽高。

img{height: (206 / @rootSize);width: (240 / @rootSize);}

image-20231120143450210

4、图片加上底部外边距。

margin-bottom: (18 / @rootSize);

image-20231120143646361

5、修改好字体的大小。

p{font-size: (16 / @rootSize);span{color: #16C2A3;}}

image-20231120144026435

问诊类型布局

  • HTML 结构
<!-- 问诊类型 -->
<div class="type"><ul><li><a href="#"><div class="pic">1</div><div class="txt">2</div><span class="iconfont icon-right"></span></a></li><li>2</li></ul>
</div>
  • less 样式
// 问诊类型
.type {padding: 0 (15 / @rootSize);li {margin-bottom: (15 / @rootSize);padding: 0 (15 / @rootSize);height: (78 / @rootSize);border: 1px solid #EDEDED;border-radius: (4 / @rootSize);a {display: flex;align-items: center;// 内容在78里面垂直居中height: (78 / @rootSize);}}
}

1、添加两个li标签,用于装放问诊类型。

<!-- 问诊类型 --><div class="type"><ul><li>1</li><li>2</li></ul></div>
// 问诊类型
.type{padding: 0 (15 / @rootSize);
}

image-20231120144353651

2、设置内边距,边框圆角,底部外边距。

// 问诊类型
.type{padding: 0 (15 / @rootSize);li{height: (78 / @rootSize);border: 1px solid #EDEDED;border-radius: (4 / @rootSize);margin-bottom: (15 / @rootSize);}
}

image-20231120144733536

3、在li标签里再加上内边距的要求。

padding: 0 (15 / @rootSize);

image-20231120145020840

4、使类型中的三块内容在flex布局中放在一起。

<li>    <a href=""><div class="pic">1</div><div class="txt">2</div><span class="iconfont icon-right"></span></a></li>
 a{display: flex;}

image-20231120145944368

5、将名为"a"的元素设置为弹性布局容器,将子元素的垂直对齐方式设置为居中对齐。

a{display: flex;align-items: center;height: (78 / @rootSize);}

image-20231120150230839

问诊类型内容

  • HTML 结构
<div class="pic"><img src="./assets/type01.png" alt="">
</div>
<div class="txt"><h4>三甲图文问诊</h4><p>三甲主治及以上级别医生</p>
</div>
<span class="iconfont icon-right"></span>
  • less 样式
img {margin-right: (14 / @rootSize);width: (40 / @rootSize);height: (40 / @rootSize);
}
.txt {flex:1;h4 {font-size: (16 / @rootSize);color: #3C3E42;line-height: (24 / @rootSize);}p {font-size: (13 / @rootSize);color: #848484;}
}
.iconfont {font-size: (16 / @rootSize);
}

1、插入小图片。

<div class="pic"><img src="./assets/type01.png" alt=""></div>
 img{margin-right: (14 / @rootSize);height: (40 / @rootSize);width: (40 / @rootSize);}

image-20231120150735566

2、将其在其父容器中的弹性大小设置为1,即它们将平均分配父容器的空间。

.txt{flex: 1;}

image-20231120151057399

3、将两段文字及字节图标放在一起。

h4{font-size: (16 / @rootSize);line-height: (24 / @rootSize);color: #3C3E42;margin-bottom: (4 / @rootSize);}p{font-size: (13 / @rootSize);line-height: (20 / @rootSize);color: #848484;}
.iconfont{font-size: (16 / @rootSize);}

image-20231120152212242

4、补充好内容。

<li>    <a href=""><div class="pic"><img src="./assets/type02.png" alt=""></div><div class="txt"><h4>普通图文问诊</h4><p>二甲主治及以上级别医生</p></div><span class="iconfont icon-right"></span></a></li>

image-20231120152516488

需要完整源码,可点击 点我查看 跳转,进行下载。

这篇关于Web前端—移动Web第三天(移动Web基础、rem、less、综合案例—极速问诊)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414017

相关文章

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06