CSS响应式

除了常见的media、flex、grid外的其他css响应元素

1.min()函数

当我们想根据不同尺寸调整容器的边距时,首先想到的可能是媒体查询

javascript 复制代码
<style>
    .container{
        padding: 5em;
    }
    @media (max-width: 600px) {
        .container{
            padding: 2em;
        }
    } 
</style>
<div class="container">测试字体测试字体测试字体测试字体测试字体测试字体测试字体测试字体</div>

但有一个更好的方法,使用min()函数,,MDN解释为:min() CSS 方法允许你从逗号分隔符表达式中选择一个最小值作为 CSS 的属性值。

javascript 复制代码
// 其中这里的 8% 是基于 .container 的包含块的宽度。如果 .container 的包含块宽度是 1000px,那么 8% 就是 80px。
 .container{
     padding: min(5em,8%); 
  }

2.响应式字体单位rem

说起rem就会想起em,对于这两个单位MDN是这样解释的:

  • em 相对于本元素的字体大小,或者在用于 font-size 时相对于父元素的字体大小。rem 相对于根元素的字体大小。

根据布局的需求选择emremem适用于需要继承父元素尺寸的情况,rem适用于需要全局一致性的场景,一般选择rem的情况较多,使用根元素作为参考更容易计算。

3.clamp()

当我们希望字体能够根据不同屏幕大小同时进行缩放,可使用clamp函数。

MDN解释:clamp() 函数的作用是把一个值限制在一个上限和下限之间,当这个值超过最小值和最大值的范围时,在最小值和最大值之间选择一个值使用。它接收三个参数:最小值、首选值、最大值。

javascript 复制代码
<style>
    .container{
        font-size:clamp(1.8rem,10vw,5rem)
    }
</style>
<div class="container">测试字体测试字体测试字体测试字体测试字体测试字体测试字体测试字体</div>

代码中首选值为10vw,vw是相对于视口的单位,在屏幕缩放时根据视口的大小来进行选择字体的最大值5rem或最小值1.8rem,但是当通过鼠标滚轮进行缩放时,字体大小不变化。因此想要字体鼠标滚轮操作时也能放大缩小,则可考虑响应式的单位。

javascript 复制代码
.container{
        font-size:clamp(1.8rem,calc(7vw + 1rem),5rem)
    }

4.图片自适应img

MDN中对img属性的解释如下:

想要图片随着屏幕的缩放自适应,设置图片的max-weidth为100%,最大不能超出屏幕,高度自适应。

javascript 复制代码
img{
   max-width: 100%; 
   height: auto;
}
<img width="1400" height="1300" src="./menHu_fkpt1.png" alt="">

有时会有多张尺寸不同的图,在这种情况需要强制使用同一种尺寸,并且保持响应式。可添加aspect-ratio属性保持图片的纵横比,以及object-fit设置图片的适应方式。

javascript 复制代码
img{
   max-width: 100%; 
   height: auto;
   aspect-ratio: 9 / 16;
   object-fit: cover;
}

5.视口高度vh

------针对移动端。

当使用height:100vh时,元素会占据整个可视高度,在移动端手机上时,则会多出一部分,这是因为vh的视口包含了手机状态栏下方的信息区域,而当前区域被占据了,页面则出现了向下的滚动条,此时设为height:100dvh。

记录内容来源于其他视频博主,如有侵权请告知删除!

相关推荐
jerrywus2 分钟前
为什么每个程序员都应该试试 cmux:AI 加持的终端效率革命
前端·人工智能·claude
codeniu8 分钟前
@logicflow/vue-node-registry 在 Vite 中无法解析的踩坑记录与解决方案
前端·javascript
孟祥_成都15 分钟前
AI 术语满天飞?90% 的人只懂名词,不懂为什么!
前端·人工智能
Lupino41 分钟前
被 React “玩弄”的 24 小时:为了修一个不存在的 Bug,我给大模型送了顿火锅钱
前端·react.js
米丘1 小时前
了解 Javascript 模块化,更好地掌握 Vite 、Webpack、Rollup 等打包工具
前端
Heo1 小时前
深入 React19 Diff 算法
前端·javascript·面试
滕青山1 小时前
个人所得税计算器 在线工具核心JS实现
前端·javascript·vue.js
小怪点点1 小时前
手写promise
前端·promise
国思RDIF框架1 小时前
RDIFramework.NET Web 敏捷开发框架 V6.3 发布 (.NET8+、Framework 双引擎)
前端
Mintopia1 小时前
如何在有限的时间里,活出几倍的人生
前端