自定义元素宽高比例(aspect-ratio)与@supports兼容支持和图片裁剪(object-fit)的用法

使用grid布局可以轻松实现响应式布局,子元素只需要设置最小宽度即可,如果对子元素没有设置高度,那么高度取决于内容的最大值,这样显然是不稳定的,如下图所示:
在这里插入图片描述
出现这种问题就造成布局混乱了,可能你最先想到的解决办法就是为子元素设置固定高度,这样显然是没有问题的,但是设置了固定高度之后,宽度可能是响应式的,高度固定了之后可能就会出现不协调的问题,如果想要达到这个目标,可以使用aspect-ratio宽高比例属性完成。

aspect-ratio宽高比例属性

aspect-ratio: 1 / 1;
aspect-ratio: 16 / 9;
aspect-ratio: 0.5;  //等同于 1/2

如下效果将为每个box子元素设置aspect-ratio:3 / 2,如下图所示:
在这里插入图片描述
真的非常方便,你可能会问,这么好用的属性,之前怎么不知道或者为什么市面上都不用这个属性那,那肯定是因为浏览器兼容的问题,我们来看一下mdn该属性浏览器兼容的版本,详细mdn文档介绍。
在这里插入图片描述
很明显看到了,谷歌88版本开始支持这个属性,也就是在2021年以后,所以这个属性早先没有人去用,那么现在马上2024年了,能否开始使用那?答案是肯定的,很多针对年轻用户的网站都开始逐渐使用该属性了,我开发的微信小程序项目“咸虾米壁纸”,页面布局就采用了grid网格布局和aspect-ratio属性搭建的页面,不但是微信小程序,抖音小程序,H5等都是支持的,下图是“咸虾米壁纸”项目,大家可以微信扫一扫体验一下这种布局,是否在你手机上支持。
在这里插入图片描述
那如果用户浏览器版本就是非常的低,那应该怎么办那,还有就是我这个项目打包了APP,经测试APP对该属性的支持也存在问题。我们其实是有兼容办法的,判断浏览器或应用是否支持该属性,如果不支持,我们就退而求其次,为它设置其他属性即可解决,下面代码就是解决方案。

@supports判断浏览器是否支持css属性

.layout .box{background: #66C7B4;border-radius: 8px;padding:10px;display: flex;align-items: center;justify-content: center;color:#fff;aspect-ratio: 3/2              
}
@supports not(aspect-ratio: 3/2){.layout .box{height: 200;}
}

以上代码就是为box设置aspect-ratio属性,通过特性查询看浏览器是否支持该属性,如果不支持该属性的,那么就为box元素设置固定高度即可。
那么你可能会问,@supports又是个什么东西,浏览器到底对它支持不支持那,可以看mdn对@supports的详细介绍。
在这里插入图片描述
这个特性查询在2013年的谷歌浏览器就支持,所以大家可以放心使用。

object-fit图片裁剪

这个问题的产生是因为,我们页面列表中展现的图片有可能是用户上传的,用户传的图片有大有小,而且宽高比例也不准确,如下图所示,各种比例的图片。
在这里插入图片描述

.layout .box img{width: 100%;height: 100%;
}

假如给图片设置宽高,完全等于父级,那么就会出现图片拉伸或压缩的情况,如下图所示:
在这里插入图片描述
能看到有些本身比较高的图,明显给压瘪了,这样看起来就非常的不舒服,那么可以使用object-fit为图片设置裁剪属性。

.layout .box img{width: 100%;height: 100%;object-fit: cover;
}

设置后,图片明显就恢复到自己原有的比例,只是超出的部分自动被裁剪了,保证图片在区域内完全填满,它的值类似于background-size。
在这里插入图片描述

  • object-fit: contain; 保持宽高比,缩放保持图片完整性。
  • object-fit: cover; 保持宽高比,填充元素的整个内容框。
  • object-fit: fill; 不保证保持原有的比例,内容拉伸填充整个内容容器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/176388.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5000张照片怎么快速发给别人?分享三个简单的方法!

有的时候我们不得不一次性发送很多图片,一张一张发实在让人头疼,这个时候就需要借助一些图片压缩工具打包成文件压缩包发送。下面介绍了三种好用的方法,一起来看看吧~ 方法一:使用微信助手 可以使用微信助手&#xff…

【C++】多态 ⑨ ( vptr 指针初始化问题 | 构造函数 中 调用 虚函数 - 没有多态效果 )

文章目录 一、vptr 指针初始化问题1、vptr 指针与虚函数表2、vptr 指针初始化时机3、构造函数 中 调用 虚函数 - 没有多态效果4、代码示例 构造函数 的 作用就是 创建对象 , 构造函数 最后 一行代码 执行完成 , 才意味着 对象构建完成 , 对象构建完成后 , 才会将 vptr 指针 指向…

对xss-labs靶场的一次XSS攻击

1、首先我们进入靶场&#xff0c;提示我们开始测试 2、我使用AWVS工具进行了先行扫描&#xff0c;发现爆出XSS漏洞 3、然后对症下药 在输入框中输入&#xff1a; <script>alert(document.cookie)</script> 4、进入下一关 5、我们直接执行<script>…

一次cs上线服务器的练习

环境&#xff1a;利用vm搭建的环境 仅主机为65段 测试是否能与win10ping通 配置转发 配置好iis Kali访问测试 现在就用burp抓取winser的包 开启代理 使用默认的8080抓取成功 上线

微服务之负载均衡使用场景

在如见常见微服务系统中&#xff0c;负载均衡组件是一种将流量分配到多个服务的技术&#xff0c;目的是提高系统的性能和可用性。负载均衡有两种常见的模式&#xff1a;服务端模式和客户端模式。服务端模式使用独立的应用程序&#xff08;如 Nginx&#xff09;来转发请求&#…

