【问题标题】:Make a div take up the full space not used by margins使 div 占据边距未使用的全部空间
【发布时间】:2015-02-18 16:33:27
【问题描述】:

我正在尝试在我的网站中间创建一个内容容器,该容器的宽度不能超过特定大小 (1194 像素),并且左右两侧的边距始终至少为 242 像素。如果容器宽于 1194px,边距会增加。如果容器小于 1194 像素,边距将保持 242 像素,从而缩小容器的宽度。 这是我正在使用但无法正常工作的内容。

.mainContainer {
    margin-left:242px;
    margin-right:242px;
    max-width:1194px;
}

但容器会缩小以适应内容。如果我指定width:100%;,当容器大于max时,边距会增加,但容器不会缩小。我错过了什么?


作为子问题;我这样做是为了让我的页面响应。在.mainContainer 内部,有一系列.projectContainer,每个宽384px,边距7px。其中 3 个的宽度(包括边距)加起来为 .mainContainer 的 1194 像素。到目前为止,这些值一直是静态的。但是现在.mainContainer 将变得流畅,我希望.projectContainer 的宽度也可以流畅——因为.mainContainer 的宽度会减小,.projectConatiner 的宽度也应该如此。

我的数学计算表明,每个 .projectContainer,不包括每边 7px 的边距,应该占 .mainContainer 的 32.160804%:

384px * 3 = 1152px
1152px / 1194px = 0.96482412
0.96482412 / 3 = 0.32160804

然而,将width:32.160804%; 的值赋予.projectConatiner 似乎不起作用。是舍入错误吗?我怎样才能实现我正在寻找的东西?

【问题讨论】:

  • JS 是一条路。 P.S(没有正确/完整地阅读这个问题,但似乎 CSS 不是这么多计算的好候选)
  • 你需要用@MediaQueries 解决这个问题
  • 是的,媒体查询会满足您的需求
  • @Mr.Alien CSS 没有进行计算,而是手动完成的。我只是尝试使用 CSS 将元素的宽度设置为某个百分比,这应该很容易实现
  • @Anzeo 请原谅我的幼稚,但是 MediaQueries?那是我应该在帖子上标记的东西吗?

标签: html css media-queries


【解决方案1】:

对于第一个问题:

看到这个fiddle

您可以为子div(宽度1194 div)定义自动边距,为容器定义min-width:1194+242+242=1678px

这将确保两侧的最小边距为 242px,当页面宽度增加时,边距会增加(不是子宽度),并且子仅保持1194px

<div class='container'>

    <div class='child'>1194px</div>

</div>
    .container{
        min-width:1678px;
        height:70px;
        background:green;
    }
.child{
    background:red;
    height:50px;
    width:1194px;
    margin:auto;
}

【讨论】:

  • 谢谢,但我不希望孩子在 1194 处是静态的,我希望它是容器的宽度减去两侧的 242(*2) 边距。也就是说,除非孩子是 1194 像素并且它的容器更宽,在这种情况下,孩子应该保持 1194 像素并且边距应该增加。
  • @GtwoK.. 看到这个,你可以给父容器填充以达到jsfiddle.net/1u9en8eb/4
  • 太棒了!那把小提琴完美无缺。非常感谢。你会碰巧知道什么会导致 div 不能扩展到它的全部宽度吗?如果我在那里有超过 3 个 projectContainers,它会将第 4 个向下推到一个新行(应该如此),并且换行符会填充其余的宽度。但是如果我那里只有 2 个 projectContainers,由于某种原因它只占用了 2 个 projectContainers 的宽度。它没有填满可能的宽度(最多 1194 像素)。
  • @GtwoK 如果你想填充两个或三个.projectContainer div,并且不知道它们到底有多少,那么你应该用javascript设置宽度。我猜想甚至mediaQuearies也不会在这种情况下工作
  • 对不起,我可能没有正确解释自己;自然,一个 div 应该填充可用空间(水平),除非分配了一定的宽度。它也在你的小提琴中这样做,因为它应该 - child 填充 container,除非它达到它的最大宽度 1194 像素。但是当我在自己的网站上测试它时,孩子并没有填满可用的空间。这是填充在容器上正常工作的图像 (#gallery) i.imgur.com/r5YgM3o.png 这是孩子 (.mainContainer),蓝色代表它占用的空间 i.imgur.com/BNN41sl.png
【解决方案2】:

使用这个伙伴。不需要响应式 css,因为这已经是响应式的了。

.mainContainer {
    margin:0 auto;
    max-width:1194px;
    width:100%;
}

【讨论】:

  • 这将如何确保边距至少为 242 像素?
  • 就我而言,我没有在左右对齐上使用太多边距。而是使用 margin 0 auto 来集中元素。这个边距至少为 242px 会在不同的窗口屏幕上给你带来很多麻烦。
  • OP 明确要求每边的边距至少为 242px。这可能会在较小的屏幕上引起问题,但您应该在回答中明确说明这一点。没有任何上下文,您似乎没有理解这个问题。
【解决方案3】:

尝试使用

@media screen and (max-width : 1194px) {
   code css 
}

响应式风格

【讨论】:

  • 我不确定我是否理解这里发生了什么。您能否链接到我可以阅读的某种文档?
  • 啊,我明白了。这实际上不会完成我在我提出的问题中寻找的内容,但它对我来说在其他方面会非常有用。谢谢你给我看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 2021-05-14
  • 2018-06-09
  • 2014-01-17
  • 2019-08-16
  • 2017-06-09
  • 1970-01-01
相关资源
最近更新 更多