scroll-view使用position:sticky不能一直生效

当在scroll-view中使用sticky元素时 为确保其正常响应滚动效果 需要在scroll-view内部添加一个无样式的view元素 作为所有内容的根元素 这样即使sticky元素超出了scroll-view的原始高度 它也能正确地识别与顶部的相对位置 保持其应有的样式和交互效果

<template>  
    <view class="content">  
        <scroll-view scroll-y="true" class="scroll-view">  
            <view>  
                <view class="header">  
                    我是固定标题  
                </view>  
                <view class="body">  
                    我是内容  
                </view>  
                <view class="line">  
                    我是父元素高度  
                </view>  
            </view>  
        </scroll-view>  
    </view>  
</template>  
<script>  
    export default {  
        data() {  
            return {  
                title: 'Hello',  
            };  
        },  
        onLoad() {},  
        methods: {}  
    };  
</script>  
<style lang="scss" scoped>  
    .scroll-view {  
        height: 100vw;  
        /* overflow-y: auto; */  
        position: relative;  
        color: #fff;  
        text-align: center;  

        .header {  
            background-color: red;  
            height: 80rpx;  
            line-height: 80rpx;  
            position: sticky;  
            top: 0rpx;  
        }  

        .body {  
            background-color: green;  
            height: 800vh;  
        }  

        .line {  
            position: absolute;  
            top: 0;  
            height: 100%;  
            background-color: royalblue;  
            z-index: 2;  
        }  
    }  
</style>
image.png

方法是在scroll-view中添加一个父级容器,这样可以使用position: sticky根据新添加的父级容器高度来实现吸附效果,而不是根据scroll-view的滚动高度。这是一个很好的解决方案,可以避免在scroll-view中使用position: fixed的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容