【问题标题】:Flex 1:1 is not working with Ionic grid. I need to allocate the space 50: 50Flex 1:1 不适用于 Ionic 网格。我需要分配空间 50: 50
【发布时间】:2019-03-07 19:41:34
【问题描述】:

.scss

.content {
    ion-grid {
        height: 100% !important;
    }
    .row1 {
        flex: 1 !important;
    }
    .row2 {
        flex: 1 !important;
    }
}

.html

<ion-content class="content">
  <ion-grid>
    <ion-row class="row1">
      <ion-col size="12">
          S-Works Venge Disc – SRAM eTAP
      </ion-col>
    </ion-row>
    <ion-row class="row2">
      <ion-col size="12">
        <ion-row>
          <ion-col size="12">
            S-Works Venge Disc – SRAM eTAP
          </ion-col>
        </ion-row>
        <ion-row>
          <ion-col size="12">
            Availability : Upon Request
          </ion-col>
        </ion-row>
        <ion-row>
          <ion-col size="12">
            About
          </ion-col>
        </ion-row>
        <ion-row>
          <ion-col size="12">
            We aren't satisfied with second fastest. Hello, why do you think we have our own Win Tunnel and the motto,
            "Aero is Everything?" We live and breathe aero, because we know that aerodynamic optimization is the best
            thing we can do to make you faster. And this philosophy has never been truer than with the new Venge. Being
            eight seconds faster than the ViAS, it’s not only the most aerodynamic bike on the road, but it’s also lost
            460 grams. And now with SRAM RED eTAP, you’re definitively looking at the new shape of speed.
          </ion-col>
        </ion-row>
      </ion-col>
    </ion-row>
  </ion-grid>
</ion-content>

结果:

问:你能告诉我为什么上面的设计看不到50:50空间分配吗?

【问题讨论】:

    标签: html css angular flexbox ionic4


    【解决方案1】:

    要使flex: 1 属性起作用,其父级必须具有display: flex 属性 默认情况下,display: flex 在一行中显示其子元素,这就是为什么我们需要将方向更改为列

    ion-grid {
        display: flex;
        flex-direction: column;
        height: 100% !important;
    }
    

    【讨论】:

    • 谢谢。这工作正常。请提供一点解释。此处仅代码的答案将被关闭或否决。
    • 我添加了描述,对此感到抱歉。 =)
    【解决方案2】:

    就我所见,问题似乎出在简写 flex: 1 上。 Flex 速记在不同的浏览器中可能有点棘手。

    很遗憾,我目前无法测试我的解决方案,但我会执行以下操作:

    .row1,
    .row2 {
      flex-basis: 0;
      flex-grow: 1;
    }
    

    这样,两个项目都将从 height: 0 开始,并且 flex grow 会将剩余空间平均分配给两行

    【讨论】:

    • 不要发布您没有测试过的答案,或者不确定它们是否有效。
    • 我根据有关 ion-grid 如何工作的 ionic 文档和我对 flexbox 的经验来回答,有什么问题?
    • 另一方面,公认的解决方案在离子框架内并没有真正提供好的解决方案。 ion-grid 已经是一个具有 display flex 属性的容器,并且通过添加 ion-row 元素,您已经使它们彼此重叠显示(与设置 flex-direction: row 的效果相同)。
    • 我并不是说flex-direction: row 将项目显示在顶部,我的意思是ion-row 元素会自动堆叠在一起,因为ion-grid 组件就是这样工作的.在上面写着(same effect with as setting flex-direction: row) 的地方应该写着flex-direction: column,这是我的错。我建议更改速记,因为 flex: 1 应该已经可以工作,如果不是,那么它可能是浏览器的问题,这里有一个工作的 stackblitz 与完全相同的代码 OP 发布:stackblitz.com/edit/ionic-cdjgbb
    • 确实,它可以双向使用,您关于速记减少错误的说法并不完全正确。没关系,我不想进行无休止的讨论,我只是对为什么我对完全忽略框架和 OP 正在使用的实际组件的解决方案投反对票感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2018-05-12
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多