代码之家  ›  专栏  ›  技术社区  ›  Onyx

如何使带有类消息的div元素可滚动?溢出:auto不显示滚动条,div无法滚动

  •  1
  • Onyx  · 技术社区  · 4 年前

    正如您在下面的代码中看到的,我有一个 div 具有类的元素 messages 里面有很多孩子 迪夫 message . 我想让那个div在 消息 overflow: auto;

    我不确定这是否相关,但是 信息 100vh 以及 信息 flex: 1 空间。

    *, *:after, *:before {
        margin: 0;
        padding: 0;
        -webkit-box-sizing: border-box;
        box-sizing: border-box;
        text-decoration: none;
        list-style-type: none;
    }
    .chat {
        flex: 1;
        display: flex;
        flex-direction: column;
        background-color: #36393f;
        height: 100vh;
    }
    .chat-container {
        display: flex;
        flex-direction: column;
        height: 100%;
    }
    .selected-room-name {
        padding: 20px;
        color: #ffffff;
        font-weight: 500;
        font-size: 16px;
        border-bottom: 2px solid rgba(0, 0, 0, 0.2);
    }
    .messages {
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
        flex: 1;
        padding: 20px;
        overflow: auto;
    }
    .message {
        display: flex;
        align-items: center;
        background-color: #40444b;
        padding: 15px;
        border-radius: 10px;
        margin-bottom: 20px;
        color: #e0e0e0;
        height: 50px;
    }
    .message:last-child {
        margin-bottom: 0px;
    }
    .form-container {
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .send-message {
        padding: 20px 0px 20px 20px;
        flex: 1;
    }
    .message-input {
        width: 100%;
        padding: 15px;
        outline: none;
        border: none;
        background-color: #40444b;
        color: #dcddde;
        font-size: 14px;
        border-radius: 5px 0 0 5px;
    }
    <div class="chat">
            <div class='chat-container'>
                <p class='selected-room-name'>Server</p>
                <div class="messages">
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                </div>
                <div class="form-container">
                    <form class='send-message' >
                        <input class='message-input'  placeholder="Type a message">
                    </form>
                </div>
            </div>
        </div>
    1 回复  |  直到 4 年前
        1
  •  0
  •   Ozone    4 年前

    在你的css中,你需要 overflow: overflow-y; .messages{} . 我也给了你一个免费的 position: sticky;

        *, *:after, *:before {
            margin: 0;
            padding: 0;
            -webkit-box-sizing: border-box;
            box-sizing: border-box;
            text-decoration: none;
            list-style-type: none;
        }
        .chat {
            flex: 1;
            display: flex;
            flex-direction: column;
            height: 100vh;
        }
        .chat-container {
            position: relative;
            display: flex;
            flex-direction: column;
            height: 100%;
        }
        .selected-room-name {
            position: sticky;
            top: 0px;
            padding: 20px;
            color: #ffffff;
            font-weight: 500;
            font-size: 16px;
            border-bottom: 2px solid rgba(0, 0, 0, 0.2);
            max-height:100%;
        }
        .messages {
            display: flex;
            flex-direction: column;
            justify-content: flex-end;
            flex: 1;
            padding: 20px;
            overflow: overflow-y;
            
        }
        .message {
            display: flex;
            align-items: center;
            background-color: #40444b;
            padding: 15px;
            border-radius: 10px;
            margin-bottom: 20px;
            color: #e0e0e0;
            height: 50px;
        }
        .message:last-child {
            margin-bottom: 0px;
        }
        .form-container {
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .send-message {
            padding: 20px 0px 20px 20px;
            flex: 1;
        }
        .message-input {
            width: 100%;
            padding: 15px;
            outline: none;
            border: none;
            background-color: #40444b;
            color: #dcddde;
            font-size: 14px;
            border-radius: 5px 0 0 5px;
        }
    <div class="chat">
            <div class='chat-container'>
                <p class='selected-room-name'>Server</p>
                <div class="messages">
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                    <div class='message'></div>
                </div>
                <div class="form-container">
                    <form class='send-message' >
                        <input class='message-input'  placeholder="Type a message">
                    </form>
                </div>
            </div>
        </div>