媒体查询、rem移动端适配

简介: CSS

单位

rem: 相对于html元素的字体大小;

em: 相对于父元素的字体大小。

总结: rem可以通过修改html里面的文字大小来改变页面中元素的大小,达到整体控制。

媒体查询

/* 屏幕上宽度在540-969像素之间的显示为粉红色 */
@media screen and (min-width: 540px) and (max-width: 969px) {
    body {
        background-color: pink;
    }
}
/* 正常从小到大写 可以优化 */
@media screen and (min-width: 540px) {
    body {
        background-color: pink;
    }
}

1、mediataype查询类型

解释说明
all 用于所有设备
print 用于打印机和打印浏览
screen 用于电脑屏幕、平板电脑、智能手机等

2、关键字

解释说明
and 可以将多个媒体特性连在一起,相当于“且”
not 排除某个媒体类型,相当于“非”,可以省略
only 指定某个特定的媒体类型,可以省略

3、媒体特性

解释说明
width 定义输出设备中页面可见区域的宽度
min-width 定义输出设备中页面最小可见区域的宽度
max-width 定义输出设备中页面最大可见区域的宽度
总结: 可以根据不同的屏幕尺寸来改变不同的样式(从小到大写可以优化代码)

4、引入资源

<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">
eg:
/* 针对不同的屏幕尺寸 调用不同的css文件 */
<link rel="stylesheet" media="srceen and (min-width: 320px)" href="style320.css">
<link rel="stylesheet" media="srceen and (min-width: 640px)" href="style640.css">

Less(css预处理器)

引入了变量,Mixin(混入),运算以及函数等功能,降低了CSS的维护成本。(常见的预处理器:Sass、Less、Stylus)

安装 npm install -g less

查看版本 less -v

1、定义变量 @ (区分大小写)
@color: pink;
body {
    backgrounk-color: @color
}
div {
    color: @color
}
2、Vscode插件 (Easy LESS)

自动编译成css文件

3、嵌套

遇到伪类、交集选择器,我们内层选择器的前面需要加&

a {
    color: red;
    &:hover {
        color: blue; 
    }
    &::before {
        content: "";
    }
}
4、运算
  • 乘号(*)和除号(/)
  • 运算符中间左右要有个空格隔开 1px + 5
  • 对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位
  • 如果两个值之间只有一个值有单位,则运算结果就取该单位

rem适配方案

1、less+媒体查询+rem
1.1 常见设计稿尺寸宽度
设备 常见宽度
iPhone4、5 640px
iPhone6、7、8 750px
Android 大部分4.7~5寸的安卓设备时720px, 现在基本采用750px
1.2 实际开发方案逻辑
  1. 首先我们选一套标准尺寸(750为准);
  2. 我们用屏幕尺寸,除以,我们划分的份数,得到了html里面的文字大小,但是我们知道不同屏幕下得到的文字大小是不一样的;
  3. 页面元素的rem值 = 页面元素在750像素下的px值 / html 里面的文字大小
2、lib-flexible+rem
2.1、安装插件 lib-flexible
npm i lib-flexible --save
2.3、在main.js中引入lib-flexible
import 'lib-flexible/flexible'
2.4、安装px2rem loader
npm install px2rem-loader
2.5、配置px2rem-loader

在build文件中找到util.js,将px2rem-loader添加到cssLoaders中,如:

const cssLoader = {
    loader: 'css-loader',
    options: {
      minimize: process.env.NODE_ENV === 'production',
      sourceMap: options.sourceMap
    }
  }
  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUnit: 75
    }
  }

同时,在generateLoaders方法中添加px2remLoader

function generateLoaders (loader, loaderOptions) {
    const loaders = [cssLoader,px2remLoader]
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }
2.6、在vue的项目的根目录中打开 /src/HelloWorld.vue 文件,把template里面的东西全干掉,写上以下这些代码:
<template>
  <div class="hello">
    适配移动端
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->

