首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据可见范围更改为%%

如何将数据可见范围更改为%%
EN

Stack Overflow用户
提问于 2018-02-21 22:02:11
回答 1查看 350关注 0票数 0

我使用这个作为我的标题,在一个页面中变化,向上和向下滚动页。我注意到它没有响应性,所以我想问你,你是否知道如何做出反应。就像将0-690变成一个百分比,这样它就可以在移动和电视屏幕上工作。

HTML

代码语言:javascript
复制
 <div class="header header-1" data-visible-range="0-690">Portfolio</div>
 <div class="header header-2" data-visible-range="691-2100">Services</div>
 <div class="header header-3" data-visible-range="2101-">Contact</div>

CSS

代码语言:javascript
复制
.header-1 {
    background-color:dimgray;
    display: block;

}

.header-2 {
    background-color:dimgray;
}

.header-3 {
    background-color:dimgray;
}

.header {
    position: fixed;
    top: 0;
    left: 0;
    height:8vmax;
    width: 100%;
    display: none;
    visibility:hidden;
    transition: visibility .4s, opacity .4s ease-in-out;opacity:0;
    font-size:4vmax;padding:1.58vmax;color:white;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-22 00:03:13

如果您只是检查某个元素是否击中了页面的顶部,然后更改了标题,而不是以像素为基础,那么怎么办?

我们将这些元素称为“触发器”。有关它们如何工作的示例,请参阅下面的代码。

代码语言:javascript
复制
let updateHeader = () => {
  let scrollTop = $(window).scrollTop(),
    triggerTitle = "Hi";
  $('.trigger').each((i, el) => {
    let topPos = $(el).offset().top,
      distance = topPos - scrollTop;
    if (distance < 0)
      triggerTitle = $(el).data('title');
  });
  $('header h2').text(triggerTitle);
}

$(window).scroll(updateHeader);
$(window).on('touchmove', updateHeader);
代码语言:javascript
复制
body {
  margin: 0;
}

#container {
  height: 1000px;
}

header {
  width: 100%;
  position: fixed;
  top: 0;
  background-color: red;
}

p {
  margin: 200px 10px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <header><h2>Hi</h2></header>
  <p class="trigger" data-title="section1">
    trigger1
  </p>
  <p class="trigger" data-title="section2">
    trigger2
  </p>
  <p class="trigger" data-title="section3">
    trigger3
  </p>
</div>

当您向下滚动页面时,每个触发器都会击中页面的顶部,标题中的文本将更改为最新触发器的data-title的值。您可以将这些触发器适当地放置在每个网站的区段之上,这样,无论屏幕大小如何,标题都应该在正确的时间更新。这是一个代码库

编辑

尝试这个JS来实现最大的兼容性(不涉及es6 )。

代码语言:javascript
复制
function updateHeader() {
  var scrollTop = $(window).scrollTop(),
    triggerTitle = "Hi";
  $('.trigger').each(function(i, el) {
    var topPos = $(el).offset().top,
      distance = topPos - scrollTop;
    if (distance < 0)
      triggerTitle = $(el).data('title');
  });
  $('header h2').text(triggerTitle);
}

$(window).scroll(updateHeader);
$(window).on('touchmove', updateHeader);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48916240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档