首页 > 其他分享 >响应式设计(媒体查询)

响应式设计(媒体查询)

时间:2024-04-03 14:48:57浏览次数:20  
标签:媒体 media 查询 响应 background div width

什么叫做响应式呢?

实际上是指一套代码能够在不同的设备下有着不一样的表现。响应式设计依托于 CSS3 中的媒体查询,通过查询当前设备的一个尺寸信息,然后应用不同的样式。

响应式设计在刚推出时非常的火,因为那个时候也没有什么专门针对移动设备设计的页面,而且一套代码就能解决 PC、平板和手机不同设备的各种布局,如果能把 PC 端的页面稍微改一改就变成手机和平板的页面,自然是很好的。

缺点

  • 代码冗余,有一些东西是特定 PC 端有,有一些东西是特定手机端有,但是因为是一套代码,因此无论是 PC 端还是手机平板端,这些代码都会有

  • 移动端和 PC 端还是有一定的差异性,比如移动端可以两根手指放大页面,而这个在 PC 端是没有的,随着移动端的代码和 PC 端差异越大,使用一套代码就会越感到力不从心

因此,响应式设计在今天看来是有一点没落了,特别是对于互联网公司,还是宁愿 PC 和移动端不同的代码分开,然后移动端再去解决适配的问题即可。

但是对于一些产品型的公司(例如上面的星巴克),因为网站只是用于展示公司的产品为主,所以仍然还在使用响应式设计。

媒体查询介绍

所谓媒体查询,指的就是根据一个或多个基于设备类型、具体特点和环境来应用样式。

关于媒体查询,可以在其官网 https://drafts.csswg.org/mediaqueries/ 上面查询到最新的内容。

