Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >谷歌Chrome视口-锚定扩展方向与柔性盒

谷歌Chrome视口-锚定扩展方向与柔性盒
EN

Stack Overflow用户
提问于 2017-06-29 05:26:13
回答 1查看 1.5K关注 0票数 19

Google中有一个问题,当元素放置在一个包含space-betweencenter正确内容的柔性盒容器中时,元素会向不同的方向展开/折叠。

在火狐、IE11、边缘或Safari中,这不是问题,因为元素总是向下扩展。

我很好奇:

  • Chrome的行为是否符合一些规范?如果是,是哪一个?
  • 如果没有,那么为什么在Chrome中这样做呢?(IMHO,点击触发器随机消失是可怕的UX。)
  • Chrome的行为可以在某种程度上被修改或禁用吗?例如:通过CSS还是元标签?

更新1:如果可能的话,我已经将 铬虫追踪器#739860 提交给Chromium寻求洞察/解释。

以下是插入的两个例子。描述这个问题的完整测试套件可以在本笔中找到:https://codepen.io/jameswilson/full/xrpRPg/,我选择在本例中使用slideToggle,以便展开/折叠运动是动画的,并且对眼睛是可见的。同样的行为也发生在details标签上,但是跨浏览器支持还不存在,展开/折叠太简陋了。

Ex 1: Chrome的膨胀/折叠行为--在对齐的柔性盒之间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('button').click(function() {
  $(this).next().slideToggle();
})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
body {
  margin: 30px;
  font-family: sans-serif;
}
aside,
aside div,
summary,
main,
button,
details p,
button + p {
  background: rgba(0,0,0,.09);
  border: none;
  padding: 20px;
  margin: 0;
}

.flexcontainer {
  display: flex;
}
aside {
  flex: 1;
  position: relative;
  max-width: 25%;
  background: mintcream;

  display: flex;
  flex-direction: column;
  position: relative;
}
aside.space-between {
  justify-content: space-between;
}
aside.center {
  justify-content: center;
}

main {
  flex: 3;
  position: relative;
  max-width: 75%;
  background: aliceblue;
  vertical-align: top;
  height: 100%;
}
main > * + * {
  margin-top: 20px;
}

