You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何仅用内联CSS模拟混合宽度的max-width媒体规则?

如何仅用内联CSS模拟混合宽度的max-width媒体规则?

嘿,这种只能用内联样式的限制真的很磨人,不过咱们可以用CSS的min()max()calc()组合出一个「伪媒体查询」的效果,完全不需要脚本或者<style>标签。

核心思路是用视口单位vw和一个「开关」值来区分两种视口场景:

  1. 当视口宽度≤900px时,让div强制取100%宽度
  2. 当视口宽度>900px时,自动切换到33%视口宽,同时保证最小宽度不低于290px

直接把你的浮动div的内联样式改成下面这样就行:

<div style="float: right; width: min(100%, max(33vw, calc(290px + (900px - 100vw) * 999))); box-sizing: border-box;">Some multiline<br>content</div>

我给你拆解下每个部分的作用:

  • (900px - 100vw) * 999:这是关键的「开关」。当视口≤900px时,这个值是正数,加上290px会得到一个远大于100%视口宽的数;当视口>900px时,这个值是超大负数,加上290px后会变成一个远小于33vw的数。
  • max(33vw, calc(290px + (900px - 100vw) * 999)):视口较小时,max会取那个超大的数;视口变大后,max会自动切换为33vw(因为另一个值是负数)。
  • min(100%, ...):把上面的结果和100%视口宽取最小值,这样视口小的时候就会自动取100%宽,视口大的时候就取33vw。
  • box-sizing: border-box:确保div的内边距、边框不会额外撑开宽度,让计算的宽度完全符合预期。

你可以自己测试下:把浏览器窗口拉窄到900px以下,div会占满整个父容器;拉到900px以上,div会变成33%的视口宽,而且就算视口再缩小回900px以下,又会自动变回100%宽,完全匹配你的需求~

火山引擎 最新活动