scrollTop在标准模式下需读document.documentElement.scrollTop而非document.body.scrollTop;左右广告宽屏显示可用JS判断screen.width或CSS媒体查询;关闭按钮应通过.closest()定位父容器并配合localStorage持久化状态。

直接用 position: fixed + 两个绝对定位容器就能实现,无需 JS 也能动,但加 JS 才能关、才适配滚动和分辨率。
为什么 scrollTop 在标准文档下取不到值?
用了 后,<code>document.body.scrollTop 恒为 0 —— 浏览器把滚动位置交给了 document.documentElement。不处理这个,广告就卡在顶部不动。
- 正确写法是:
$(window).scrollTop()(jQuery)或document.documentElement.scrollTop || document.body.scrollTop(原生) - 老代码里直接读
body.scrollTop,只在 quirks mode 下有效 - IE6 需要
_top: expression(eval(document.documentElement.scrollTop))这种 hack,现在基本可忽略
怎么让左右广告只在宽屏显示?
用 JS 判断 screen.width 或 window.innerWidth,比 CSS 媒体查询更可控,尤其当你想联动广告显隐逻辑时。
实现 Markdown↔ HTML 互转,支持导出 PDF,用于用户请求的文档格式转换。
-
if (screen.width > 1024) { $('.duilian').show(); }—— 屏幕宽度判断,加载即生效 -
@media (min-width: 1024px) { .duilian { display: block; } }—— 纯 CSS 方案,但无法响应关闭操作 - 注意:不要混用
screen.width和$(window).width(),前者是设备物理宽度,后者是视口宽度
关闭按钮怎么做到「只关自己那一边」?
关键在事件委托和 DOM 定位:每个广告容器带唯一 class 或 data 属性,关闭按钮用 .closest() 找到父容器再隐藏。
立即学习“前端免费学习笔记(深入)”;
- HTML 示例:
<div class="duilian duilian_left"> <div class="ad-content">...</div> <span class="close-btn">×</span> </div> - JS 示例:
$('.close-btn').on('click', function() { $(this).closest('.duilian').hide(); }); - 别用
id做判断(容易重复),也别用:first/:last(DOM 顺序不可靠)
真正麻烦的不是显示,而是「关掉后用户刷新页面又弹出来」——得配合 localStorage 记录关闭状态,否则体验断层。这点常被跳过,但上线后投诉最多。


















