【问题标题】:Scrolling website where background remains stationary and content transitions on click or scroll滚动网站,其中背景保持静止,点击或滚动时内容转换
【发布时间】:2018-05-30 02:29:07
【问题描述】:

我正在寻找一个模板或一个地方,可以教如何创建这样的网站,例如:

http://www.refletcommunication.com/en https://www.artistsweb.com/work

页面基本保持不变,但您可以滚动浏览并更改内容。或者点击链接,内容就会发生变化。但背景保持中立。

我希望这是一个有效的问题。我为自己设计了一个投资组合网站,它会产生这种效果,只是不确定它叫什么,所以我可以学习如何编码。它将在主页上有内容,右侧有链接。如果您滚动或单击链接,则内容将转换为新内容。而背景保持静止。

希望这是有道理的!谢谢

【问题讨论】:

  • 请提供您尝试过的 MCV 示例。欲了解更多信息,请参阅stackoverflow.com/help/mcve
  • 这不是一个真正有效的问题,但我也有类似的兴趣,到目前为止,我找到了 DevTips 频道的视差教程:youtube.com/… 一些有用的库:greensock 和 scrollmagic (Youtube ihatetomatoes),还有一点根据 youtube.com/watch?v=O39OEPC20GM

标签: jquery html css css-transitions transitions


【解决方案1】:

如果我正确理解了您的问题,那么我使用的一种方法是将带有 position: absolute 的 div 堆叠在一起,然后只需切换 active 类,该类将指示当前是哪个元素可见,并且此类将具有 z-index: 100 或 1000 或您想要的任何数字,但它必须高于堆叠元素的数量。在 HTML 中,您将类 active 添加到加载页面后可见的元素。然后使用 JS 你将更改具有 active 类的元素。在 JS 中我使用:

jQuery:https://jquery.com/download/
jQuery 鼠标滚轮插件:https://github.com/jquery/jquery-mousewheel

HTML:

<div class="container">
    <div class="vertically-stacked active"> //first visible bannner
        <h1>Hello</h1>
    </div>
    <div class="vertically-stacked">  //visible only if class active is added
        <h1>World</h1>
    </div>
</div>

您可能有无限数量的垂直堆叠元素。

CSS:

.container    //container of vertically stacked elements
{
    position: relative    //or absolute but not static 
}

.vertically-stacked
{
    left: 0;
    opacity: 0;
    position: absolute;
    top: 0;
    transition: all .25s;   //time which takes to switch the active element
    -moz-transition: all .25s;
    -o-transition: all .25s;
    -webkit-transition: all .25s;
}

.vertically-stacked.active
{
    opacity: 1;
    z-index: 100;
}

JS:

$(document).on('mousewheel', function (e)
{
    var $verticallyStacked = $('.vertically-stacked'),
        oldActive = $verticallyStacked.index($('.vertically-stacked.active')),
        newActive;

    $verticallyStacked.eq(oldActive).removeClass('active');
    if (e.deltaY < 0) //scroll down
    {       
        newActive = oldActive + 1;
    }
    else //scroll up
    {
        newActive = oldActive - 1;
    }
    $verticallyStacked.eq(newActive).addClass('active');
});   

【讨论】:

  • 如何设置每个 div?与此类似?很久以前,我只使用过一次主动课程。 jsfiddle.net/ebmanfcL
  • 也许我不清楚,所以我将答案编辑为 100% 清楚。在描述中,我将 class active 更改为 class .active,在 JS 中,我将 class 更改为垂直堆叠并更正了行中的分号:var $verticallyStacked = $('.vertically-stacked'),改为逗号。这里是编辑的 JSFiddle:jsfiddle.net/ebmanfcL/1 PS:jQuery 鼠标滚轮插件不必像在 JSFiddle 中那样直接在 main.js 文件中,我在那里添加它是因为它是如何在 JSFiddle 中包含插件的唯一方法。跨度>
  • 谢谢你,这确实更有意义。我试图将此添加到我的代码中,但是当我将脚本复制到它上面时它不起作用。我尝试放入 及其自己的 js 文件。如果我把它放在 中,它需要在 html 或正文中吗?
  • 这就是我尝试将其添加到我的代码中的方式。我想如果我可以让它在我的电脑上工作。然后我会希望弄清楚。 jsfiddle.net/2xt7vyxf
  • &lt;script&gt; 需要在&lt;head&gt; 中,最好单独制作一个JS文件,然后将&lt;script src="filename.js"&gt;&lt;/script&gt; 放入&lt;head&gt;,例如&lt;script src="main.js"&gt;&lt;/script&gt; 然后你必须在&lt;head&gt; 中包含 jQuery 和 jQuery 鼠标滚轮插件,尝试找到这些框架的外部链接或将其下载到你的 PC 并将其链接为 main.js 文件,例如如果您有外部链接,它可能看起来像&lt;script src="http://stackoverflow.com/jquery.js&gt;&lt;/script&gt;(这不是实际链接,它只是一个示例)。每个原生 JS 中没有的框架,如 jQuery,都需要包含在内。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多