【问题标题】:Recreating Medium's Image Fade Scroll Effect重现 Medium 的图像渐变滚动效果
【发布时间】:2014-03-13 07:26:35
【问题描述】:

不幸的是,我不是 jQuery 专家,我正在尝试重新创建媒体上的图像淡入淡出/模糊效果。这是一个例子 -https://medium.com/matter/76d9913c6011

如果您向下滚动页面,您会注意到一些图像,这些图像会随着您的滚动而逐渐淡入/淡出。检查代码后,我注意到创建效果的图像有两个版本,一个是普通版本,另一个是模糊的。

据我所知,事情是这样设置的:

<section class=
"section-bottom-center section-image-full section-using-canvas"
data-scroll="native">
    <div class="section-background" data-height="2130" data-image-id=
    "1*ladXngaMeWEqp1R18uSSQA.jpeg" data-scroll="post-section" data-width=
    "3200">
        <div class="section-background-image" style=
        "background-image: url(https://d262ilb51hltx0.cloudfront.net/max/700/gradv/29/81/40/1*ladXngaMeWEqp1R18uSSQA.jpeg);">
        </div><br>
    </div>

    <div class="section-inner layout-single-column">
        <p>SOME TEXT THAT FADES OVER THE IMAGE</p>
    </div>
</section>

我找到了一些jQuery,可惜我不是很了解它,所以我无法重新创建它。

var qm = function(a, b) {
  var c = '\x3cdiv class\x3d"section-background' + (a.hasFocus ? " media-has-focus" : "") + '"' + ("section-image-full" == a.imageLayout ? ' data-scroll\x3d"post-section"' : "") + 'data-image-id\x3d"' + (0,z.N)(a.backgroundImage.id) + '"', d;
  d = a.backgroundImage;
  d = (d.originalWidth ? ' data-width\x3d"' + (0,z.N)(d.originalWidth) + '"' : "") + (d.originalHeight ? ' data-height\x3d"' + (0,z.N)(d.originalHeight) + '"' : "") + (d.filter ? ' data-filter\x3d"' + (0,z.N)(d.filter) + '"' : "") + (d.backgroundSize ? ' data-image-style\x3d"' + (0,z.N)(d.backgroundSize) + '"' : "");
  c = c + d + "\x3e";
  c = "section-image-full" == a.imageLayout ? c + ('\x3cdiv class\x3d"section-background-image" style\x3d"background-image: url(' + (0,z.N)((0,z.P)(b.miroUrl)) + "/max/" + (0,z.N)("700".replace(ji, ki)) + "/gradv/29/81/40/" + (0,z.N)(String(a.backgroundImage.id).replace(ji, ki)) + ');"\x3e\x3c/div\x3e\x3cbr\x3e') : "section-image-left" == a.imageLayout || "section-image-right" == a.imageLayout ? c + ('\x3cimg src\x3d"' + (0,z.N)((0,z.P)(b.miroUrl)) + "/max/" + (0,z.N)(b.postColumnWidth) + "/multiply/grey/" + 
  (0,z.N)(a.backgroundImage.id) + '"\x3e') : c + "\x3cbr\x3e";
  return c + "\x3c/div\x3e";
};

我确实注意到的一件事是,这两个图像不是简单地淡入/淡出 - 淡入淡出水平以某种方式与滚动绑定,因此当您停止滚动时,图像停止淡入淡出。这是一个非常好的效果。

P.S 我希望尽可能简单地做到这一点,最好不要使用 jQuery 插件。

谢谢

【问题讨论】:

    标签: javascript jquery html image


    【解决方案1】:

    我还试图弄清楚他们在 Medium 上是如何做到这一点的。 您指出的缩小的 javascript sn-p 在我看来并不负责模糊效果。在我看来,他们也通过画布进行处理。 看看这个答案:

    Coderwall blurred background effect with canvas

    希望对您有所帮助。 (不幸的是,这使用了一点 jquery,但你可以跳过那部分;))

    【讨论】:

      【解决方案2】:

      查看 Andreas Storm 在Codepen 上的中等模糊滚动效果。

      HTML:

      <div class='blurImg'>
        <div style="background-image: url('https://d262ilb51hltx0.cloudfront.net/fit/c/1600/1280/gradv/29/81/60/darken/25/1*4ncz3hLxmL8E_bUh-0z62w.jpeg')"></div>
        <div class='blur' style="background-image: url('https://d262ilb51hltx0.cloudfront.net/fit/c/1600/1280/gradv/29/81/40/darken/50/blur/50/1*4ncz3hLxmL8E_bUh-0z62w.jpeg')"></div>
      </div>
      <header>
        <div>
          <h1>
            Medium
          </h1>
          <p>
            Everyone’s stories and ideas
          </p>
          <a href='https://medium.com/' title='Medium'>Learn more</a>
        </div>
        <nav role='navigation'>
          <ul>
            <li>
              <a class='active' href='#'>Reading List</a>
            </li>
            <li>
              <a href='#'>Bookmarks</a>
            </li>
            <li>
              <a href='#'>Top 100</a>
            </li>
          </ul>
        </nav>
      </header>
      <div class='container'>
        <div></div>
      </div>
      

      CSS:

      body
        font-size 14px
        font-family Sans-Serif
      
      *
        box-sizing border-box
      
      a
        text-decoration none
      
      .blurImg
        position relative
        width 100%
        height 440px
        z-index -1
        top 0
        left 0
        & > div
          position fixed
          width 100%
          height 440px
          background-repeat no-repeat
          background-size cover
          background-position center center
      
      .blur
        opacity 0
      
      header
        z-index 1
        position absolute
        top 0
        width 100%
        padding 0px 20px
        & > div
          max-width 600px
          margin 0 auto
          padding-top 150px
          height 380px
          text-align center
          color White
          a
            font-size 0.8em
            letter-spacing 0.08em
            color rgba(255,255,255,0.85)
            line-height 30px
            padding 7px 14px
            border 1px solid rgba(255,255,255,0.3)
            border-radius 2em
            transition all 0.3s ease
            &:hover
              background white
              color Gray
        p
          font-size 1.5em
          margin-bottom 0.7em
          font-family Times New Roman
      
      h1
        font-weight 800
        font-size 3.4em
        margin-bottom 0.2em
      
      nav
        max-width 600px
        margin 0 auto
        height 60px
        border-top 1px rgba(255,255,255,0.35) solid
        ul
          li
            display inline-block
            margin-right 20px
            a
              font-weight 800
              font-size 11px
              text-transform uppercase
              letter-spacing .2em
              color rgba(255,255,255,0.5)
              transition color 0.3s linear
              line-height 60px
              display block
              &.active
                box-shadow 0px -1px 0px white
      
      nav ul li a.active, nav ul li a:hover
        color white
      
      .container
        height 1300px
        background white
        z-index 1
        padding 0px 20px
        div
          max-width 600px
          margin 0 auto
          padding-top 40px
      

      咖啡脚本:

      $(window).scroll ->
        oVal = ($(window).scrollTop() / 240)
        $(".blur").css "opacity", oVal
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-10
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多