web前端学习第二十三天

移动适配
目录:

  1. rem
  2. less

rem : 目前多数企业在用的解决方案
vw / vh:未来的解决方案
在这里插入图片描述
长度单位
目标:能够使用rem单位设置网页元素的尺寸

网页效果
屏幕宽度不同,网页元素尺寸不同(等比缩放)

px单位或百分比布局可以实现吗?

  1. px单位是绝对单位
  2. 百分比布局特点宽度自适应,高度固定

适配方案
rem
vw / vh

rem单位

相对单位
rem单位是相对于HTML标签的字号计算结果
1rem = 1HTML字号大小

rem移动适配 - 媒体查询
目标:能够使用媒体查询设置差异化CSS样式

思考
手机屏幕大小不同,分辨率不同, 如何设置不同的HTML标签字号?
媒体查询

媒体查询能够检测视口的宽度,然后编写差异化的 CSS 样式
当某个条件成立, 执行对应的CSS样式

写法
在这里插入图片描述

设备宽度不同,HTML标签字号设置多少合适?

  1. 设备宽度大, 元素尺寸大
  2. 设备宽度小,元素尺寸小

rem移动适配
能够使用rem单位设置网页元素的尺寸

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

在这里插入图片描述

rem适配原理
实现在不同宽度的设备中,网页元素尺寸等比缩放效果

思考:
工作中,书写代码的尺寸要参照设计稿尺寸,设计稿中是px还是rem?

如何确定rem的数值?

在这里插入图片描述
rem单位尺寸

  1. 根据视口宽度,设置不同的HTML标签字号
  2. 书写代码,尺寸是rem单位

确定设计稿对应的设备的HTML标签字号
查看设计稿宽度 → 确定参考设备宽度(视口宽度) → 确定基准根字号(1/10视口宽度)

rem单位的尺寸计算方法
N x 37.5 = 68 → N = 68 / 37.5
rem单位的尺寸 = px单位数值 / 基准根字号

在这里插入图片描述

flexible
目标:使用flexible js配合rem实现在不同宽度的设备中,网页元素尺寸等比缩放效果

思考:咱们检测了3个视口,分别设置了根字号,有什么弊端吗?
答:手机设备多,屏幕尺寸不一,视口不仅仅有这3个

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

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

在这里插入图片描述

Less
目标:使用Less运算写法完成px单位到rem单位的转换

思考:在px单位转换到rem单位过程中,哪项工作是最麻烦的?
答:除法运算。CSS不支持计算写法
解决方案:可以通过Less实现。

Less是一个CSS预处理器, Less文件后缀是.less
扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力。
注意:浏览器不识别Less代码,目前阶段,网页要引入对应的CSS文件。

编译插件
目标:使用Less语法快速编译生成CSS代码

Easy Less :
vscode插件
作用:less文件保存自动生成css文件
在这里插入图片描述

Less语法

目标:使用Less语法快速编译生成CSS代码
注释:
单行注释
语法:// 注释内容
快捷键:ctrl + /

块注释
语法:/* 注释内容 */
快捷键: shift + alt + A

运算:
加、减、乘直接书写计算表达式
除法需要添加 小括号 或 .
在这里插入图片描述

注意:
表达式存在多个单位以第一个单位为准

能够使用Less嵌套写法生成后代选择器
嵌套:
思考:书写CSS选择器时, 如何避免样式冲突

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

语法:
在这里插入图片描述
注意:&不生成后代选择器,表示当前选择器,通常配合伪类或伪元素使用
在这里插入图片描述

变量
思考:
网页中, 文字文字颜色基本都是统一的, 如果网站改版,变换文字颜色, 如何修改代码?
方法一:逐一修改属性值(太繁琐)
方法二: 把颜色提前存储到一个容器,设置属性值为这个容器名

方法二: 把颜色提前存储到一个容器,设置属性值为这个容器名
变量:存储数据,方便使用和修改。
语法:

  1. 定义变量:@变量名: 值;
  2. 使用变量:CSS属性:@变量名;
    在这里插入图片描述
    能够使用Less导入写法引用其他Less文件

思考:
在这里插入图片描述

开发网站时,网页如何引入公共样式?
CSS:书写link标签
Less:导入

导入: @import “文件路径”;
在这里插入图片描述
使用Less语法导出CSS文件
思考:
目前,Less文件导出的CSS文件位置是哪里?

方法一:
配置EasyLess插件, 实现所有Less有相同的导出路径

配置插件: 设置 → 搜索EasyLess → 在setting.json中编辑 → 添加代码(注意,必须是双引号)
在这里插入图片描述

方法二:控制当前Less文件导出路径
Less文件第一行添加如下代码, 注意文件夹名称后面添加 /
在这里插入图片描述

思考:所有的Less文件都需要导出CSS文件吗?
禁止导出
在less文件第一行添加: // out: false
在这里插入图片描述

### 第十四届蓝桥杯 Web 前端真题解析 #### 一、考试注意事项 根据比赛规则,考生应严格遵循以下事项[^1]: - 不得修改由竞赛平台提供的项目文件中的任何默认设置,包括但不限于文件名称、文件夹路径、类名(class)、ID 名以及图片名称等。 - 完成答题后,需将对应的代码文件夹压缩为 ZIP 格式并上传至指定位置。如果采用其他格式,则视为无效提交。 #### 二、插值语法与模板字符串的应用 在一道关于动态生成水印的题目中,提供了如下函数实现方式[^2]: ```javascript function createWatermark(text, color, deg, opacity, count) { const container = document.createElement("div"); container.className = "watermark"; for (let i = 0; i < count; i++) { container.innerHTML += `<span style="color: ${color}; transform: rotate(${deg}deg); opacity: ${opacity};">${text}</span>`; } return container; } ``` 此方法通过 `template literals` 动态构建 HTML 结构,并将其附加到页面上的特定区域。其中 `${}` 插入变量或表达式的值来定制样式和内容。 #### 三、自定义 Vue 组件设计 针对评分系统的功能需求,`my-rate.vue` 是一个核心组件[^3]。它支持多维度打分机制,具体表现为以下几个方面: - **交互逻辑**: 用户可以分别对速度 (`speed`)、风味 (`flavour`) 和包装 (`pack`) 进行独立评价。 - **事件绑定**: 当三个维度全部完成评分之后,会触发名为 `change` 的自定义事件。该事件携带的对象参数结构如下所示: ```json { "speed": number, "flavour": number, "pack": number } ``` 上述数据可用于后续处理流程,比如存储用户反馈或者计算综合得分。 --- ### 问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值