位置: IT常识 - 正文

CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容

编辑:rootadmin
CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容

推荐整理分享CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

overflow-anchorCSS中的属性相对较新,2017 年首次推出 Chrome ¹,2019 年推出 Firefox,现在 Edge在 2020 年推出 Chrome 过渡。幸运的是,它的使用在很大程度上是一种增强。这个想法是浏览器在默认情况下确实尝试不允许位置移动。然后,如果您不喜欢它的处理方式,您可以使用 将其关闭。所以一般来说,你从不碰它。overflow-anchor 但正如你可能怀疑的那样,我们可以利用这个小美来做一点 CSS 小把戏。即使我们添加新内容,我们也可以强制滚动元素保持固定在底部。

您需要检测何时使用 JavaScript 添加新内容并将滚动元素强制到底部。这是一种MutationObserver在 JavaScript 中使用的技术来监视新内容并强制滚动:

const scrollingElement = document.getElementById("scroller");const config = { childList: true };const callback = function (mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === "childList") { window.scrollTo(0, document.body.scrollHeight); } }};const observer = new MutationObserver(callback);observer.observe(scrollingElement, config);

但我发现一个纯 CSS 的解决方案更有吸引力!上面的版本有一些我们稍后会介绍的用户体验缺陷。

这里的诀窍是浏览器默认已经做了滚动锚定。但是浏览器试图做的不是改变你的页面。因此,当添加可能会改变页面视觉位置的新内容时,他们会尝试防止这种情况发生。在这种不寻常的情况下,我们有点想要相反的东西。我们希望页面卡在页面底部并让视觉页面在视觉上移动,因为它被迫保持卡在底部。

CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容

下面是这个技巧的工作原理。首先是滚动父元素中的一些 HTML:

<div id="scroller"> <!-- new content dynamically inserted here --> <div id="anchor"></div></div>

所有元素自然都有一个overflow-anchor: auto;,这意味着当它们在屏幕上时,它们会试图阻止页面移动,但我们可以使用overflow-anchor: none;. 所以诀窍是针对所有动态插入的内容并将其关闭:

#scroller * { overflow-anchor: none;}

然后仅强制该锚元素具有滚动锚定,仅此而已:

#anchor { overflow-anchor: auto; height: 1px;}

现在,一旦该锚在页面上可见,浏览器将被迫将该滚动位置固定到它,并且由于它是该滚动元素中的最后一件事,因此保持固定在底部。

<div id="scroller"> <!-- new content dynamically inserted here --> <div id="anchor"></div></div><style>#scroller * { overflow-anchor: none;}#anchor { overflow-anchor: auto; height: 1px;}html { font-family: system-ui, sans-serif;}body { background-color: #7FDBFF; /* In case you need to kick off effect immediately, this plus JS */ /* height: 100.001vh; */}.message { padding: 0.5em; border-radius: 1em; margin: 0.5em; line-height: 1.1em; background-color: white;}</style><script>let scroller = document.querySelector('#scroller');let anchor = document.querySelector('#anchor');// https://ajaydsouza.com/42-phrases-a-lexophile-would-love/let messages = [ 'I wondered why the baseball was getting bigger. Then it hit me.', 'Police were called to a day care, where a three-year-old was resisting a rest.', 'Did you hear about the guy whose whole left side was cut off? He’s all right now.', 'The roundest knight at King Arthur’s round table was Sir Cumference.', 'To write with a broken pencil is pointless.', 'When fish are in schools they sometimes take debate.', 'The short fortune teller who escaped from prison was a small medium at large.', 'A thief who stole a calendar… got twelve months.', 'A thief fell and broke his leg in wet cement. He became a hardened criminal.', 'Thieves who steal corn from a garden could be charged with stalking.', 'When the smog lifts in Los Angeles , U. C. L. A.', 'The math professor went crazy with the blackboard. He did a number on it.', 'The professor discovered that his theory of earthquakes was on shaky ground.', 'The dead batteries were given out free of charge.', 'If you take a laptop computer for a run you could jog your memory.', 'A dentist and a manicurist fought tooth and nail.', 'A bicycle can’t stand alone; it is two tired.', 'A will is a dead giveaway.', 'Time flies like an arrow; fruit flies like a banana.', 'A backward poet writes inverse.', 'In a democracy it’s your vote that counts; in feudalism, it’s your Count that votes.', 'A chicken crossing the road: poultry in motion.', 'If you don’t pay your exorcist you can get repossessed.', 'With her marriage she got a new name and a dress.', 'Show me a piano falling down a mine shaft and I’ll show you A-flat miner.', 'When a clock is hungry it goes back four seconds.', 'The guy who fell onto an upholstery machine was fully recovered.', 'A grenade fell onto a kitchen floor in France and resulted in Linoleum Blownapart.', 'You are stuck with your debt if you can’t budge it.', 'Local Area Network in Australia : The LAN down under.', 'He broke into song because he couldn’t find the key.', 'A calendar’s days are numbered.',];function randomMessage() { return messages[(Math.random() * messages.length) | 0];}function appendChild() { let msg = document.createElement('div'); msg.className = 'message'; msg.innerText = randomMessage(); scroller.insertBefore(msg, anchor);}setInterval(appendChild, 1000);// To kick off effect immediately, this plus CSS// document.scrollingElement.scroll(0, 1);</script>

