flex实现横向滚动

10,332 阅读1分钟

实现横向滚动有多种实现方式,之前做过实现横向滚动,有一种方式更快捷、更方便实现横向滚动,其中一点关于对子元素的flex-shrink理解。在父元素设置display:flex后,子元素默认flex-shrink: 1;,当子元素的宽度width之和大于屏幕宽度width之后是无法实现滚动的,这时需要在子元素上flex-shrink: 0;

CSS **

    /* 父元素 */
    .scroll {
        display: flex;
    }
    /* 子元素 */
    .item {
        /* width: 100px; */
        width: 100px;
        height: 50px;
        margin-right: 10px;
        background-color: gray;
        border-right: 1px solid;
        text-align: center;      
        flex-shrink: 0;
        line-height: 50px;
    }

html

     <div class="scroll">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
        <div class="item">7</div>
        <div class="item">8</div>
        <div class="item">9</div>
        <div class="item">X</div>
        <div class="item">XI</div>
    </div>
    <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>横向滚动</title>
</head>
<style>
    /* 父元素 */
    .scroll {
        display: flex;
    }
    /* 子元素 */
    .item {
        /* width: 100px; */
        width: 100px;
        height: 50px;
        margin-right: 10px;
        background-color: gray;
        border-right: 1px solid;
        text-align: center;      
        flex-shrink: 0;
        line-height: 50px;
    }
</style>

<body>
    <div class="scroll">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
        <div class="item">7</div>
        <div class="item">8</div>
        <div class="item">9</div>
        <div class="item">X</div>
        <div class="item">XI</div>
    </div>
</body>
</html>

Video_2021-09-15_2336272021915233751.gif