20.2 OpenSSL 非对称RSA加解密算法

RSA算法是一种非对称加密算法&#xff0c;由三位数学家Rivest、Shamir和Adleman共同发明&#xff0c;以他们三人的名字首字母命名。RSA算法的安全性基于大数分解问题&#xff0c;即对于一个非常大的合数&#xff0c;将其分解为两个质数的乘积是非常困难的。 RSA算法是一种常用…

内网渗透-域信息收集

域环境 虚拟机应用&#xff1a;vmware17 域控主机&#xff1a;win2008 2r 域成员主机&#xff1a;win2008 2r win7 一.域用户和本地用户区别 使用本地用户安装程序时&#xff0c;可以直接安装 使用域用户安装程序时&#xff0c;需要输入域控管理员的账号密码才能安装。总结…

Leetcode.树形DP

目录 543.二叉树的直径 124.二叉树中的最大路径和 2246.相邻字符不同的最长路径 543.二叉树的直径 用递归来写 考虑 树形DP 维护以当前节点为根节点的最大值&#xff0c;同时返回给父节点经过当前节点的最大链的长度&#xff0c;这有个trick 当遍历到空节点的时候返回-1 递归…

Web3公链之Cosmos生态的项目Celestia

文章目录 Web3公链之Cosmos生态的项目&#xff1a;模块化区块链Celestia什么是CelestiaCelestia网络架构数据可用性问题有哪些可用的解决方案&#xff1f; 发展历史运行节点参考 Web3公链之Cosmos生态的项目&#xff1a;模块化区块链Celestia 什么是Celestia 官网&#xff1a…

Go学习第十七章——Gin中间件与路由

Go web框架——Gin中间件与路由 1 单独注册中间件1.1 入门案例1.2 多个中间件1.3 中间件拦截响应1.4 中间件放行 2 全局注册中间件3 自定义参数传递4 路由分组4.1 入门案例4.2 路由分组注册中间件4.3 综合使用 5 使用内置的中间件6 中间件案例权限验证耗时统计 1 单独注册中间件…

驱动day10作业

基于platform驱动模型完成LED驱动的编写 驱动程序 #include <linux/init.h> #include <linux/module.h> #include<linux/platform_device.h> #include<linux/mod_devicetable.h> #include<linux/of.h> #include<linux/of_gpio.h> #inclu…

【CSS】包含块

CSS规范中的包含块 包含块的内容&#xff1a; 元素的尺寸和位置&#xff0c;会受它的包含块所影响。 对于一些属性&#xff0c;例如 width, height, padding, margin&#xff0c;绝对定位元素的偏移值&#xff08;比如 position 被设置为 absolute 或 fixed&#xff09;&…

【原创】java+swing+mysql无偿献血管理系统设计与实现

摘要&#xff1a; 无偿献血管理系统是为了实现无偿献血规范化、有序化、高效化的管理而设计的。本文主要介绍使用java语言开发一个基于C/S架构的无偿献血管理系统&#xff0c;提高无偿献血管理的工作效率。 功能分析&#xff1a; 系统主要提供给管理员、无偿献血人员&#x…

【Mybatis-Plus】代码生成器

目录 安装插件 数据库建表 Other Config Database Code Generator 根据创建好的数据库表&#xff0c;来直接生成代码 安装插件 数据库建表 Other 点开之后有两个功能 1.数据库配置 2.代码生成 Config Database 首先点开这个配置数据库 Code Generator 配置完数据库…

数据结构第一课-----------数据结构的介绍

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

Web自动化测试进阶 —— Selenium模拟鼠标操作

鼠标操作事件 在实际的web产品测试中&#xff0c;对于鼠标的操作&#xff0c;不单单只有click()&#xff0c;有时候还要用到右击、双击、拖动等操作&#xff0c;这些操作包含在ActionChains类中。 ActionChains类中鼠标操作常用方法&#xff1a; 首先导入ActionChains类&…

Redis持久化(RDB、AOF)

一、RDB RDB&#xff1a;Redis数据备份文件&#xff0c;也叫Redis数据快照&#xff0c;简单来说就是把内存数据保存的磁盘上&#xff0c;当Redis故障重启后&#xff0c;从磁盘中读取快照并恢复数据到Redis中。 RDB有两种启动命令&#xff1a; save&#xff1a;由Redis主进程…

黑马 小兔鲜儿 uniapp 小程序开发- 商品详情模块- day05

黑马 小兔鲜儿 uniapp 小程序开发- 分类模块- day04-CSDN博客 小兔鲜儿 - 商品详情(登录前)-day05 商品详情页分为两部分讲解&#xff1a; 登录前&#xff1a;展示商品信息&#xff0c;轮播图交互&#xff08;当前模块&#xff09;登录后&#xff1a;加入购物车&#xff0c;立…

机器视觉能不能再火爆?大多数企业订单减少是现实,大多数企业维持现有的经营状态将会非常困难,就看人工智能和新兴产业能不能破门而入

每个人都讲机器视觉代替大量人工&#xff0c;可是真的吗&#xff1f;没有订单&#xff0c;人工的存在都没必要&#xff0c;需要什么机器视觉检测。 我们首先有一个问题&#xff0c;机器视觉行业之前有没有火爆过&#xff1f; 有&#xff0c;但是出现短暂之后是内卷。深度学习A…

LeetCode字符串题库 之 罗马数字转整数

题目链接&#x1f517;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 1. 题目分析 我们在做题的时候&#xff0c;一定要知道题目的目的是什么&#xff0c;我们可以结合测试用例和提示来看。 我们可以分析以下几点&#xff1a; 1. 每一个罗马数字都…