前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >min-aspect-ratio和max-aspect-ratio宽高比自适应

min-aspect-ratio和max-aspect-ratio宽高比自适应

作者头像
javascript.shop
发布于 2019-09-04 08:24:19
发布于 2019-09-04 08:24:19
5.9K00
代码可运行
举报
文章被收录于专栏:杰的记事本杰的记事本
运行总次数:0
代码可运行

首先,移动端的适配,还是要先做好的,不管你是使用rem布局,还是使用media进行适配布局(只是单纯的宽度上),布局好了,这里只是宽度自适应了,如果是流式布局的话,这样就已经足够了,对于我们这里的单屏布局,就略显不足了。

所以这里就要用的:device-aspect-ratioaspect-ratio了。

一个一个的来说吧。

device-aspect-ratio

device-aspect-ratio 定义输出设备的屏幕可见宽度与高度的比率。

前缀是device,也能证明,这个属性是按照设备的尺寸来的,为什么单独说这个呢,因为不管是浏览器还是APP,所有的承载H5页面的容器,都有自己的header头以及最上面的手机时间功能显示的区域,一般这些内容,会占去120px(双倍屏上,这个数据可能不准,只是想说,会被这些占用设备可视区域的可用高度,如果你是在浏览器全屏的话,就当我没说这些啦)的高度。

所以,对于前端的开发者来开发单屏的页面的话,这个属性其实是不怎么会用到的。

同时,device-aspect-ratio还有两位两个兄弟属性,max-device-aspect-ratiomin-device-aspect-ratio,他们的兼容性在移动端,是可以不用去考虑的,绝大部分的移动端设备,都是支持的,在我看来,是可以直接放心使用的。

aspect-ratio

aspect-ratio 定义输出设备中的页面可见区域宽度与高度的比率

可视区域,这个对于我们来说,才是真正需要的。

直接就是上代码吧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@media screen and (min-aspect-ratio: 9/16) {
    // 如果宽高比小于9:16的话,显示这个内容
 }

@media screen and (max-aspect-ratio: 9/16) {
    // 如果宽高比大于9:16的话,显示这个内容
 }

@media screen and (aspect-ratio: 9/16) {
    // 如果宽高比是9:16的话,显示这个内容
}

aspect-ratio的取值:width/height,即宽度与高度的对比

一般情况下,在PC端的是:width > height,在移动端的时候,width < height,所以,其实如何在移动端判断是否为横屏,也可以按照这个方式来判断。 如果直接设置:aspect-ratio:9/16,那么就表示,只要在width/height = 9/16的情况下,才会被触发,但是同一个手机,在APP和浏览器(甚至不同的浏览器),这个宽高比是不同的,如果单纯的设置一个固定的值,还是很难稳定的实现某些功能的,所以也就提供了:max-aspect-ratiomin-aspect-ratio。 max-aspect-ratio : 9/16 表示如果当前页面的width/height <= 9/16的话会被执行,max表现大于的时候,与max-width(表示最大的限制值)理论上是一样的概念,宽高比不大于这个值的时候。 同样的道理,min-aspect-ratio : 9/16表示,当宽高比大于等于这个值的时候,就会被执行。

这里有一点要注意,只要设置了max-aspect-ratio或者min-aspect-ratio,那么aspect-ratio就无效了,因为max-aspect-ratio或者min-aspect-ratio真实的表现是“小于等于”和“大于等于”。

所以,如果你只是要监听一个比例的变化,而且,你需要使用到:max-aspect-ratiomin-aspect-ratioaspect-ratio这三个属性的话,那么就要按照本小节的示例代码,把aspect-ratio写在最后面。

同样的,如果我们想要使用min-aspect-ratio来设置不同的尺寸的,那么也要注意一点,要把大比例的写在后面,就比如:1/13/49/16这三个比例的话,代码的实现部分就要:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@media screen and (min-aspect-ratio: 9/16) {
    // 只要宽高比大于等于9/16,就会执行
}

@media screen and (min-aspect-ratio: 3/4) {
    // 只要宽高比大于等于3/4,就会执行
}

@media screen and (min-aspect-ratio: 1/1) {
    // 只要宽高比大于等于1/1,就会执行
}

