当前位置: 首页 > article >正文

CSS实现自适应的正方形

摘要

在开发移动端时,会遇到类似于九宫格菜单的页面,宽度很好设置,一般设置为“33.333%”或者其他,但是高度呢?下面介绍几种常用方法。

方法1:使用padding-top百分比

.square {
  width: 100px;
  height: 0;
  padding-top: 100%; /* 使高度等于宽度 */
  position: relative;
}

方法2:使用aspect-ratio属性(推荐现代浏览器)

.square {
  width: 100px; /* 或使用百分比、vw等单位 */
  aspect-ratio: 1 / 1; /* 设置宽高比为1:1 */
}

方法3:使用padding-bottom百分比

.square {
  width: 100px;
  height: 0;
  padding-bottom: 100%; /* 使高度等于宽度 */
}

方法4:使用flexbox布局

.square {
  display: flex;
  width: 100px; /* 或使用其他单位如vw, %, 等 */
}
.square::before {
  content: "";
  width: 0; /* 或者使用100%来使其填充容器宽度 */
  padding-top: 100%; /* 使高度等于宽度 */
}

方法5:使用grid布局

.square {
  display: grid;
}
.square::before {
  content: "";
  width: 100%; /* 或使用其他单位如vw, %, 等 */
  padding-top: 100%; /* 使高度等于宽度 */
}

结论

对于现代浏览器,推荐使用aspect-ratio属性。对于需要兼容旧浏览器的场景,你可以选择使用padding-toppadding-bottom百分比的方法。如果你想要完全自适应的正方形,可以考虑使用flexboxgrid布局的方法。


http://www.kler.cn/a/535642.html

相关文章:

  • 98.2 AI量化开发:基于DeepSeek打造个人专属金融消息面-AI量化分析师(理论+全套Python代码)
  • 【Elasticsearch】nested聚合
  • Ubutun本地部署DeepSeek R1
  • MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR)
  • 【创建模式-单例模式(Singleton Pattern)】
  • 【2024华为OD-E卷-100分-箱子之字形摆放】((题目+思路+JavaC++Python解析)
  • C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输
  • 【Linux】25.进程信号(1)
  • GGML、GGUF、GPTQ 都是啥?
  • MySQL 主从复制原理及其工作过程
  • unity学习28:灯光light相关 类型type,模式mode等
  • Java面试常见问题总结
  • 【苍穹外卖 Day1】前后端搭建 Swagger导入接口文档
  • JVM为什么要指针压缩?为什么能指针压缩?原理是什么?
  • 【1】高并发导出场景下,服务器性能瓶颈优化
  • 3D图形学与可视化大屏:什么是片段着色器,有什么作用。
  • 保姆级教程Docker部署KRaft模式的Kafka官方镜像
  • Sentinel 断路器在Spring Cloud使用
  • 【AI编程】从实践出发,分享“儿童时钟学习”小程序的改版历程
  • 【Linux】26.进程信号(2)
  • 解密 Java Lambda 表达式中的 “effectively final“ 陷阱
  • AI大模型训练实战:分布式与微调指南
  • 精选五款报表工具:提升企业决策效率和数据洞察
  • Mybatis篇
  • OPENGLPG第九版学习 - 着色器基础
  • 为什么在springboot中使用autowired的时候它黄色警告说不建议使用字段注入