jquery - 让两个奇怪大小的元素响应地位于想象容器的中心和边缘
问题描述
要点很简单,宽度为 50%,如 codepen 中显示的上述版本,按预期响应,内容位于灰色框顶部显示的虚构容器内。使用不均匀百分比时会出现问题,因此固定的最大宽度仅适用于固定的窗口宽度。
是否有某种计算公式可以使它起作用?ETC
https://codepen.io/rKaiser/pen/NmNrXp
.uneven {
.right,
.left {
width:65.3%;
.content {
max-width:420px;
margin-left:auto;
}
}
.right {
width:34.7%;
.content {
max-width:180px;
margin-left:0;
margin-right:auto;
}
}
}
解决方案
您的容器的大小等于W
(600px
在您的示例中)然后我们的完整容器是全屏的,100vw
因此两侧的边距等于,(100vw - W) / 2
因此您可以简单地将该边距与内部元素一起使用。
小缺点是100vw
还包括滚动条的宽度,所以当有滚动条时计算会稍微偏离:
body {
background: #666;
margin: 0;
}
.container {
height: 100px;
background: #888;
max-width: 600px;
margin: 0 auto;
}
.full {
display: flex;
background: orange;
height: 45px;
margin-bottom: 4px;
}
.left {
width: 50%;
background: #16CC4A;
}
.left .content {
margin-left: calc((100vw - 600px)/2);
border: 1px solid red;
}
.right .content {
margin-right: calc((100vw - 600px)/2);
border: 1px solid red;
text-align: right;
}
.right {
background: #D98813;
width: 50%;
}
.uneven .left {
width: 65.3%;
}
.uneven .right {
width: 34.7%;
}
@media all and (max-width:600px) {
.left .content,
.right .content {
margin: 0;
}
}
<body>
<div class="container"></div>
<div class="full even">
<div class="left">
<div class="content">
Edge
</div>
</div>
<div class="right">
<div class="content">
Edge
</div>
</div>
</div>
<div class="full uneven">
<div class="left">
<div class="content">
Edge
</div>
</div>
<div class="right">
<div class="content">
Edge
</div>
</div>
</div>
</body>
推荐阅读
- c# - 数据集的查询执行失败。(rsErrorExecutingCommand)
- java - 如何使用 logback 在日志文件中记录表?
- perl - 为什么 Data::Dumper 显示链接到其他值的值?
- flatpak - What's a flatpak runtime?
- spring - 如何验证“授权:承载
“与骡子3.8? - c# - 窗体上的某些控件未在 C# windows 窗体中的某些窗体上调整大小
- r - 解决错误“对象
在地理编码上下文中找不到” - python - 如何将每日日期框架转换为每周日期框架(一列)?
- android - 如何在测试覆盖 Android Studio 中找到“命中”源
- typescript - 路线上的离子路由器吐司