首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在菜单打开时可以进行后台滚动(包括Codepen)

在菜单打开时进行后台滚动,通常指的是在用户界面上有一个弹出菜单或侧边栏显示时,页面的其余部分(即“后台”)仍然可以滚动。这种设计在用户体验上可能引发一些问题,比如用户在操作弹出菜单时意外滚动页面,导致菜单关闭或焦点丢失。下面我将详细解释这一现象的基础概念、相关优势、类型、应用场景,以及可能遇到的问题和解决方案。

基础概念

后台滚动指的是当一个模态窗口、弹出菜单或其他覆盖层打开时,页面背景内容仍然可以滚动。这通常是通过CSS和JavaScript来控制的。

相关优势

  1. 保持上下文:用户可以在查看或操作弹出内容的同时,保持对页面其余部分的视觉参考。
  2. 灵活性:允许用户在需要时滚动页面,无需完全关闭弹出层。

类型

  • 全局后台滚动:整个页面都可以滚动。
  • 局部后台滚动:仅页面的特定区域可以滚动。

应用场景

  • 长表单:用户在填写表单时可能需要查看或参考页面上方的信息。
  • 详细信息视图:展示某个项目的详细信息时,用户可能还想浏览页面的其他部分。
  • 多步骤流程:在多步骤的向导或流程中,用户可能需要在不同步骤间滚动查看。

可能遇到的问题及原因

问题:用户在操作弹出菜单时,页面意外滚动,导致体验不佳。

原因

  • 缺乏适当的锁定机制:没有使用CSS或JavaScript来阻止背景滚动。
  • 事件处理不当:可能是在打开弹出层时未正确绑定或解绑滚动事件。

解决方案

使用CSS锁定背景滚动

代码语言:txt
复制
body.modal-open {
  overflow: hidden;
}

然后在打开和关闭弹出层时,通过JavaScript切换modal-open类:

代码语言:txt
复制
function openModal() {
  document.body.classList.add('modal-open');
}

function closeModal() {
  document.body.classList.remove('modal-open');
}

使用JavaScript阻止滚动事件

代码语言:txt
复制
function disableScroll() {
  document.body.style.position = 'fixed';
  document.body.style.top = `-${window.scrollY}px`;
}

function enableScroll() {
  const scrollY = document.body.style.top;
  document.body.style.position = '';
  document.body.style.top = '';
  window.scrollTo(0, parseInt(scrollY || '0') * -1);
}

在打开弹出层时调用disableScroll(),关闭时调用enableScroll()

注意事项

  • 可访问性:确保这些更改不会影响屏幕阅读器或其他辅助技术的使用。
  • 性能考虑:避免在滚动事件中进行昂贵的操作,以免影响性能。

通过上述方法,可以有效地控制菜单打开时的后台滚动行为,提升用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

8 个 DOM 功能

这是一个 CodePen 演示,演示了如何使用 setTimeout(): CodePen:https://codepen.io/impressivewebs/pen/PgoNEj 单击该按钮时,将会使用传入的两个值进行计算...可以通过修改代码中的数字更改值。 至于浏览器支持,似乎在兼容性上有些小问题,不过看上去现在几乎所有还在使用中的浏览器都支持可选参数功能,包括 IE10。...打开 CodePen 控制台或浏览器的开发人员工具控制台可以查看生成的日志。...offsetHeight 属性返回相同的值,因为它不考虑可滚动区域或隐藏区域,它只测量元素的实际高度,包括垂直填充和边框。...另一方面,命名恰当的 scrollHeight 属性将会计算元素的完整高度,包括可滚动(或隐藏)区域: CodePen:https://codepen.io/impressivewebs/pen/EJyvoB