既然min-aspect-ratio的区域是大于等于,当前的设备比例已经固定(假设为cur),我需要设置三个比例A(3) > B(2) > C(1)。再加上CSS的层叠覆盖理论,后面定义的会覆盖前面的。

那么就会出现:如果cur > C,那么cur > B ,cur > A ,这个时候,如果C的CSS放在了最后面,那么无聊如何也不会执行到A和B了。

所以,要把大值(涵盖区域广的)放到最底部,这个也可也称之为小区域理论。

3 – 正无穷 2 – 正无穷 1 – 正无穷

虽然在数学上来说,这个差距微乎其微,但是真实的情况确实是,CSS文件中,定义的顺序为: C ,B,A,也就是我们前面的一段代码的定义顺序。(这个如果真的理解不了,其实也可以不理解,写好了,试一下就OK了啊~)(再加一个理解方法,取属性的前缀min,越小的越先定义)

但同时也有一点注意,如果需要使用多次min-aspect-ratio的话,那就不要再使用max-aspect-ratio了,肯定会冲突的。

同理,max-aspect-ratio的情况也是相同的,只是定义的顺序与min-aspect-ratio相反,max-aspect-ratio的定义顺序是,max前缀,越大的值越先定义,所以如果上述的一段代码使用max-aspect-ratio来实现的话就是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@media screen and (max-aspect-ratio: 1/1) {
    // 只要宽高比小于等于1/1,就会执行
}

@media screen and (max-aspect-ratio: 3/4) {
    // 只要宽高比小于等于3/4,就会执行
}

