为浮动Div实现背景淡出模糊效果
实现消息容器底部的内容模糊遮罩
你当前的问题是模糊效果只作用于空div本身,而不是它后方的消息内容。这是因为blur-sm是模糊元素自身,而你需要的是模糊元素背后的内容,得用backdrop-blur系列属性。
修改后的代码:
<> <div ref={messagesContainerRef} className="w-full h-full flex flex-col rounded-xl overflow-auto relative" > {messages.map((message, index) => ( <div key={message.id} className="w-full flex flex-col border-[1px] border-white/30 rounded-xl p-2 my-1" > <div className="w-full rounded-lg text-sm">{message.question}</div> <div className="w-full py-2 rounded-lg text-sm">{message.answer}</div> </div> ))} {/* 把遮罩移到容器内部,使用backdrop-blur实现背景模糊 */} <div className="absolute bottom-0 left-0 w-full h-16 bg-gradient-to-t from-black/50 to-transparent backdrop-blur-sm pointer-events-none"></div> </div> </>
关键修改点:
- 将遮罩div移入消息容器内,利用容器的
relative定位,确保它始终贴合容器底部。 - 替换
blur-sm为backdrop-blur-sm:这个属性会模糊遮罩元素后方的所有内容,正是你需要的效果。 - 添加
bg-gradient-to-t from-black/50 to-transparent:通过渐变背景让模糊效果从底部到顶部自然过渡,避免生硬的截断感。 - 加上
pointer-events-none:确保遮罩不会阻挡消息区域的点击、滚动等交互操作。
内容的提问来源于stack exchange,提问作者Jonathan Sandler
相关产品推荐
相关产品推荐