<style scoped>
.hello {
  width: 200px;
  height: 200px;
  font-size: 36px;
  margin: 0 auto;
  box-sizing: border-box;
  border: 1px solid green;
}
</style>
目录
相关文章
|
XML JSON 前端开发
官方Lottie库能力增强实现
背景Lottie提供了播放复杂、酷炫动能力画,在移动端被广泛利用。在我们的应用中也被频繁、大量使用。它使用简单,仅需几行代码就能播放设计师设计的动画,帮助开发节省了时间成本。也正因为使用频繁,在使用过程中我们遇到了一些相关的问题。使用Lottie支持加载本地文件播放,也支持远程下载zip,json文件进行播放。这俩者在我们平时开发中都有使用到。本地播放本地播放比较简单。可以直接在xml实现,也可以
2052 0
官方Lottie库能力增强实现
|
4月前
|
人工智能 JavaScript 前端开发
从零开始:手把手教你用Vue构建完美复刻大模型打字效果的对话界面
本文深入解析AI对话应用中流式输出(Streaming)的实现原理与工程实践,涵盖SSE协议选型、Fetch+ReadableStream替代EventSource、Vue响应式流处理、Markdown实时渲染、光标动画、平滑滚动、AbortController中断、DOM性能优化及XSS防护等核心环节,助力打造专业级流式交互体验。(239字)
845 0
|
12月前
|
开发工具 git
解决git push时的错误提示:“error: src refspec master does not match any”
8 .如果确认以上都无误但依然出现该提示,则可能需要重新设置跟踪上游(upstream),通过如下命令:
4711 8
|
JSON 前端开发 JavaScript
前端使用lottie-web,使用AE导出的JSON动画贴心教程
前端使用lottie-web,使用AE导出的JSON动画贴心教程
2615 2
|
人工智能 数据可视化 数据处理
从0到1只需“拖一拖”,开发时间按秒算——低代码到底有多牛
低代码平台正颠覆传统软件开发模式,通过可视化开发、模块化组件和自动化工具,将复杂开发过程大大简化。开发者只需“拖拽”组件并配置参数,即可快速构建应用,无需复杂编程。这不仅大幅缩短开发周期,从数月缩短至几天甚至几小时,还显著降低成本。低代码平台支持实时预览、自动代码生成和快速部署,提升开发效率与团队协作能力。其核心引擎(如SQL引擎、功能引擎等)不断升级,确保高效、灵活的开发体验,并通过模型驱动开发实现智能自动化。此外,低代码平台增强数据处理能力,支持跨数据库兼容性和实时流处理,满足复杂业务需求。AI技术的融合进一步优化开发体验,提供智能代码助手、故障排查等功能。
|
前端开发 JavaScript API
技术笔记:vue+pdfh5实现将pdf渲染到页面上
技术笔记:vue+pdfh5实现将pdf渲染到页面上
|
编解码 前端开发 JavaScript
响应式设计与移动端适配技巧:打造无缝用户体验
【7月更文挑战第29天】响应式设计与移动端适配是提升网站和应用用户体验的关键环节。通过遵循响应式设计的核心原则,并结合一系列移动端适配技巧,我们可以打造出既美观又实用的跨平台应用,满足不同用户的多样化需求。随着技术的不断进步和用户需求的日益复杂,持续学习和实践这些技巧将是我们作为开发者的重要任务。
|
搜索推荐 数据可视化 BI
ECharts 蓝色系-荧光图标折线图01案例
ECharts 案例展示了一周内各路线数据的蓝色荧光折线图,揭示流量趋势。预览包括静态图片和动态GIF。使用ECharts 5.2.0配置图表,包含背景、网格、图例及数据。代码示例初始化图表、定义X轴类别和Y轴值,以及系列颜色。完整案例可在链接中下载。案例结合动态效果与个性化设计,增强数据可视化的吸引力。
638 0
ECharts 蓝色系-荧光图标折线图01案例
|
前端开发 容器
CSS实现多行文本的展开收起
CSS实现多行文本的展开收起
904 0