在使用媒体查询时,需要注意以下几点:

  • 网页宽度自动调整
  • 尽量少使用绝对宽度
  • 字体的大小使用相对单位(rem、em
  • 布局尽量使用流式布局

媒体类型

首先我们来看媒体类型,具体有如下的类型:

  • all:所有设备
  • print:打印机设备
  • screen:彩色的电脑屏幕
  • speech:听觉设备(针对有视力障碍的人士,可以把页面的内容以语音的方式呈现的设备)

注意:tty、tv、projection、handheld、braille、embossed、aural 等几种类型在媒体查询 4 中已经废弃

下面是一个简单的示例:

<div></div>
div{
	width: 200px;
	height: 200px;
	background: green;
}
/* 在所有设备中生效 */
@media all{
	div{
		width: 300px;
		height: 300px;
		background: red;
	}
}
/* 在打印机设备中生效 */
@media print{
	div{
		width: 300px;
		height: 300px;
		background: blue;
	}
}
/* 在彩色电脑屏幕中生效 */
@media screen{
	div{
		width: 400px;
		height: 400px;
		background: pink;
	}
}

媒体特性

所谓媒体特性,就是指在确定了设备的情况下,具体再根据细分条件进行分类。

常见的媒体特性有:

  • width:宽度

  • min-width:最小宽度,宽度只能比这个值大

  • height:高度

  • max-width:最大宽度,宽度只能比这个值小

  • orientation:方向

    • landscape:宽度大于高度(横屏)
    • portrait:高度大于宽度(竖屏)
  • aspect-ratio:宽高比

  • -webkit-device-pixel-ratio:像素比(webkit 内核私有的属性)

下面是关于媒体特性的一个简单示例:

<div></div>
/* 屏幕的尺寸在400-500之间条件满足 */
div{
	width: 100px;
	height: 100px;
	background: red;
}

/* 屏幕尺寸大于500的时候条件满足 */
@media (min-width:500px){
	div{
		background: green;
	}
}

/* 屏幕尺寸小于400的时候条件满足 */
@media (max-width:400px){
	div{
		background: blue;
	}
}

@media (orientation:landscape){
	div{
		width: 400px;
		height: 100px;
	}
}
@media (orientation:portrait){
	div{
		width: 100px;
		height: 400px;
	}
}

/* 800*600的时候宽高比为4:3 */
@media (aspect-ratio:4/3){
	div{
		border: 10px solid #000;
	}
}

/* 屏幕的像素比为2的时候条件满足 */
@media (-webkit-device-pixel-ratio:2){
	div::after{
		content: '媒体查询';
		font-size: 50px;
	}
}

逻辑运算符

在媒体查询中,还支持逻辑运算符,具体有:

  • and:合并多个媒体类型(并且的意思)
  • , 号:匹配某个媒体查询(或者的意思)
  • not:对媒体查询结果取反
  • only:仅在媒体查询匹配成功后应用样式(防范老旧浏览器)

下面是关于逻辑运算符的示例:

<div></div>
div{
	width: 200px;
	height: 200px;
	background: red;
}

/* 所有设备、宽度必需大于700px、横屏,这三个条件同时满足才为true */
@media (min-width:700px) and (orientation:landscape){
	div{
		background: green;
	}
}

/* 屏幕尺寸要小于800px, 横屏,这两个只要有一个满足,整个条件就会满足*/
@media (max-width:800px),(orientation:landscape){
	div{
		background: pink;
	}
}

/* 屏幕的尺寸大于800,这个条件才能成立 */
@media not all and (max-width:800px){
	div{
		background: blue;
	}
}

/* 彩色的屏幕,宽度大于1000px,这两个条件同时满足,整体条件才满足 */
@media only screen and (min-width:1000px){
	div{
		background: grey;
	}
}

标签:媒体,media,查询,响应,background,div,width
From: https://www.cnblogs.com/bingquan1/p/18112648

相关文章

  • MySql分组查询 group by
    DDL 学生表 成绩表CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTNULL,`ag......
  • Java登陆第三十六天——VUE3响应式入门、setup语法糖
    当浏览器接收到服务端返回的页面后,浏览器会把页面解析成DOM树,DOM树中各个元素会相应的显示在浏览器上。VUE提供的响应式数据可以在页面不刷新的情况下更新数据。响应式数据App.vue<script>//等价于setup语法糖。固定的写法,不会改。exportdefault{setup(){letsum......
  • 使用QuerryMapper条件查询器进行分页模糊查询,当想要渲染的数据需要两张表的字段该如何
    假如我们想要拿到新闻表的所有数据和发布新闻的用户名称的数据1.创建两张表,其中新闻表的authorId引用用户表的外键id,(这是一张新闻表)(这是一张用户表)author不在这个数据库表中,使用@TableField(exist=false)这个注解,表示这个字段不在新闻表里,用于业务处理。2.拿到分页......
  • 第10章_索引优化与查询优化
    都有哪些维度可以进行数据库调优?简言之:索引失效、没有充分利用到索引——建立索引关联查询太多JOIN(设计缺陷或不得已的需求)——SQL优化服务器调优及各个参数设置(缓冲、线程数等)——调整my.cnf数据过多——分库分表关于数据库调优的知识非常分散。不同的DBMS,不同的公司,不同......
  • 应急响应流程与挖矿病毒排查流程
    1.应急响应的流程1.1.为什么会有应急响应?在工作过程中,会遇到突发的情况,比如:DOS攻击,渗透攻击,病毒感染,需要立即将这些问题清除掉,恢复正常的生产秩序。这个过程就是应急响应。1.2.流程收集信息:收集客户的信息,以及遭遇情况的表现症状。判断类型:判断是否为安全事件,是哪......
  • Flink Sql 的查询
    一、DataGen& Print        (1)创建数据生成器源表CREATETABLEsource(    idINT,    tsBIGINT,    vcINT)WITH(    'connector'='datagen',    'rows-per-second'='1',    'fields.id.kind'='ran......
  • 2024年AI订阅、游戏消费、流媒体订阅、域名购买等常用的美元信用卡使用场景科普大全!
    应用场景卡BIN详细应用AI软件支付534786、556150虚拟信用卡用于支付AI软件订阅,如ChatGPTPlus、OpenAI-APIKey、Midjourney、POE等。电商网站购物559666、531993适用于Amazon、Ebay、Etsy、Alibaba、Shopify、Walmart、TikTok、AliExpress、Lazada、Rakuten、Wish、BestBuy、......
  • DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记
    ****************************************************************************************DML(DataManipulationLanguage、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。主要的语句关键字包括INSERT、DELETE、UPDATE、SELECT等。SELECT......
  • 查询语句,在Hive版本3.1.0中执行报错,在Hive版本3.1.2中执行成功
    第3条语句执行查询,在Hive版本3.1.0中执行报错:Error:Errorwhileprocessingstatement:FAILED:ExecutionError,returncode2fromorg.apache.hadoop.hive.ql.exec.mr.MapRedTask(state=08S01,code=2),在Hive版本3.1.2中执行成功。新建表CREATETABLEuser_test(cr......
  • 【MV】物化视图查询重写
     所谓物化视图查询重写就是,如果初始化参数query_rewrite_enabled设置为TRUE,并且数据库运行在CBO优化模式下,当对基表进行查询时,Oracle会自动判断是否能利用这个基表的所有包含ENABLEQUERYREWRITE关键字的物化视图,如果可以且根据统计信息判断通过查询物化视图代价更小,则Oracle自......