button + p {
  display: none;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<section class="flexcontainer">
  <aside class="space-between">
    <div>Top Sidebar</div>
    <div>Bottom Sidebar</div>
  </aside>
  <main>
    <div>
      <button>slideToggle</button>
      <p>Other browsers: always expands downward.<br>
        Chrome: Should always expand downward because Top Sidebar is always visible.</p>
    </div>

    <div>
      <button>slideToggle (usually expands down)</button>
      <p>Other browsers: always expands downward.<br>
        Chrome: Should expand downward while Bottom Sidebar and Top Sidebar are both visible. But will expand upward if you scroll down far enough so that Top Sidebar is off-screen.</p>
    </div>
    
    <div>
      <button>slideToggle (usually expands down)</button>
      <p>Other browsers: always expands downward.<br>
        Chrome: Should expand downward while Bottom Sidebar and Top Sidebar are both visible. But will expand upward if you scroll down far enough so that Top Sidebar is off-screen.</p>
    </div>
  </main>
</section>

Ex 2:中心正确的柔性盒的膨胀/崩溃行为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('button').click(function() {
  $(this).next().slideToggle();
})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
body {
  margin: 30px;
  font-family: sans-serif;
}
aside,
aside div,
summary,
main,
button,
details p,
button + p {
  background: rgba(0,0,0,.09);
  border: none;
  padding: 20px;
  margin: 0;
}

.flexcontainer {
  display: flex;
}
aside {
  flex: 1;
  position: relative;
  max-width: 25%;
  background: mintcream;

  display: flex;
  flex-direction: column;
  position: relative;
}
aside.space-between {
  justify-content: space-between;
}
aside.center {
  justify-content: center;
}

main {
  flex: 3;
  position: relative;
  max-width: 75%;
  background: aliceblue;
  vertical-align: top;
  height: 100%;
}
main > * + * {
  margin-top: 20px;
}

button + p {
  display: none;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="flexcontainer">
  <aside class="center">
    <div>Center Sidebar</div>
  </aside>
  <main>

    <div>
      <button>slideToggle (usually expands downwards)</button>
      <p>Other browsers: always expands downward.<br>
        Chrome: Usually expands downwards. Expands in both directions when the top-edge of the container scrolls out of the viewport.</p>
    </div>

    <div>
      <button>slideToggle</button>
      <p>Other browsers: always expands downward.<br>
        Chrome: Usually expands downwards. Expands in both directions when the top-edge of the container scrolls out of the viewport.</p>
    </div>

    <div>
      <button>slideToggle (usually expands downwards)</button>
      <p>Other browsers: always expands downward.<br>
        Chrome: Usually expands downwards. Expands in both directions when the top-edge of the container scrolls out of the viewport, but then resumes expanding downwards again when Center Sidebar scrolls out of view.</p>
    </div>
  </main>
</section>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-04 07:04:57

将此代码添加到flex容器中:

  • overflow-anchor: none

这将禁用Chrome中名为“滚动锚定”的功能,这将导致盒的向上扩展(订正码)。

在Chrome中,扩展框的向上/向下方向取决于视图中的滚动位置,而不是布局本身。

为了改善用户体验,Chrome对这种行为采取了一种独特的方法。

基本上,它们将DOM元素绑定到当前滚动位置。屏幕上这个特定(“锚”)元素的移动将决定对滚动位置的调整(如果有的话)。

他们称这种方法为“滚动锚定”。这个算法在这个页面上解释:https://github.com/WICG/ScrollAnchoring/blob/master/explainer.md

这个行为目前对Chrome是唯一的,但是谷歌正在推动标准化。

根据Scroll锚定文档,将overflow-anchor: none应用于适当的元素将禁用滚动锚定调整。

更多信息:

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44826446

复制
相关文章
创建布局与视口
        AcDbObjectId originVportId = acedGetCurViewportObjectId();
用户3519280
2023/07/06
1570
【移动端网页布局】移动端网页布局基础概念 ② ( 视口 | 布局视口 | 视觉视口 | 理想视口 )
布局视口 - Layout ViewPort 指的是 在 浏览器 中,用于 显示文档的区域大小和位置。它是指 网页中可见部分的大小,即浏览器窗口中显示的内容大小。
韩曙亮
2023/04/24
1.4K0
【移动端网页布局】移动端网页布局基础概念 ② ( 视口 | 布局视口 | 视觉视口 | 理想视口 )
前端开发-视口
那么在移动端为什么是 980 而不是其他的值呢,因为过去网页的版心都是 980,乔老爷子为了能够让网页在移动端完美的展示, 所以将 iOS 手机视口的大小定义为了 980,后来谷歌也觉得这是一个非常牛 X 的方案, 所以 Android 手机的视口也定义为了 980。
程序员 NEO
2023/09/28
1740
前端开发-视口
上不了谷歌如何安装 Chrome 扩展?
关于镜像网站之前写过那些你用得上的镜像网站,在https://chrome-extension-downloader.com/ 或者https://crxdl.com/ 这类网站下载Chrome扩展对应的crx文件,比如输入https://chrome.google.com/webstore/detail/evernote-web-clipper/pioclpoplcdbaefihamjohnefbikjilc 的插件id pioclpoplcdbaefihamjohnefbikjilc就能下载crx文件。
苏生不惑
2020/04/02
1.5K0
上不了谷歌如何安装 Chrome 扩展?
前端成神之路-移动web开发_流式布局
PC端常见浏览器:360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。
海仔
2020/12/01
1.6K0
前端成神之路-移动web开发_流式布局
移动web开发_流式布局
PC端常见浏览器:360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。
用户10169043
2022/11/16
1.3K0
移动web开发_流式布局
谷歌改进Chrome扩展程序菜单,更加方便直观。
当前正式版本的谷歌Chrome浏览器的扩展程序被放在三级菜单,使用起来非常不方便。
德顺
2019/11/13
2.1K0
谷歌改进Chrome扩展程序菜单,更加方便直观。
获取浏览器视口大小
1 window.onload = function() { 2 alert("width: " + getPageScale().pageWidth + ", height: " + getPageScale().pageHeight); 3 }; 4 5 /** 6 * 获取浏览器视口大小 7 * @return {object} 宽,高 8 */ 9 function getPageScale(){ 10 var pageWidth = window.inne
就只是小茗
2018/12/12
1.2K0
(译)SDL编程入门(9)视口
有些时候,你只想渲染屏幕的一部分,比如最小地图。使用视口你可以控制你在屏幕上的渲染位置。
arcticfox
2020/09/27
7930
(译)SDL编程入门(9)视口
IntersectionObserver 是否进入了"视口"(viewport)
是否进入视口的使用场景还是很多的,一般第一时间想到的就是监听滚动,关键是scroll很密集,计算量很大,如果做个防抖节流性能还能优化一些,否则性能问题就很有可能发生。
wade
2022/06/20
9370
IntersectionObserver 是否进入了"视口"(viewport)
第118天:移动端开发——视口
上述代码相信大家在做移动端开发时经常去书写。它研究了两个内容:meta视口和宽度媒体查询。通常我们都会称上述代码为CSS3的媒体查询功能。使用媒体查询功能能够解决针对桌面级的web设计在移动端不同尺寸下的兼容展现。
半指温柔乐
2018/09/11
9560
第118天:移动端开发——视口
浅谈移动端中的视口(viewport)
在 PC 端,视口指的是浏览器的可视区域,其宽度和浏览器窗口的宽度保持一致。在 CSS 标准文档中,视口也被称为初始包含块,它是所有 CSS 百分比宽度推算的根源,给 CSS 布局限制了一个最大宽度。
前端逗逗飞
2021/04/30
2.3K0
浅谈移动端中的视口(viewport)
【Flutter&amp;Flame 游戏 - 贰玖】pinball 源码分析 - 视口与相机
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 30 天,点击查看活动详情
张风捷特烈
2022/09/09
1K0
【Flutter&amp;Flame 游戏 - 贰玖】pinball 源码分析 -  视口与相机
解除谷歌浏览器Chrome无法安装扩展插件的限制
今天将谷歌浏览器升级到了最新版本,在安装扩展脚本的时候,却发现Chrome 21+系列增加了对扩展插件安装的限制, 用户只能安装谷歌浏览器(Chrome Store)内的扩展插件,很是郁闷。经过查找相关资料,现整理解决方法如下:
Enjoy233
2019/03/05
2.5K0
师于源码 | Flutter 区域视口双向滑动
在桌面端中,有时候需要在宽度区域过窄时,同时支持水平和竖直双向滑动。比如 AndroidStudio 的文件树和编辑器区域,当宽度较窄时,水平方向通过拖拽底部滚动条来滚动视口。
张风捷特烈
2023/08/10
5320
师于源码 |  Flutter 区域视口双向滑动
Computer Graphics note(3):视口变换&光栅化
Games101 Lecture5-6-7 在M(模型)V(视图)P(投影)变换之后,得到[−1,1]3[-1,1]^3[−1,1]3,接下来就是将其映射到屏幕空间上去。 M变换:https://blog.csdn.net/Enterprise_/article/details/106880754 VP变换:https://blog.csdn.net/Enterprise_/article/details/106934622
Enterprise_
2020/08/02
1.1K0
理想的viewport(视口)并不存在
在你依据少数几个严格的断点(breakpoints)来做设计决策之前,确保你已经考虑了屏幕尺寸和浏览器视口的巨大碎片化问题。
前端小智@大迁世界
2023/09/19
2190
理想的viewport(视口)并不存在
将Chrome(谷歌浏览器)扩展程序打包为crx文件
在浏览器地址栏输入chrome://extensions/,点右上角的开发人员模式
晓歌
2018/09/26
2.5K0
Chrome扩展开发
注:content_scripts段中的代码会在页面加载对应阶段"document_start", “document_end”, or "document_idle"自动注入 但是脚本运行在与页面独立的上下文中,无法访问到原页面的脚本上下文资源 如需访问原页面脚本上下文,可在content_scripts脚本中将web_accessible_resources段中声明的脚本注入到document中 样例: js/content-script.js
路过君
2020/06/19
8950
认识Chrome扩展插件
1、前言 现如今的时代,绝大多数人都要跟浏览器打交道的,说到浏览器那肯定是Chrome浏览器一家独大,具体数据请看👇 知名流量监测机构 Statcounter 公布了 7 月份全球桌面浏览器市场份额,主要数据如下: 浏览器 市场份额 月涨跌份额 Chrome 66.19% -0.74% Edge 10.84% +0.2% Safari 8.94% +0.01% Firefox 8.08% +0.28% Opera 3.06% +0.08% IE 0.75% 浏览器扩展插件的用途 生产力工具(和浏览器进
甜点cc
2022/09/26
1.2K0

相似问题

使用柔性盒将内容扩展到整个视口。

11

为什么填充我的视口高度使柔性盒工作?

10

WooThemes -柔性滑块:柔性视口的高度

30

使用柔性盒(Chrome中的不一致性)‽进行视口高度继承

13

Chrome显示问题与柔性盒和溢出

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文