【问题标题】:Can I make my div inherit height and position from one div and width from another?我可以让我的 div 从一个 div 继承高度和位置,从另一个 div 继承宽度吗?
【发布时间】:2020-09-10 05:03:18
【问题描述】:

我在其他一些 div 中有一个 div (div1)。现在我希望这个 div 与 body 具有相同的宽度(占据显示的整个宽度),但始终具有与其父级 (div2) 相同的高度和位置。我试过使用 position: absolute;在这个 div (div1) 上。那我也可以

  • 将主体设置为位置:相对;并让 div1 占据 100% 的宽度,但现在我无法让高度始终跟随 div2。
  • 或将父级 (div2) 设置为 position: relative;并让 div 1 占据 100% 的高度,但现在我不能让它跟随身体的宽度。

如果 CSS 可以选择说:

.div1 {
height: 100%(.div2); 
width: 100%(body); 
position: 0(.div2); 
}

或者类似的东西

JSFiddle 与相关位:https://jsfiddle.net/Hamleyburger/fqe5o46c/1/#&togetherjs=K02DaSO2nR

  • 我想要的是 div “.selectable” 有一个 div(内部?),在悬停时显示并适合“.selectable”(父级)的高度和整个身体的宽度。

额外的,也许是相关信息: 我正在使用 Bootstrap 和 (Jinja2) 模板。到目前为止,所有 div 都从我的基本模板中的包装容器 (.main) 中获取它们的基本宽度,我已将其设置为(响应地)比 body 更窄。如果我要删除 .main div 我必须在许多单独的 div 上设置宽度。那将解决它(我可以使所有不是 div1 的 div 更窄),但它不会很干燥。我正在使用 SASS,如果有帮助的话。

【问题讨论】:

  • 你能发布你的代码或工作的sn-p吗?
  • 嘿!回复晚了非常抱歉。我以前从未使用过 jsfiddle,但我认为这是一种很好的分享方式,所以我尝试在这里制作一些东西并删除大部分不相关的东西:jsfiddle.net/Hamleyburger/fqe5o46c/1/…

标签: html css sass bootstrap-4 styling


【解决方案1】:

可以使用vw 强制 div 填充整个视口宽度。不过有点奇怪:

body,
html {
    margin: 0;
    padding: 0;
}

.outer {
    width: 300px;
    height: 300px;
    background-color: #eeeeee;
    margin: 0 auto;
    position: relative
}

.inner {
    width: 100vw;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.1);
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}
<div class="outer">
    <div class="inner"></div>
</div>

我建议您将outer div 设为全宽,并为inner 指定一个特定宽度:

body,
html {
    margin: 0;
    padding: 0;
}

.outer {
    width: 100%;
    background-color: #eeeeee;
    position: relative
}

.inner {
    width: 300px;
    height: 300px;
    margin: 0 auto;
    background-color: rgba(0, 0, 0, 0.1);
}
<div class="outer">
    <div class="inner"></div>
</div>

【讨论】:

  • 我已经尝试将你的身体内容,.outer 和 .inner 复制到我的身体,.selectable 和 .div1(其中 div1 是 selectable 的孩子) - 从你使用的示例大众但在我的代码中 div1 并没有变得更宽。您在第二个示例中是否建议我不应该在上面有任何宽度较低的元素(任何父母、祖父母等)?我目前有 body > main(最大宽度 700px)> product-container(用于包含产品列表)> selectable(这是一个可选择的产品,并且具有我希望 div1 具有的高度)
  • @Alma,感谢您添加 jsfiddle。我已经使用vw 的解决方案创建了一个:jsfiddle.net/s1c0yhau 这个解决方案很好,但我个人更喜欢第二个,您不会将max-width 添加到.main,而是添加到.row。您可能必须更改 CSS 的更多部分才能使第二个解决方案起作用。但这只是我认为的个人喜好。
  • 非常感谢!非常感激。也许我对 DRY 太着迷了。现在就试试你的解决方案。
  • 不客气@Alma。如果您认为您的问题已得到解答,请随时接受;)
  • @Alma,我来看看。能否请您发送一个更新的 jsfiddle?
猜你喜欢
  • 2015-10-13
  • 2011-07-25
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 2015-06-16
  • 1970-01-01
相关资源
最近更新 更多