工作生活css

2019-07-02 overflow 与锚点定位

2019-07-02  本文已影响0人  李华峰0722

overflow 与锚点定位


锚点,通俗点的解释就是可以让页面定位到某个位置的点。

基于URL 地址的锚链实现锚点跳转的方法有两种

  1. 一种是<a>标签以及name 属性
    <a href="#1">发展历程></a>
    <a name="1"></a>
  2. 使用标签的id 属性
    <a href="#1">发展历程></a>
    <h2 id="1">发展历程</h2>

锚点定位行为的触发条件

下面两种情况都可以触发锚点定位行为的发生:
(1)URL 地址中的锚链锚点元素对应并有交互行为;
(2)可focus 的锚点元素处于focus 状态。

  “focus 锚点定位”指的是类似链接或者按钮、输入框等可以被focus 的元素在被focus时发生的页面重定位现象。
  举个很简单的例子,在PC 端,我们使用Tab 快速定位可focus 的元素的时候,如果我们的元素正好在屏幕之外,浏览器就会自动重定位,将这个屏幕之外的元素定位到屏幕之中。
  再举一个例子,一个可读写的<input>输入框在屏幕之外,则执行类似下面的JavaScript 代码的时候:
document.querySelector('input').focus();
这个输入框会自动定位在屏幕之中,这些就是“focus 锚点定位”

  同样,“focus 锚点定位”也不依赖于JavaScript,是浏览器内置的无障碍访问行为,并且所有浏览器都是如此。
  虽然都是锚点定位,但是这两种定位方法的行为表现还是有差异的,
  “URL 地址锚链定位”是让元素定位在浏览器窗体的上边缘;
  而“focus 锚点定位”是让元素在浏览器窗体范围内显示即可,不一定是在上边缘。

锚点定位作用的本质

  锚点定位行为的发生,本质上是通过改变容器滚动高度或者宽度来实现的。(是容器的滚动高度,而不是浏览器的滚动高度

  首先,锚点定位也可以发生在普通的容器元素上,而且定位行为的发生是由内而外的。
URL锚点定位的例子:

.box {
  height: 120px;
  border: 1px solid #bbb;
  overflow: auto;
}
.content {
  height: 200px;
  background-color: #eee;
}

参照《CSS世界》P173,修改了h4标签和div[class="content"]标签的位置,这样才能出现图6-35的效果

<div class="box">
  <h4 id="title">底部标题</h4>
  <div class="content"></div>
</div>
<p><a href="#title">点击测试</a></p>

  由于.content 元素高度超过.box 容器,因此<h4>元素必然不可见,如图6-33 所示。然后,我们点击下面的“点击测试”链接,则滚动条位置变化(实际上改变了scrollTop值),“底部标题”自动出现了,如图6-34 所示。


  “由内而外”指的是,普通元素和窗体同时可滚动的时候,会由内而外触发所有可滚动窗体的锚点定位行为。继续上面的例子,假设我们的浏览器窗体也是可滚动的,则点击“点击测试”链接后,“底部标题”先触发.box 容器的锚点定位,也就是滚动到底部,然后再触发窗体的锚点定位,“底部标题”和浏览器窗口的上边缘对齐,如图6-35 所示(图中最上方一条线就是浏览器窗体上边缘)。

上一篇下一篇

猜你喜欢

热点阅读