Intro
I showed some elements center with flexbox.
And I wanted to make scrollable when a text what was in an element was long.
Environments
- PostCSS ver.7.0.32
 
- Autoprefixer ver.9.8.0
 
Samples
package.json
{
    "scripts": {
        "css": "npx postcss src/pcss/*.css -c postcss.config.js -d dist/css -w"
    },
    "browserslist": [
        "last 2 versions"
    ],
    "dependencies": {
        "autoprefixer": "^9.8.0",
        "postcss": "^7.0.32",
        "postcss-cli": "^7.1.1",
        "postcss-import": "^12.0.1",
        "precss": "^4.0.0"
    }
}
postcss.config.js
module.exports = {
    plugins: [
        require('autoprefixer')({
            "grid": true,
        }),
        require('precss')
    ]
}
main.html
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Hello</title>
        <meta charset="utf-8"/>
        <link rel="stylesheet" href="css/style.css">
    </head>
    <body>
        <div id="outside">
            <div class="cell">
                ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
            </div>
            <div class="cell">
                ABC
            </div>
        </div>
    </body>
</html>
style.css
#outside {
    border: solid 1px #000;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    height: 20vh;
    width: 20vw;
}
.cell {
    border: solid 1px #000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 40%;
    /* IE, Firefox (Chrome) */
    word-break: break-all;
    overflow-x: hidden;
    overflow-y: auto;
}
Problem
I couldn't scroll to top.
Although some suggested "margin: auto", "align-items: safe center", and so on, the problem wasn't resolved.
When I could scroll to top on left side item, I couldn't center the right side item.
Resolve
I divided the elements into center items and scroll texts.
main.html
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Hello</title>
        <meta charset="utf-8"/>
        <link rel="stylesheet" href="css/style.css">
    </head>
    <body>
        <div id="outside">
            <div class="cell">
                <div class="cell_text">
                    ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
                </div>
            </div>
            <div class="cell">
                <div class="cell_text">
                    ABC
                </div>
            </div>
        </div>
    </body>
</html>
style.css
...
.cell {
    border: solid 1px #000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 40%;
}
.cell_text {
    display: inline-block;
    height: auto;
    max-width: 100%;
    /* IE, Firefox (Chrome) */
    word-break: break-all;
    overflow-y: auto;
    overflow-x: hidden;
}
Now I could scroll to top.
 
コメント
コメントを投稿