html - 填充 100% 的视口,忽略父级的侧边距但尊重垂直滚动条
问题描述
要求
.Child
尽管.Parent
有侧边距,但必须填充 100% 的视口。.Parent
的侧面填充事先是未知的.Child
(假设.Child
是一个可重用的组件,它不知道它使用的环境)- 滚动条的宽度是依赖于浏览器的,因此它的宽度事先是未知的,并且不能被硬编码。
.Child
长度必须完全可见。
解决方案尝试
.Parent {
background: #BBDEFB;
padding: 0 20px;
}
.Child {
width: 100vw;
margin-left: calc(-0.5*(100vw - 100%));
/* Child does not know that `Parent's` paddings are 20px */
height: 40px;
background: #FF8F00;
border: 5px solid #283593;
}
.Dummy {
height: 1000px;
background: #E1BEE7;
}
<div class="Parent">
<div class="Child"></div>
<div class="Dummy"></div>
</div>
的Child
左右边框不可见。我想原因是滚动条。
我们可以尊重滚动条吗?
解决方案
这可能无法满足父级具有侧面“填充”的要求。我在这个答案中松散地解释了这一点。
如果您不需要使用“vw”单位,则无需担心滚动条的宽度。就个人而言,我认为“100vw”和“100vh”现在是代码异味,因为滚动条和移动浏览器 chrome 存在所有潜在问题。
* {
box-sizing: border-box;
}
.Parent {
display: grid;
grid-template-columns: 20px 1fr 20px;
background: lightblue;
}
.Child {
grid-column: 1/-1;
height: 40px;
background: orange;
border: 5px solid #283593;
}
.Dummy {
grid-column: 2/3;
height: 200px;
background: pink;
}
<div class="Parent">
<div class="Child"></div>
<div class="Dummy"></div>
</div>
推荐阅读
- python-3.x - 排序字典由列表组成
- mysql - 如果 B 不包含特定值,如何从表 A 和 B 中删除记录
- java - 如何使用 Selenium 和 Java 从 https://www.amazon.com 内的搜索结果摘要中的 73 个结果中的文本 1-16 中提取文本 73
- c# - 用 C# 编写代码时,Visual Studio 2015 冻结
- javascript - 点击
- from dropdown 不会从所述点击中产生预期的行为
- apache - Apache mod_substitute 不适用于 Javascript
- android - 如何将 Google 表格值(纬度和经度,两列)转换为双倍以进行映射?
- c - printf 格式字符串最大宽度值(填充)%(??)d%n
- reactjs - React Native 组件中的函数(函数与 const 函数)
- javascript - 为什么我没有进入这个 for 循环