@media screen and (max-aspect-ratio: 9/16) {
    // 只要宽高比小于等于9/16,就会执行
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年6月6日20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
元素固定宽高比这么写太香了 - Chrome 支持 aspect-ratio 了
去年差不多这个时候,发了一篇关于CSS 固定宽高比实现的文章,总结了如何从面试者的角度回答固定宽高比实现的问题。如果你对于历史的 hack 方式不太熟悉,建议先浏览一下原文章。
歪马
2021/03/16
1.4K0
css3媒体查询简介
<link rel="stylesheet" media="min-width=900" />
RobinsonZhang
2018/08/28
8080
CSS中的media(媒体查询)详解
媒体查询允许您根据屏幕尺寸、设备方向、分辨率和其他属性来调整网页的布局和样式,以实现响应式设计。
码客说
2024/03/29
6.1K0
面试官:CSS如何实现固定宽高比?
对于这个问题,你可能还没有过相关需求,或者还没有在面试的时候被问到过,但是歪马相信你终将有需要。
歪马
2020/04/07
8.2K0
面试官:CSS如何实现固定宽高比?
响应式布局的实现
响应式布局指的是同一页面在不同屏幕尺寸或者在不同的设备下有不同的布局,能够在大屏设备以及小屏设备获得更好的浏览体验,简单来说就是页面适应终端而无需为每个终端制作单独的页面。
WindRunnerMax
2020/08/27
2K0
HTML5响应式布局
响应式网页设计(Responsive Web design,通常缩写为RWD)是指:页面的设计与开发应当根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相应的响应和调整。可以说是一种网页设计的技术做法,该设计可使网站在多种浏览设备(从桌面电脑显示器到移动电话或其他移动产品设备)上阅读和导航,同时减少缩放、平移和滚动。 响应式网页设计就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。
踏浪
2019/07/31
2.6K0
css @media 查询和屏幕适配
css语法 @media mediatype and|not|only (media feature) { CSS-Code; } 媒体类型 值 描述 all 用于所有设备 print 用于打印机和打印预览 screen 用于电脑屏幕,平板电脑,智能手机等。 speech 应用于屏幕阅读器等发声设备 媒体功能 值 描述 aspect-ratio 定义输出设备中的页面可见区域宽度与高度的比率 color 定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0 color-index 定义在输
友儿
2022/09/13
1.3K0
css媒体查询aspect-ratio宽高比在less中的使用
css媒体查询有一个 宽高比很方便,aspect-ratio ,可以直接使用宽/高 来进行页面适配   使用样例如下:
蓓蕾心晴
2019/08/08
3.3K0
css实现布局垂直居中以及@media的用法总结
aspect-ratio:检测浏览器可视宽度和高度的比例。(例如:aspect-ratio:16/9)
Gujiu
2022/03/29
5070
css实现布局垂直居中以及@media的用法总结
CSS(八)
这一篇,我们来介绍一下响应式设计及其三大关键技术 - 流式布局,弹性媒体和媒体查询。并会介绍移动优先的响应式设计。
1ess
2021/10/29
7710
CSS(八)
CSS @media 规则
如果浏览器窗口的宽度为 768px 或更小时,把 <body> 元素的背景颜色更改为“浅蓝色”:
taoli
2022/08/28
1.8K0
CSS @media 规则
CSS3之响应式布局及其应用
使用 Media 属性前需添加兼容移动设备优先代码 <meta name=”viewport”content=”width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=”no”> /*参数说明: - width=device-width:宽度等于当前设备宽度 - Initial-scale:初始缩放比列(默认 1.0) - maximum-scale:允许用户缩放最大比列(默认 1.0) - user-scalable
Leophen
2019/08/23
1.6K0
随方逐圆--全面理解CSS媒体查询
在CSS2中,媒体查询只使用于<style>和<link>标签中,以media属性存在;media属性用于为不同的媒介类型规定不同的样式,而真正广泛使用的媒介类型是'screen'、'print'和'all'
江米小枣
2020/06/15
1.3K0
【前端攻略--HTML/CSS】媒体查询
1)媒体查询 @media 是个好东西,至少对像我一样刚入行的小前端做响应式是个不错的选择。
野原测试开发
2019/07/10
2.2K0
细说移动端 经典的REM布局 与 新秀VW布局
说到前端页面的布局方案,可以从远古时代的Table布局说起,然后来到 DIV+CSS布局,之后有了Float布局,Flex布局,Column布局,Grid布局等等。
书童小二
2018/10/09
12.1K0
细说移动端 经典的REM布局 与 新秀VW布局
总是听别人说响应式布局,原来这么简单
作者:麻酱 原文:http://www.majiang.life/blog/head-first-responsive-web-design/ 前言 总听别人说响应式布局,觉得是一个很高大上的东西,
程序猿DD
2018/02/01
8160
总是听别人说响应式布局,原来这么简单
自适应与响应式的异同
      目前非常流行自适应设计与响应式设计,而且经常让人混淆,自适应设计不应与自适应布局混为一谈,它们是完全不一样的概念。
用户9127725
2022/08/08
7310
H5移动端适配原理及方案
工作中接触到了移动端的开发,所以最近学习一下移动端相关内容。目前还是一个初学者,出现任何问题请多多谅解。大家如果只用电脑浏览网页的话,可能差别不算太大,但是如果使用移动设备(如手机和平板电脑)打开网页,就可能会遇到在不同设备上显示效果不尽人意。移动端页面需要具备响应式设计,以适应不同大小和分辨率的移动设备屏幕。使用流体网格布局、弹性图片和媒体查询等技术,确保页面在各种设备上都能良好显示。采用适合移动设备的布局方式,以确保用户在小屏幕上浏览时获得良好的用户体验。
bug开发工程师007
2024/06/14
5970
移动端布局攻略
作者:Tolonger 原文链接:https://www.jianshu.com/p/9e7e755ca281 除了百分比流式布局之外,rem布局占据了目前移动端布局的热潮。那么究竟这几种布局差别在哪里,对应的有什么效果,希望本文能给你一些有益的启示。除此之外还有响应式布局,固定宽度布局等。 百分比流式布局 这里面最知名的当属bootstrap框架的思路,他所有的组件以及模板ui均是百分比流式布局,单位为px.并且我们看到的大部分对移动端适配的页面也均是采用这种核心思想去做的,方法简单,多端共用,可以针对
前端教程
2018/03/05
1.5K0
移动端布局攻略
宝, 来学习一下CSS中的宽高比,让 h5 开发更想你的夜!
在图像和其他响应式元素的宽度和高度之间有一个一致的比例是很重要的。在CSS中,我们使用padding hack已经很多年了,但现在我们在CSS中有了原生的长宽比支持。
前端小智@大迁世界
2022/06/15
1.9K0
宝, 来学习一下CSS中的宽高比,让 h5 开发更想你的夜!
相关推荐
元素固定宽高比这么写太香了 - Chrome 支持 aspect-ratio 了
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验