滚动时在标题上添加平滑过渡

Posted

技术标签:

【中文标题】滚动时在标题上添加平滑过渡【英文标题】:Add smooth transition on header when I scroll 【发布时间】:2020-03-29 10:42:48 【问题描述】:

当我向下滚动时,我正在尝试在标题上添加效果。基本上我想在滚动时更改标题的颜色。我做了一个小的 javascript 代码来做这个改变,但我也想在这个改变上添加一个平滑的过渡。谁能帮我?谢谢

这是我的代码和 codepen 的链接: https://codepen.io/paulo-frutuoso/pen/wvvREZg

<header>
  <nav>
  <ul>
  <li><a href="#">Menu</a></li>
  <li><a href="#">Menu</a></li>
  <li><a href="#">Menu</a></li>
  <li><a href="#">Menu</a></li>
  </ul>
</nav>
</header>

我的无耻

:root 
  --menuCor: #013220;
  --menuTransparente: rgba(1, 50, 32, 0.2);


* 
  margin: 0;
  padding: 0;


body 
  height: 200vh;
  background: url('https://lisboa.smartmove.pt:8083/Fluminense/DemoPortalTorcedor/images/banner_01.jpg') no-repeat center center; 
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;


header 
      background: var(--menuTransparente);
    position: fixed;
      width: 100%;
    height: 60px;
      z-index:2;

    nav 
      ul 
        display: flex;
        justify-content: space-around;
        align-items: center;
        list-style-type: none;
        height: 60px;

        li 
          a 
            text-decoration: none;
            color: #fff;
            font-family: 'Open sans';
            font-size: .8rem;
            
         
      
    
  

我的 JS

const htmlTag = document.querySelector('html');
const bodyTag = document.querySelector('body');
const myNav = document.querySelector('header');
const myElem = document.querySelector('header nav li a');

let scrolled = () => 
  let dec = scrollY / (bodyTag.scrollHeight - innerHeight);
  return Math.floor(dec *100);


addEventListener('scroll', () => 
  myNav.style.setProperty('background', scrolled() > 20 ? "var(--menuCor)" : "var(--menuTransparente)");
);

【问题讨论】:

【参考方案1】:

添加到标题类: 过渡:所有 .2s 缓入;

header 
  background: var(--menuTransparente);
  position: fixed;
  width: 100%;
  height: 60px;
  z-index:2;
  transition: all .2s ease-in;

您可以将all改为background,以与您的风格完美匹配。

【讨论】:

当然。还有什么?我觉得自己很傻。非常感谢;) 不客气,只要点击我的答案是正确的:D

以上是关于滚动时在标题上添加平滑过渡的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11 大标题导航栏捕捉而不是平滑过渡

为啥 ViewPager 向左滚动时颜色过渡动画错误?

平滑滚动条 - 啥执行滚动事件?

在向上和向下滚动时,使.removeClass()和.addClass()平滑过渡

需要帮助获得平滑的文本内容 CSS 过渡

如何为 Angular.js 显示/隐藏添加平滑过渡?