锚点---笔记

95 阅读1分钟

1.a标签

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <style type="text/css">
    .anchor {
      position: fixed;
      left: 50px;
    }
    .content > div {
      margin-left: 200px;
      height: 500px;
      width: 300px;
      border: 1px solid #000;
    }
  </style>
</head>
<body>
  <div class="anchor">
    <a href="#div1">div1</a>
    <a href="#div2">div2</a>
    <a href="#div3">div3</a>
  </div>
  <div class="content">
    <div id="div1">div1</div>
    <div id="div2">div2</div>
    <div id="div3">div3</div>
  </div>
</body>
</html>

缺点:点击锚点之后,浏览器的URL会发生变化,如果刷新可能会出现问题

2.window.location.hash

$('.anchor .div3').on('click', function(event) {
  window.location.hash = 'div3';
})

缺点:点击锚点之后,浏览器的URL会发生变化,如果刷新可能会出现问题

3.animate

$('.anchor .div3').on('click', function(event) {
    $('html, body').animate({
    scrollTop: $('#div3').offset().top
  })
})

缺点:页面复杂时,偏移值可能会发生变化需要算法辅助

4.scrollIntoView()

element.scrollIntoView(scrollIntoViewOptions)

document.querySelector('#divide-setting').scrollIntoView({ 
  behavior: 'smooth', // 动画过渡效果, 'auto'(default)/'smooth'
  block: 'start', // 垂直方向的对齐,'start'(default)/'center'/'end'/'nearest'
  inline: 'start' // 水平方向的对齐, 'start'/'center'/'end'/'nearest'(default)
});

element.scrollIntoView(alignToTop)

/**
* true 对应scrollIntoViewOptions: {block: 'start', inline: 'nearest'}
* false 对应scrollIntoViewOptions: {block: 'end', inline: 'nearest'}
*/
document.querySelector('#divide-setting').scrollIntoView(false);