如何创建带parallax scrolling的前景全屏边框图片页面
实现全屏透明中心边框的视差滚动方案
嘿,这个需求我刚好有几个实用的方案,既能满足你要的「全屏前景边框+视差滚动」效果,又不用拆分图片,还能保证页面内容里的链接正常点击,咱们来详细说:
核心思路:固定定位前景容器 + 点击穿透
最省心的方法是用一个固定定位的全屏容器来承载你的中心透明边框图,然后通过CSS属性让点击事件穿透这个容器,直接作用到下面的内容上。这样既不用拆分边框图,扩展性也拉满——换边框只需要替换图片URL就行。
具体实现步骤
- 准备边框图片:制作一张和视口尺寸匹配的PNG图,四周是边框样式,中心区域完全透明(这样下面的内容能透出来)。
- HTML结构:
<!-- 前景边框容器 --> <div class="parallax-frame"></div> <!-- 页面主体内容 --> <main class="page-content"> <section class="section"> <h2>第一部分内容</h2> <p>这里是测试文本,<a href="#demo-link">这个链接可以正常点击</a></p> </section> <section class="section"> <h2>第二部分内容</h2> <p>继续滚动看看视差效果~</p> </section> </main>
- CSS样式:
/* 前景边框容器 */ .parallax-frame { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: url('你的边框图片路径') no-repeat center center / cover; z-index: 100; /* 确保在内容上方 */ pointer-events: none; /* 关键!让点击事件穿透到下层内容 */ } /* 主体内容容器 */ .page-content { position: relative; z-index: 50; /* 低于边框容器,保证内容在边框下方显示 */ /* 根据边框的宽度设置内边距,避免内容被边框遮挡 */ padding: 3rem; } /* 视差滚动效果实现(以section背景固定为例) */ .section { min-height: 100vh; margin-bottom: 2rem; background: url('你的内容背景图') no-repeat center center / cover; background-attachment: fixed; /* 基础视差效果 */ display: flex; flex-direction: column; align-items: center; justify-content: center; color: #fff; padding: 2rem; }
增强视差感(可选)
如果想让边框也带点轻微的视差移动效果(比如滚动时边框比内容移动慢一点),可以加几行JS代码:
window.addEventListener('scroll', () => { const scrollOffset = window.scrollY; // 调整0.1这个数值控制边框移动速度,数值越小移动越慢 document.querySelector('.parallax-frame').style.transform = `translateY(${scrollOffset * 0.1}px)`; });
注意事项
- 边框图片的中心一定要是完全透明的,否则内容会被遮挡;
- 内边距
padding的数值要和边框的实际宽度对应,确保内容不会被边框挡住; - 如果页面有弹窗等需要在边框上方显示的元素,记得把弹窗的
z-index设得比.parallax-frame更高(比如150)。
内容的提问来源于stack exchange,提问作者Christian O'Rourke
相关产品推荐
相关产品推荐