1.8K20
  • 前端优秀实践不完全指南

    一个 Web 页面,一个 APP,想让别人用的爽,也就是所谓的良好的用户体验,我觉得他可能包括但不限于: 急速的打开速度 眼前一亮的 UI 设计 酷炫的动画效果 丰富的个性化设置 便捷的操作 贴心的细节...在屏幕宽度大于 1200px 时,两侧留白,当然屏幕宽度小于 1200px 时,则出现滚动条,保证内部内容不乱。 ? 对于现代布局,更多的是全屏布局。...光看定义有点难理解,简单而言,这个属性规定了一个容器是否对内部滚动动作进行捕捉,并且规定了如何去处理滚动结束状态。让滚动操作结束后,元素停止在适合的位置。 看个简单示例: ?...先说结论,控制滚动层级的意思是尽量让需要进行 CSS 动画(可以是元素的动画,也可以是容器的滚动)的元素的 z-index 保持在页面最上方,避免浏览器创建不必要的图形层(GraphicsLayer),...实际使用的时候,由于是一个页面跳转,很多时候,用户希望能够保留当前页面的内容,同时打开一个新的窗口,这个时候,他会尝试下的鼠标右键,选择在新标签页中打开页面,遗憾的是,上述的写法是不支持鼠标右键打开新页面的

    88420

    CSS 中 关于 Overflow ,你需要了解的这些知识点!

    作者:Ahmad shaded 译者:前端小智 来源:sitepoint 在CSS中,当一个元素的内容太大而无法容纳时,我们可以对其进行控制。...然而,在Safari上对iOS(12.4.1)进行测试时,滚动并没有起作用。经过反复试验,当我为子项添加宽度时,滚动起作用了,在iOS(13.3)上运行就没有问题啦。...事例源码:https://codepen.io/shadeed/pe... 模态框内容 ? 当模态内容太长时,我们可以很容易地使区域可滚动。...水平滚动问题 通常,我们会遇到水平滚动的问题,当原因未知时,滚动滚动会变得更加困难。 在本节中,我将列出水平滚动的一些常见原因,以便大家以后在构建布局时可以想到到它们。...在这种情况下,我要做的是打开DevTools,然后开始删除元素并注意。 一旦水平滚动消失了,我就可以确定引起问题的元素。

    5.3K20

    2022 年的 CSS 全览

    在@layer之后,入口文件可以预先定义图层及其顺序。然后,当样式加载、加载完成或已经定义时,它们可以放置在一个层中,允许保留样式覆盖的重要性,但无需精心管理加载顺序。...在 color-mix() 之后,开发人员和设计人员可以在浏览器中混合颜色以及所有其他样式,而无需运行构建过程或包括 JavaScript。...当用户滑出侧边菜单时,让鼠标或键盘与后面的页面交互是不合适的;相反,当显示侧边菜单时,使页面处于inert状态,现在用户必须关闭或在该侧边菜单中导航,并且永远不会发现自己在打开菜单的页面中迷失在其他地方...根据访问视口的大小,可以在页面加载上节省更多资源。当用户与媒体滚动条交互时,继续保存。这些图像上都有load="lazy"属性,再加上CSS完全隐藏元素,这意味着永远不会对图像发出网络请求。...对于我的测试,在一个中等大小的视口上,最初加载了 40 个请求和 700kb 的资源。当用户滚动媒体选择时,会加载更多请求和资源。

    4.2K20

    前端-滚动视差?CSS 不在话下

    通常而言,滚动视差在前端需要辅助 Javascript 才能实现。当然,其实 CSS 在实现滚动视差效果方面,也有着不俗的能力。...background-attachment:如果指定了 background-image ,那么 background-attachment 决定背景是在视口中固定的还是随着包含它的区块滚动的。...可以感受下 3 种不同取值的不同效果: CodePen Demo — bg-attachment Demo(https://codepen.io/Chokcoco/pen/xJJorg) 使用 background-attachment...即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。 这里的关键在于,即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。也就是说,背景图从一开始就已经被固定死在初始所在的位置。...CodePen Demo — CSS 3D parallax(https://codepen.io/Chokcoco/pen/EpOeRm) 很明显,当滚动滚动条时,不同子元素的位移程度从视觉上看是不一样的

    1.6K30

    begin主题使用说明(详解教程)

    如果将该引导页面设置为首页,可以进行如下操作: WP后台→设置→阅读,首页显示选择“一个静态页面”,并选择这个新建的“引导页面”如图: ?...也可以将WP默认的注册页面链接加在此处。 注:在添加注册页面时,需要与正常发表日志一样,在正文部分添加一些说明文字,不然注册表单右侧会是空白,不美观。 另外,可以选择非管理员是否允许进入后台。...当页面滚动到第3个四级标题时才会在屏幕左侧边缘显示目录索引,滚动到第2个四级标题时自动隐藏。...注:不能对四级标题进行任何样式操作,包括字号、颜色、位置操作等,否则目录索引将不会生成,并且不能少于3个目录,否则会显示JS错误。...备用代码 键盘翻页 主题支持在分类归档页面,用键盘左右方向键翻页,可以跳过滚动加载文章,直接进入下页,包括博客布局的首页。

    4.8K40

    使用 sroll-snap-type 优化滚动

    CodePen Demo -- CSS Scroll Snap Both mandatory Demo scroll-snap-align 使用 scroll-snap-align 可以简单的控制将要聚焦的当前滚动子元素在滚动方向上相对于父容器的对齐方式...CodePen Demo -- CSS Scroll Snap Demo 不规则子元素滚动 如果子元素大小不一,也能有非常好的表现,使用 scroll-snap-align: center,使得不规则子元素在每次滚动后居于容器中间...然而可选的值只有三个,有的时候我们希望进行一些更精细的控制时,可以使用 scroll-margin 或者 scroll-padding 其中: scroll-padding 是作用于滚动父容器,类似于盒子的...总结一下就是,scroll-snap-align 可以对滚动之后的对齐方式进行简单控制,而配合 scroll-margin / scroll-padding 则可以进行精确控制。...实际应用,渐进增强 在实际应用中,应用在全屏滚动/广告banner上有很多用武之地: ? CodePen Demo -- full screen scroll 当然,兼容性现在还是很大的问题: ?

    1.5K30

    Web 用户体验设计提升实践

    一个 Web 页面或是一个 App,想让别人用得爽,获得良好的用户体验,可能需要包括但不限于: 急速的打开速度 令人眼前一亮的 UI 设计 酷炫的动画效果 丰富的个性化设置 易用、友好的便捷操作 贴心的细节...在屏幕宽度大于 1200px 时,两侧留白;屏幕宽度小于 1200px 时,则出现滚动条,保证内部内容不乱。 [ ] 现代布局更多的是全屏布局。...光看定义有点难理解,简单而言,这个属性规定了一个容器是否对内部滚动动作进行捕捉,并且规定了如何去处理滚动结束状态。让滚动操作结束后,元素停止在适合的位置。...先说结论,控制滚动层级的意思是尽量让需要进行 CSS 动画(可以是元素的动画,也可以是容器的滚动)的元素的 z-index 保持在页面最上方,避免浏览器创建不必要的图形层(GraphicsLayer),...实际渲染出来的 DOM 可能类似这样: Detail 在实际的 WMS 重构过程中,我们对于所有有页面跳转功能的按钮,包括但不限于路由菜单、面包屑导航、

    1.3K20

    10个CSS技巧,极大提升用户体验

    当我们谈及改善用户体验时,你会想到什么? 其实,有一点是很容易被开发者忽视的,那就是CSS。我们可以使用一些CSS技巧来改善网页的表现形式、交互细节和可访问性。...事例地址: https://codepen.io/bytefishme... 平滑滚动 当页面被#链接滚动时,默认效果是这样的。 这种突然的跳跃会让人感到不舒服。...Cursor 在不同的场景下使用不同的鼠标样式可以帮助读者感知页面的当前状态,从而改善用户的互动体验。 cursor CSS属性设置鼠标指针在一个元素上时要显示的鼠标指针(如果有的话)。...光标设置应该告知用户在当前位置可以进行的鼠标操作,包括文本选择、激活帮助或上下文菜单、复制内容、调整表格大小,等等。...例如: 事例地址:https://codepen.io/bytefishme... 有很多光标样式,你可以在MDN文档中找到它们。

    81410

    响应式设计

    除了前面提到的交互菜单,移动版设计主要关注的是内容。在大屏上,可以把页面的大块区域拿来做头部、主图、和菜单。然而在移动设备上,用户通常有更明确的目标。 移动版设计就是内容的设计。...矛盾的汉堡包菜单:汉堡包菜单最近几年很流行。它解决了在小屏幕里显示更多内容的问题,但是也有弊端。将重要元素(比如主要的导航菜单)隐藏起来会减少用户跟它们交互的机会。...@media规则会进行条件检查,只有满足所有的条件时,才会将这些样式应用到页面上。 媒体查询里面的规则仍然遵循常规的层叠顺序。...# 媒体查询的类型 可以进一步将两个条件用 and 关键字联合起来组成一个媒体查询。这种联合媒体查询只在设备同时满足这两个条件时才生效。...固定容器(比如,设定了 width: 800px 的元素)在小屏上会超出视口范围,导致需要水平滚动条,而流式容器会自动缩小以适应视口。

    2.1K10

    革命性创新,动画杀手锏 @scroll-timeline

    @scroll-timeline 能够设定一个动画的开始和结束由滚动容器内的滚动进度决定,而不是由时间决定。 意思是,我们可以定义一个动画效果,该动画的开始和结束可以通过容器的滚动来进行控制。...,动画才会开始进行,实际效果 Gif: CodePen Demo -- @scroll-timeline Demo 看到这里,大家应该能够理解 @scroll-timeline 的作用及含义了,它赋予了...,就是动画的开始时间都是从滚动一开始就开始了,刚好在滚动结束时结束。...在滚动过程中,我们可以将一个元素,划分为 3 个区域: 滚动过程中,从上方视野盲区,进入视野 滚动过程中,处于视野中 滚动过程中,从视野中,进入下方视野盲区 在这里,我们就可以得到两个边界,上方边界,下方边界...譬如如下的,滚动内容不断划入: 代码较长,可以戳这里,来自 bramus 的 Codepen CodePen Demo -- Fly-in Contact List (CSS @scroll-timeline

    1K21

    滚动视差?CSS 不在话下

    通常而言,滚动视差在前端需要辅助 Javascript 才能实现。当然,其实 CSS 在实现滚动视差效果方面,也有着不俗的能力。...可以感受下 3 种不同取值的不同效果: CodePen Demo -- bg-attachment Demo 使用 background-attachment: fixed 实现滚动视差 首先,我们使用...即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。 这里的关键在于,即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。也就是说,背景图从一开始就已经被固定死在初始所在的位置。...: fixed 实现图片点击水纹效果 利用图片相对视口固定,可以有很多有趣的效果,譬如下面这个,来源于这篇文章CSS Water Wave (水波效果): CodePen Demo -- bg-attachment...CodePen Demo -- CSS 3D parallax 很明显,当滚动滚动条时,不同子元素的位移程度从视觉上看是不一样的,也就达到了所谓的滚动视差效果。

    1.7K30

    CSS 魔法 | 超强的文本超出提示效果

    ,视野内看到的就是 文本B 了,效果如下 img 最后,把父级超出隐藏,还有 文本B 背景设置成父级相同的颜色就可以了~ img 到这里为止,就实现了文章开头所示的效果,完整代码可以查看codepen...中间省略效果 细心的小伙伴可能已经发现,文章开头的文本超出时,省略号是在 中间 的。 这种设计有什么好处呢?...img 如果省略号在中间就很好区分了。那么,如何实现这一效果呢? 借助上面的布局,下面所有分析只需要对文本B进行处理就行了。...超出滚动效果 有时候,title 提示 可能有点弱,不够明显,产品需要文本超出的时候,鼠标放上去可以自动滚动起来,类似这样的效果 img 如何实现的呢?...的方式模拟 宽度跟随文本自适应可以用 inline-block 实现 无缝滚动效果可以用位移 -50% 来实现 好了,这样一个成本低廉,又非常人性化的小功能,赶紧用起来吧。

    2.1K10

    分享15个有用的,你可能还不知道的CSS小技巧,建议每个前端开发者都了解下

    开篇 为了充分利用这篇文章,我建议你打开一个CodePen或CodeSandbox的选项卡,这样你在阅读文章的同时可以随时调试代码。...需要注意的是,选择器会匹配页面上的每个元素,包括嵌套的元素。因此,在使用选择器时,你需要小心确保样式不会无意间影响到你不想改变的元素。...JavaScript的情况下创建滚动效果 通过使用:target伪类,你可以在元素成为当前URL片段标识符(“#”后面的部分)的目标时对其进行样式设置。...当用户点击包含片段标识符的链接时,浏览器会自动滚动到对应的元素,并应用:target伪类所定义的样式。这使得你可以在页面上创建滚动到特定部分的效果,或者突出显示被定位的元素。...因此,在使用::placeholder伪元素时,请进行充分的测试,并根据需要做必要的样式调整。

    21340

    SAO-UI-PLAN-控制面板企划

    Home CSS Glassmorphism Button Hover Effects | Glass Morphism](https://codepen.io/katarzynamarta/pen...目前的打算就是取消顶栏的页面菜单按钮和侧栏小菜单按钮。把他们放进控制面板里。...搭配butterfly的pug写法,每个窗口可以写个单独的pug,然后再用include引入,开发起来也有条理许多。也方便我后续慢慢往里堆新功能。...还能滚动查看呢。 目前比较头疼的就是性能问题。一堆版块都丢在控制面板里。它的dom量肯定爆炸,当前的想法是做懒加载和挂载。页面内容丢一个js里,点了按钮才insert。这样dom都是点了才新增的。...如果每个窗口都是相同的倒是好办了,只要几个json就好了,可以直接靠json生成,但是很显然不是。 不过这个问题到时候看gulp在压缩时会不会内存溢出吧。不会的话我就不考虑这个了。

    1K30

    手机APP测试(测试点、测试流程、功能测试)

    1、功能测试 1.1 启动 APP安装完成后,是否可以正常打开,稳定运行 APP的速度是可以让人接受,切换是否流畅 网络异常时,应用是否会崩溃:在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生...对于有数据交换的页面,每个页面都必须要进行前后台切换、锁屏的测试,这种页面最容易出现奔溃的现象。 1.5 数据更新 1.6 离线浏览   在无线网络情况下可以浏览本地数据。   ...菜单,进行测试时要注意:   a,选择菜单是否可以正常工作,并与实际执行内容一致;   b,是否有错别字:   c,快捷键是否重复;   d,热键是否重复;   e,快捷键与热键操作是否有效;   f,...和Androoid不同系统、版本、机型上进行安装 逆向:是否可以正常删除(三方软件删除;命令行删除;桌面删除) 逆向:APP安装完成后,是否可以正常打开,稳定运行 逆向:安装过程中断网或网络不稳定的情况下...点击更新是否正确调整到后台配置的更新页面 逆向:APP更新后检查版本号应该有更新 逆向:当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新 逆向:当客户端有新版本时,在本地不删除客户端的情况下

    9.3K44

    滚动视差?CSS 不在话下

    [parallax] 通常而言,滚动视差在前端需要辅助 Javascript 才能实现。当然,其实 CSS 在实现滚动视差效果方面,也有着不俗的能力。...可以感受下 3 种不同取值的不同效果: CodePen Demo -- bg-attachment Demo 使用 background-attachment: fixed 实现滚动视差 首先,我们使用...即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。 这里的关键在于,即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。也就是说,背景图从一开始就已经被固定死在初始所在的位置。...: fixed 实现图片点击水纹效果 利用图片相对视口固定,可以有很多有趣的效果,譬如下面这个: [background-attachment: fixed Wave] CodePen Demo --...,效果如下: [css3dparallax] 很明显,当滚动滚动条时,不同子元素的位移程度从视觉上看是不一样的,也就达到了所谓的滚动视差效果。

    1.9K80
    领券