响应式布局-媒体查询media基本操作和一般适配方案

📖媒体查询media是CSS3中引入的功能,可以根据设备的特性,如屏幕宽度、设备类型和分辨率等,动态调整网页样式和布局。开发中我们可能会接触各种设备和屏幕尺寸,通过响应式布局优化用户体验的效果。 阅读文章可以学会

  • 🥰媒体查询基本知识
  • 🎉media实操
  • 🔨项目的一般适配方案

前置知识

用一张图概括media语法

运算符

  • not : 取反运算符
    • 如果满足media query则不生效,否则生效
    • 如果出现在以逗号分隔的查询列表中,它将仅否定应用了该查询的特定查询
    • 必须指定媒体类型
  • only : only 运算符
    • 仅在整个查询匹配时才用于应用样式
    • 必须指定媒体类型
  • , (逗号) 类似逻辑或运算符
    • 用于将多个媒体查询合并为一个规则
    • 如果列表中的任何查询为 true,则整个 media 语句均返回 true
  • and : 与运算符
    • 用于将多个媒体查询规则组合成单条媒体查询,当每个查询规则都为 true 时则该条媒体查询为 true
    • 还用于将媒体功能与媒体类型结合在一起

媒体类型 media type

  • all 用于所有设备
  • screen 用于电脑屏幕,平板电脑,智能手机等
  • print 用于打印机和打印预览
  • speech 应用于屏幕阅读器等发声设备 还有一些例如aural、braille、embossed、nandheld等都已废弃

其实我们大多就只使用screen这个类型,其他基本接触不到,结合运算符,其实大多情况下,下面三条语句等同

css 复制代码
@media only screen and (query){
}

@media all and (query){
}

@media (query){
}

再举一个print例子

css 复制代码
@media print {
    body {
        color: blue;
    }
}

常见的query

(max/min)-(width/height)

举例 (max-width: 400px) 表示如果宽度小于400px,应用重载样式(当然其他判断条件也要成立)

下面三个查询语句效果相同

css 复制代码
/* @media  (max-width: 400px){} */ 
/* @media  all and (max-width: 400px){} */
@media only screen and (max-width: 400px) {
    h2 {
        font-size: 0.9rem;
    }
    p {
        font-weight: 600;
    }
    body {
        color: blue;
    }
}

(min-width: 600px) 表示如果宽度大于600px,应用重载样式

css 复制代码
/* @media  (min-width: 600px){} */
/* @media  all and (min-width: 600px){} */
@media only screen and (min-width: 600px) {
    h2 {
        font-size: 0.9rem;
    }
    p {
        font-weight: 600;
    }
    body {
        color: blue;
    }
}

max/min - height 和上面实现类似

orientation 方向

landscape(横向) 注意观察长和宽的值 当长 > 宽就是横向

css 复制代码
@media (orientation:landscape) {
    body {
        color: blue;
    }
}
  • portrait(竖向)类似

aspect-ratio 纵横比

和上面orientation类似,但是数值更具体一些

css 复制代码
@media (min-aspect-ratio: 8/5) {
    body {
        color: red;
    }
}
@media (max-aspect-ratio: 3/2) {
    body {
        color: blue;
    }
}
@media (aspect-ratio: 1/1) {
    body {
        color: green;
    }
}

上面语句表示

  • 当aspect-ratio > 8/5 时 显示红色
  • aspect-ratio < 3/2 显示蓝色
  • 3/2 < aspect-ratio < 8/5 显示默认颜色
  • aspect-ratio == 1 / 1 显示绿色

一般解决方案

移动端响应式设计容器的预定义媒体查询 xs、sm、md、lg、xl、2xl分别表示extra small、small、medium、large、extra large、2 extra large

css 复制代码
.container {
  width: 100%;
  margin: 0 auto;
}

/* xs */
@media (min-width: 475px) {
  .container {
    max-width: 475px;
  }
}

/* sm */
@media (min-width: 640px) {
  .container {
    max-width: 640px;
  }
}

/* md */
@media (min-width: 768px) {
  .container {
    max-width: 768px;
  }
}

/* lg */
@media (min-width: 1024px) {
  .container {
    max-width: 1024px;
  }
}

/* xl */
@media (min-width: 1280px) {
  .container {
    max-width: 1280px;
  }
}

/* 2xl */
@media (min-width: 1536px) {
  .container {
    max-width: 1536px;
  }
}

pc端响应式设计容器的预定义媒体查询

css 复制代码
.container {
  max-width: 1536px;
  margin:0 auto;
}

/* 2xl */
@media (max-width: 1536px) {
  .container {
    max-width: 1280px;
  }
}

/* xl */
@media (max-width: 1280px) {
  .container {
    max-width: 1024px;
  }
}

/* lg */
@media (max-width: 1024px) {
  .container {
    max-width: 768px;
  }
}

/* md */
@media (max-width: 768px) {
  .container {
    max-width: 640px;
  }
}

/* sm */
@media (max-width: 640px) {
  .container {
    max-width: 475px;
  }
}

/* xs */
@media (max-width: 475px) {
  .container {
    width: 100%;
  }
}

响应效果

参考

相关推荐
undefined&&懒洋洋10 分钟前
Web和UE5像素流送、通信教程
前端·ue5
大前端爱好者2 小时前
React 19 新特性详解
前端
随云6322 小时前
WebGL编程指南之着色器语言GLSL ES(入门GLSL ES这篇就够了)
前端·webgl
随云6322 小时前
WebGL编程指南之进入三维世界
前端·webgl
寻找09之夏3 小时前
【Vue3实战】:用导航守卫拦截未保存的编辑,提升用户体验
前端·vue.js
多多米10054 小时前
初学Vue(2)
前端·javascript·vue.js
柏箱4 小时前
PHP基本语法总结
开发语言·前端·html·php
新缸中之脑4 小时前
Llama 3.2 安卓手机安装教程
前端·人工智能·算法
hmz8564 小时前
最新网课搜题答案查询小程序源码/题库多接口微信小程序源码+自带流量主
前端·微信小程序·小程序
看到请催我学习4 小时前
内存缓存和硬盘缓存
开发语言·前端·javascript·vue.js·缓存·ecmascript