没有添加额外的容器可以吗?我想通过在子项上设置宽度来避免实现所需的元素内容宽度,因为它们的数量是动态的,并且大小关系变得复杂,除非它们的总宽度已经受到容器宽度的限制.
这是一个pen实验;
标记
<div class="container"> <div class="child"> <div class="child"> ... </div> .container { width: <fixed-width>px; }
解决方法
这样做时要记住的重要一点是盒子尺寸:边框;将需要在容器上设置,否则填充会弹道.
我们通过使用calc,vw和padding来做到这一点.
padding: 20px calc(50vw - /*half of container width*/);
这是链接的codepen上容器的完整扩展代码:
.container { display: flex; flex-flow: row nowrap; justify-content: center; margin-left: auto; margin-right: auto; height: 300px; width: 100%; padding: 20px calc(50vw - 250px); background-color: #acffac; background-size: 100vw auto; background-position: center top; box-sizing: border-box; } html { overflow-y:scroll; /* fixes potential calculation errors caused by scroll bar - thanks to Roberts comment */ }
Here’s a working version of the codepen,为了将所有鸡蛋放在一个篮子里,这里有一个可扩展的代码片段:
.container { display: flex; flex-flow: row nowrap; justify-content: center; margin-left: auto; margin-right: auto; height: 300px; width: 100%; padding: 20px calc(50vw - 250px); background-color: #acffac; background-size: 100vw auto; background-position: center top; box-sizing: border-box; } .child { flex: 1 0 auto; width: 100px; height: 100%; background-color: #ff4444; } .child+.child { margin-left: 20px; }
<div class="container"> <div class="child"></div> <div class="child"></div> <div class="child"></div> <div class="child"></div> </div>
我最后指出,如果其他人有更好的解决方案,你可能想暂时关注一下,因为在旧版本的Chrome and Safari上使用vw里面的一些问题.
编辑:
正如瓦迪姆和罗伯特的评论所指出的,有一些事情可能会导致一些障碍.
首先,假设你正在使用一个最小的模板(即没有normalize / reset.css),你的身体很可能仍然会有固有的边缘,这会使这种布局变得混乱.你可以解决这个问题:
body { margin:0; }
其次,根据你的操作系统(是的,我正在看你的微软!)你的滚动条可以将你的内容推到一边,同时仍然包括在大众的计算中.
我们可以解决这两种方式之一.第一个是对填充计算进行调整以包括滚动条侧,但您必须编写脚本以确保滚动条实际存在,并且滚动条的大小不同(I.E – > 17px,Edge – > 12px).
另一种选择是使用自定义内容滚动条,它会完全溢出:隐藏;在内容上,从而删除滚动条,然后实现它自己的滚动条版本(通常位于内容的顶部,位置:fixed;)它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。