欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

封裝SVG元素的嵌套伸縮框

錢多多2年前9瀏覽0評論

我試圖在#header div下創建一個水平滾動的flex #main-container。# main-container的子元素是。應該垂直填充容器剩余空間的框元素。這些元素中的每一個都有更多的UI嵌套元素,最終包含一個customs svg元素。

我設法用下面的代碼做了我需要做的事情,除了水平調整。box元素來適應嵌套的svg元素,這實際上是一個完美的圓?,F在,隨著瀏覽器視口大小的增長,svg元素也在增長,并向右側溢出(隱藏)。我希望svg元素增加兩者的寬度。盒子還是。直到svg元素垂直填充內部可用的垂直空間。svg容器,然后停止增加。方框寬度。我不知道為了達到這個目標我還缺少什么。

另外,像這樣嵌套flex盒子被認為是好的實踐嗎?對于本質上簡單的布局來說,這似乎過于復雜了。除了上面描述的問題,它看起來完全符合我的需要(我已經測試了三種現代瀏覽器),但我不知道這是不是一種非常復雜的方法。

#app {
    height: 100vh;
    display: flex;
    flex-direction: column;
}

#header {
    margin: 0;
    padding: 1em 0;
}

/* Container horizontal flex box:
renders .box elements horizontally with scroll on overflow */
.main-container {
    display: flex;
    flex-direction: row;
    overflow-x: scroll;
    align-items: center;
    justify-content: center;
    column-gap: 1em;
    padding: 1em;
    /* Vertically fill remaining space in #app */
    flex-grow: 1;
}

/* Vertical flex box:
fill available vertical space in #container */
.box {
    max-height: 50em;
    height: 100%;
    display: flex;
    flex-shrink: 0;
}

/* Extra wrapper allows round borders for boxes with "overflow: hidden"
while still allowing "overflow-x: scroll" in #container */
.box-container {
    overflow: hidden;
    background-color: var(--color-04);
    border: 1px solid var(--color-00);
    border-radius: 3em;
    /* Vertical flex container 
    allows pushing ".bottom-ui" to the bottom */
    display: flex;
    flex-direction: column;
    width: 100%;
    flex-shrink: 0;
    /* Needed for absolute positioning of close button inside .box */
    position: relative;
}

.top-ui {
    padding-bottom: 1em;
    /* Push .bottom-ui down, flush with .box-container bottom */
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

.svg-container {
    /* Push rest of UI to the bottom */
    flex-grow: 1;
    /*
    adding this scales down the svg element to fit the main .box width
    instead of enlarging the box:

    display: flex;
    flex-direction: column;
    */
}

svg {
    height: 100%;
}

<div id='app'>
    <div id='header'>
        <p>some text</p>
    </div>
    <div class='container'>
        <div class='box'>
            <div class='box-container'>
                <div class='top-ui'>
                    <div class='svg-container'>
                        <svg>
                    </div>
                    <!--- more stuff here --->
                </div>
                <div class='bottom-ui'>
                    <!--- more stuff here --->
                </div>
            </div>
        </div>
    </div>
</div>