这里有两个小警告......

请注意,锚必须有一定的大小。我们在height这里使用以确保它不是没有大小的折叠/空元素,这会阻止它工作。为了使滚动锚定起作用,页面必须至少滚动一次才能开始。

第二个更难。一种选择是根本不处理它,您可以等待用户滚动到底部,效果从那里开始起作用。实际上这很好,因为如果他们从底部滚动,效果就会停止工作,这就是你想要的。在上面的 JavaScript 版本中,请注意即使您尝试向上滚动,它也会迫使您进入底部,这就是 Ryan 的意思,这并不是一件容易正确的事情。

如果您需要立即启动效果,诀窍是让滚动元素立即可滚动,例如:

body { height: 100.001vh;}

然后立即触发一个非常轻微的滚动:

document.scrollingElement.scroll(0, 1);

这应该可以解决问题。这些行可在上面的演示中取消注释并尝试。

本文链接地址:https://www.jiuchutong.com/zhishi/293130.html 转载请保留说明!

上一篇:GPT模型总结【模型结构及计算过程_详细说明】(gpt详解)

下一篇:swiper获取当前数组滑动的inex(vue)(swiper.js常用功能)

  • 微博的关注达到上限了怎么办?(微博的关注达到多少人)

    微博的关注达到上限了怎么办?(微博的关注达到多少人)

  • 如何另辟蹊径,进行众筹营销(如何另辟蹊径卖保险)

    如何另辟蹊径,进行众筹营销(如何另辟蹊径卖保险)

  • 微信群主退出群聊群还在吗(微信群主退出群聊后会解散群吗)

    微信群主退出群聊群还在吗(微信群主退出群聊后会解散群吗)

  • 苹果换新设备无法充值(苹果换新机后)

    苹果换新设备无法充值(苹果换新机后)

  • apple music怎么用不了(apple music怎么用微信支付)

    apple music怎么用不了(apple music怎么用微信支付)

  • 拼多多助力上限(拼多多助力限制要多久才可以用)

    拼多多助力上限(拼多多助力限制要多久才可以用)

  • 为什么手机打字都是繁体字(为什么手机打字变成小界面)

    为什么手机打字都是繁体字(为什么手机打字变成小界面)

  • 拼多多自己买的东西别人能看到吗(拼多多自己买的东西不让别人看)

    拼多多自己买的东西别人能看到吗(拼多多自己买的东西不让别人看)

  • fla-al20是华为什么型号(fla al20是华为什么型号的手机)

    fla-al20是华为什么型号(fla al20是华为什么型号的手机)

  • 华硕a53s升级方案(华硕a53s升级8g内存)

    华硕a53s升级方案(华硕a53s升级8g内存)

  • 京东自营与京东超市的区别(京东自营与京东自营官方旗舰店的区别)

    京东自营与京东超市的区别(京东自营与京东自营官方旗舰店的区别)

  • 华为nova7se支持nfc吗(华为nova7se支持双频gps吗)

    华为nova7se支持nfc吗(华为nova7se支持双频gps吗)

  • 微信模式如何恢复白天(微信怎么恢复默认设置?)

    微信模式如何恢复白天(微信怎么恢复默认设置?)

  • 苹果手机怎么删除云备份里面的内容(苹果手机怎么删除app和卸载app的区别)

    苹果手机怎么删除云备份里面的内容(苹果手机怎么删除app和卸载app的区别)

  • 电脑搜狗输入法打字看不到打字框(电脑搜狗输入法打不出汉字)

    电脑搜狗输入法打字看不到打字框(电脑搜狗输入法打不出汉字)

  • macbook显示电池没有在充电怎么办(macbook显示电池维修)

    macbook显示电池没有在充电怎么办(macbook显示电池维修)

  • 苹果7基带时好时坏怎么办(苹果7基带时好时坏怎么回事)

    苹果7基带时好时坏怎么办(苹果7基带时好时坏怎么回事)

  • 抖音发消息有撤回时间吗(抖音发消息撤回对方有提示吗)

    抖音发消息有撤回时间吗(抖音发消息撤回对方有提示吗)

  • oppor11t一键改全网通(oppor11怎么切换到全屏模式)

    oppor11t一键改全网通(oppor11怎么切换到全屏模式)

  • 安卓系统是基于什么系统开发的(安卓系统基于什么系统)

    安卓系统是基于什么系统开发的(安卓系统基于什么系统)

  • 怎样退掉京东已激活的电脑(怎样退掉京东已激活的电脑 还原系统)

    怎样退掉京东已激活的电脑(怎样退掉京东已激活的电脑 还原系统)

  • 手机代码是什么(手机的代码大全)

    手机代码是什么(手机的代码大全)

  • 手机京东怎么支付(手机京东怎么支付宝付款)

    手机京东怎么支付(手机京东怎么支付宝付款)

  • 华为mate30关闭程序(mate30关闭程序)

    华为mate30关闭程序(mate30关闭程序)

  • 机顶盒能直接连电脑吗(机顶盒能直接连光猫吗)

    机顶盒能直接连电脑吗(机顶盒能直接连光猫吗)

  • 抖音收藏的商品怎么删除(抖音收藏的商品怎么批量删除)

    抖音收藏的商品怎么删除(抖音收藏的商品怎么批量删除)

  • 起亚k2蓝牙是哪个按键(起亚k2蓝牙是哪个按键没有屏幕)

    起亚k2蓝牙是哪个按键(起亚k2蓝牙是哪个按键没有屏幕)

  • 爱奇艺月卡怎么取消(爱奇艺月卡怎么卖)

    爱奇艺月卡怎么取消(爱奇艺月卡怎么卖)

  • 小米手环3nfc微信提醒(小米手环3有nfc)

    小米手环3nfc微信提醒(小米手环3有nfc)

  • 最小的机械硬盘是什么(体积最小的机械硬盘)

    最小的机械硬盘是什么(体积最小的机械硬盘)

  • 海关完税价格是什么
  • 增值税纳税申报表在哪里查询
  • 加工承揽属于劳务关系吗
  • 属于原始凭证的有哪些
  • 冲销暂估原材料
  • 单利率和复利率excel计算公式
  • 发票抬头公司名称有空格
  • 收到代发工资的信息
  • 所有者权益变动表是什么报表
  • 房地产开发企业土地增值税清算
  • 房地产企业取得净地的税收筹划
  • 企业安全生产费用提取标准 最新
  • 对公账户的理财收入计入什么科目
  • 无形资产土地需要折旧吗
  • 退货的产品会重新包装吗
  • 固定资产赔偿制度
  • 外墙装饰公司的资质规定
  • 营业额500万以上税率
  • 暂估成本一直拿不到发票
  • 购物预付卡怎么用
  • 一般纳税人开普票税率是3%还是13%
  • 个人独资企业查账征收个人所得税汇算清缴
  • 如何开展分公司
  • 车间的制造费用包括哪些
  • 折旧计算方法举例
  • 公司注册资金抽逃
  • 去掉右键菜单中的快捷键
  • 民办学校的财务制度
  • gnu/linux
  • 增值税价外费用如何开票
  • 建筑企业被靠挂靠怎么办
  • csinsm32.exe是安全的进程吗 csinsm32进程有哪些用处
  • bios 和 uefi
  • launcher是啥
  • 减免税款账务处理
  • 在草地上吃零食叫什么
  • 注册公司时认缴和实缴时间怎么填
  • 营业外支出会计准则
  • 机关事业单位购买茶叶违反什么规定
  • 收到政府扶持资金
  • pico实例
  • 商贸公司对加工的影响
  • python字典怎么添加值
  • 发票内容类型怎么填
  • 广告合同印花税税目怎么填
  • 规模以上企业纳税要求
  • sql服务如何自动启动
  • mysql乱码问题怎么解决
  • 广告公司可以不开发票吗
  • 国有资产无偿划转需要缴税吗
  • 赠送商品入什么科目
  • 研发支出资本化计入什么科目
  • 库存盘亏进项税怎么抵扣
  • 如何计提营业税
  • 查账征收个体户经营所得税怎么计算
  • 应收账款收不回来的情况说明
  • 购买不动产增值税率
  • 建筑工程劳务分包合同范本2019
  • 物业公司付电业费合法吗
  • 全额工资和实发工资
  • 业务招待算什么费用
  • mysql数据库遇到的故障及分析
  • mysql索引的使用和原理
  • 修改window
  • 在windows中下列叙述正确的有
  • centos6.0安装教程
  • ubuntu怎么解压缩文件
  • windows8.1怎么升级
  • window98到windows10
  • opengl怎么学
  • jquery tagname
  • json解析 java
  • cmd读取d盘
  • js对象常用方法
  • viewstock
  • jquery自定义组件
  • unity-x
  • 土地交易的印花税
  • 工资薪金的税收金额是填实际发生还是帐载金额
  • 国家实行什么制度鼓励电力用户合理调整用电负荷
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设