css - 为什么 max-width 设置固定元素的宽度?
问题描述
我有这个 :
#toast {
position: fixed;
left: 0;
right: 0;
margin: auto;
bottom: 20px;
width: auto;/* not needed */
max-width: 90vw;
min-width: 250px;
font-size: 16px;
background: red;/* for refrence */
}
<div id="toast">Hi</div>
我想要我的元素 250px 宽,但它是 90vw。(250px可以是50px,还是有问题)为什么是90vw,没有内容的情况下怎么变成250px?它仍然应该居中。transform: translateX(-50%)
不起作用,因为那样它的宽度不会超过 50vw。
解决方案
因为当您同时设置left
和right
结合width:auto
(默认值)时,元素的宽度将被计算为“填充偏移量”——您在这里有效地设置了 100% 的宽度。
删除right:0
(或左)和宽度是你所期望的:
#toast {
background-color: pink;
position: fixed;
left: 0;
//right: 0;
margin: auto;
bottom: 20px;
width: auto;
max-width: 90vw;
min-width: 250px;
font-size: 16px;
}
<div id="toast">Hi</div>
要使元素居中,一种非常简单的方法是 display:flex
在主体上设置,因为当您将自动边距应用于弹性项目时,该项目将自动扩展其指定边距以占用弹性容器中的额外空间:
body {
display:flex;
}
#toast {
background-color: pink;
margin: auto;
max-width: 90vw;
min-width: 250px;
font-size: 16px;
}
<div id="toast">Hi</div>
推荐阅读
- c++ - 我清空字符串数组有什么问题吗
- php - 加入表格时获得不同的结果
- css - CSS 不透明度在 Edge Mobile 上被忽略,但在其他移动和桌面浏览器上受到尊重
- html - 水平导航栏的问题
- r - R中使用brm的负二项式回归在使用多核时导致错误
- go - 动态数组结构作为参数
- javascript - How to set both a and href to an existing list?
- typescript - 关于 rxjs debounceTime 的困惑
- javascript - Strapi 自定义身份验证控制器
- javascript - 如何在本地存储中添加多个对象而不是覆盖它