【问题标题】:How to maintain an aspect ratio of a div inside another div如何在另一个 div 中保持 div 的纵横比
【发布时间】:2020-05-28 14:13:04
【问题描述】:

所以我有一个 div,其中包含两个 divs 一个在另一个之上。我希望顶部的宽高比为4:5,宽度为 100%,因为它将包含该比例的图像,然后剩余高度转到第二个 div

这是我能走的最远了

你可以找到所有的代码here

注意:我希望在用户缩小屏幕尺寸时保持该纵横比,尝试缩小沙盒示例中的宽度以查看

&_product{
                    overflow: hidden;
                    padding-top: 800.34px / 591.44px * 100%;
                    background: rgb(207, 206, 206);
                    position: relative;
                    max-width: 232px;
                    // max-height: 317.313px;
                    &_inside {
                      display: grid;
                      // grid-template-columns: 1fr 
                      // grid-template-rows: 1fr 80px;;
                      position: absolute;
                      top: 0;
                      left: 0;
                      width: 100%;
                      height: 100%;
                    }

                    border: 1px solid rgb(131, 72, 72);
                    position:relative;
                    width:100%;
                    height:fit-content;
                    box-shadow: 0 5px 15px rgba(0,0,0,.25);
                    overflow:hidden;
                    &_imgbox{
                      height: 100% ;
                      border: 1px solid red;
                      box-sizing:border-box;
                      position: relative;
                      // img{
                      //   width:100%;
                      //   display:block;
                      //   margin:0;
                      // }
                      &_aspect {
                        position: absolute;
                        width: 100%;
                        height: 5px/4px*100%;   // My attempted calculation
                        background: blue;
                        top: 0;
                        // left: 0;


                      }
                  }
                }

html

    <div class="Recommendations_container_recomendation_box_product">
                            <div class="Recommendations_container_recomendation_box_product_inside">
                                <div class="Recommendations_container_recomendation_box_product_imgbox">
                                    <div class="Recommendations_container_recomendation_box_product_imgbox_aspect">

                                        {/* <img src="https://images.sportsdirect.com/images/products/62310640_l.jpg" /> */}
                                    </div>

                                </div>
                                <div class="Recommendations_container_recomendation_box_details">
                                    <div class="Recommendations_container_recomendation_box_details_price">$55.99</div>
                                    <h2>Brand Name<br /><span>Mens Designer T-shirt</span></h2>


                                </div>
                            </div>

                        </div>

【问题讨论】:

  • 你遇到了什么问题?
  • 我无法使顶部内部 div 的宽高比为宽度的 4:5 @RishabhdevTyagi 你知道如何
  • 您是否尝试过以 px 为单位设置宽度和高度?
  • 这是我希望高度以与用户缩小屏幕宽度相同的比例增长的问题,检查上面的沙箱示例以获得效果@RishabhdevTyagi
  • 当外容器变大时,您是否希望内容器也长到全尺寸并匹配外容器?

标签: javascript css reactjs sass css3pie


【解决方案1】:

试试这个:

.Recommendations_container_recomendation{

  display:flex;

}

【讨论】:

  • 我不认为那是我想要的,但我想通了。我在height 上进行计算的地方应该在padding-top 上。检查输出link
  • 在 vw(视口宽度)中设置宽度和在 vh(视口高度)中设置高度
  • checkout,沙盒链接的输出,已修复
【解决方案2】:

Flex 可以在这里真正为您提供帮助。我附上了您要实现的目标的简化版本。

这只是几行 CSS。希望能帮助到你。

如果您更改框的height,您会看到它保持该比率。 想法是在盒子内,每个项目都有一个flex 值。因此,所有值的总和然后除以单个 flex 值以确定比率。

.box {
  display: flex;
  flex-direction: column;
  height: 300px;
  width: 300px;
  border: 1px solid black;
}

.four-fifth {
  flex: 4;
  background-color: red;
}

.remaining-height {
  flex: 1;
  background-color: green;
}
<div class="box">
    <div class="four-fifth">
        Content
    </div>
    <div class="remaining-height">
        Additional content
    </div>
</div>

【讨论】:

  • 感谢您的尝试,我不确定我是否提出了错误的问题,但我想在宽度改变而不是高度时保持比例。我已经修复了fixed here
  • 当然,当你改变宽度时它也会保持比例
【解决方案3】:

我通过计算填充顶部的比率而不是高度来解决这个问题

fixed here

padding-top: height: 5px/4px * 100%;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    相关资源
    最近更新 更多