【问题标题】:How can I get my grid layout to work in Safari如何让我的网格布局在 Safari 中工作
【发布时间】:2020-02-20 17:00:44
【问题描述】:

我已经构建了一个表示钢琴键盘的保持纵横比的简单网格布局。它在 firefox 和 chrome 中运行良好,但在 safari 中表现平平,因为它没有填满可用的垂直空间(见屏幕截图)。

Chrome/Firefox:

Safari:

有什么想法为什么会这样以及我该如何解决?我搜索了很多,发现了很多与 safari 相关的网格相关问题,但我找不到可以解决我的问题的解决方案。

Codepen(在 chrome/firefox 与 safari 中进行比较)

https://codepen.io/ChrisVomRhein/pen/RwPGYrM

HTML:

<div id="keyboard">
    <ul>
        <li id="key-c" class="keys-white button" data-name="c">key-c</li>
        <li id="key-d" class="keys-white button" data-name="d">key-d</li>
        <li id="key-e" class="keys-white button" data-name="e">key-e</li>

        <!-- [...] -->

        <li id="key-cis" class="keys-black button" data-name="cis">key-cis</li>
        <li id="key-dis" class="keys-black button" data-name="dis">key-dis</li>

        <!-- [...] -->
    </ul>
</div>

SCSS:

#keyboard {
    /* maintain aspect ratio */
    position: relative;
    padding-bottom: 25%;

    > ul {
        /* stretch ul to keyboard div */
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;

        display: grid;
        grid-template-rows: repeat(2, 1fr);
        grid-template-columns: repeat(45, 1fr);

        > li {
            font-size: 0;
            grid-row: 1 / 3;
            border: 2px solid $color-dark;
            grid-column-end: span 3;

            &.keys-white {
                border-width: 2px 1px;
                background-color: white;
                z-index: 10;
            }

            &.keys-black {
                grid-row: 1 / 2;
                background-color: $color-dark;
                z-index: 100;
                grid-column-end: span 2;
            }

            &#key-c {
                border-left-width: 2px;
                grid-column-start: 1;
            }

            &#key-d {
                grid-column-start: 4;
            }

            &#key-e {
                grid-column-start: 7;
            }

            /* [...] */

            &#key-cis {
                grid-column-start:  3;
            }

            &#key-dis {
                grid-column-start:  6;
            }

            /* [...] */
        }
    }
}

【问题讨论】:

  • 可能是你尝试硬编码高度。
  • 这不是一个真正的选择,因为我需要网格布局来尊重纵横比。

标签: html css safari css-grid grid-layout


【解决方案1】:

为了尊重 Safari 中的纵横比,您不仅需要声明 padding-bottom 值,还需要将高度设置为零。此外,将父 UL 元素设置为等于父 100% 高度。有了这两个附加值,它就像 safari 的魅力一样。请参阅下面的代码或codepen

#keyboard {
  /* maintain aspect ratio */
  position: relative;
  padding-bottom: 25%;
  height: 0; // add this

  > ul {
    /* stretch ul to keyboard div */
    position: absolute;
    height: 100%; // add this
    top: 0;
...

【讨论】:

  • 这是一个非常简单的 100% 现场解决方案!非常感谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 2015-01-01
  • 2018-12-31
  • 2020-12-01
  • 1970-01-01
相关资源
最近更新 更多