gpt4 book ai didi

css - 使用 css 给定其父级的宽度和高度来缩放一个 div(保持其纵横比)

转载 作者:行者123 更新时间:2023-11-28 10:10:41 24 4
gpt4 key购买 nike

我一直在寻找如何使用 CSS 样式表创建 div 的纵横比;我可以成功创建一个演示。宽高比工作正常,但如果容器的宽度和高度比较大(#1 场景),我找不到设置容器高度的方法。

我设法成功创建了#2 场景。但是当我尝试创建 #1 场景时,容器的高度会扩展,这是我的代码:

HTML, body {
margin:0;
padding:0;
height:100%;
}

#container{
background: khaki;
padding: 10px;
display: table;
width: 150px;
height: 300px;
transition: all .5s ease-in-out;
}

#container:hover {
width: 500px; /* Only increasing the width */
height: 300px;
}

#c-ver-al {
background: lightblue;
padding: 10px;
text-align: -webkit-center;
display: table-cell;
vertical-align: middle;
height 100%;
width: 100%;
}

#c-hor-al {
background: pink;
padding: 10px;
text-align: -webkit-center;
display: inline-block;
object-fit: cover;
height 100%;
width: 100%;
}

#frame {
padding: 10px;
background: lightgray;
height: 100%;
width: 100%;
}

#window {
width: 66%;
padding-bottom: 75%;
background: blue;
}

#chat {
width: 33%;
padding-bottom: 75%;
background: red;
}

.content {
display: inline-block;
margin: -2px;
}
<html>
<body>
if you hover over it, only the container's width will be increased, not the height
<div id="container">
<div id="c-ver-al">
<div id="c-hor-al">
<div id="frame">
<div id="chat" class="content"></div>
<div id="window" class="content"></div>
</div>
</div>
</div>
</div>
The height of the container should not change, but it is
</body>
</html>

注意:我只向 div 添加了填充,这样可以更容易地看到它们当前所在的位置。另外,请忽略我制作糟糕的演示,我是 HTML 和 CSS 的初学者,我可能错过了一些非常明显的东西。

编辑:我在 css 上做了一个悬停 Action ,所以你可以看到纵横比有效

最佳答案

问题出在您的两个内部元素的 padding-bottom 上。因为 the box model ,当您将基于百分比的填充应用于元素时,它 calculates based off of the parents (bubbling) width ,忽略 **高度

要解决这个问题,只需设置一个固定的 padding-bottom:

HTML,
body {
margin: 0;
padding: 0;
height: 100%;
}

#container {
background: khaki;
padding: 10px;
width: 350px; /* Increased for demo */
height: 150px; /* To fit within snippet */
display: table;
}

#c-ver-al {
background: lightblue;
padding: 10px;
text-align: -webkit-center;
display: table-cell;
vertical-align: middle;
height 100%;
width: 100%;
}

#c-hor-al {
background: pink;
padding: 10px;
text-align: -webkit-center;
display: inline-block;
object-fit: cover;
height 100%;
width: 100%;
}

#frame {
padding: 10px;
background: lightgray;
height: 100%;
width: 100%;
}

#window {
width: 66%;
padding-bottom: 75px;
background: blue;
}

#chat {
width: 33%;
padding-bottom: 75px;
background: red;
}

.content {
display: inline-block;
margin: -2px;
}
<html>

<body>
<div id="container">
<div id="c-ver-al">
<div id="c-hor-al">
<div id="frame">
<div id="chat" class="content"></div>
<div id="window" class="content"></div>
</div>
</div>
</div>
</div>
</body>

</html>

如果您想让子容器实际上超出父容器,那么您需要使用负的margin

关于css - 使用 css 给定其父级的宽度和高度来缩放一个 div(保持其纵横比),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48874568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com