单击加载另一个页面的CSS属性



当有人点击链接时,我希望发生三件事:

1) 内容淡出,只留下背景图像

2) 背景图像渐变为超链接后面页面的背景图像

3) 加载新的背景图像后,继续超链接事件,并将用户切换到新页面(新内容将在其中淡入)。

我认为这会产生很好的连续性效果,但我在获取链接背景图像的url时遇到了问题。我可以使用.load来更改的内容,但还没能为CSS属性找到这样做的方法。

PS:忽略{%tags%}:我使用Django模板标签来引用URL,这些标签运行良好(…目前:)

{% load staticfiles %}
<html>
    <head>
        {% block title %}<title>Title Goes Here</title>{% endblock %}
        <link rel='stylesheet' type='text/css' href='{% static 'css/style.css' %}'>
        <style>
            body{
                background: url("{% block bgImage %} {% static 'images/backgroundimages/Cactus.JPG' %} {% endblock %}");
            background-size: cover;
            background-repeat: no-repeat;
        }
    </style>
    <script src='{% static 'js/jquery.js' %}'></script>
    <script>
        $(document).ready(function(){
            $('body').css('display', 'none');
            $('body').fadeIn(1000);
            $(".navLink").click(function(event){
                event.preventDefault();              
                var targetLink = $(this).attr('href');
                ***Do something to get the URL of the background image of the page pointed at by targetLink***
            });
        });
    </script>
</head>
<body>
    {% block nav %}
        <nav>
            <a href='{% url 'home' %}' class='navLink'>Home</a>
            <a href='{% url 'about' %}' class='navLink'>About</a>
            <a href='{% url 'services:services' %}' class='navLink'>Services</a>
            <a href='{% url 'portfolio:portfolio' %}'class='navLink'>Portfolio</a>
            <a href='{% url 'projects:projects' %}' class='navLink'>Projects</a>
            <a href='{% url 'contact' %}' class='navLink'>Contact</a>
        </nav>
    {% endblock %}
        <div id='wrapper'>
           {% block content %}
              Content Goes Here
            {% endblock %}
        </div>
</body>

提前感谢您的指导!

我认为如果不使用AJAX和历史记录,就无法实现持续平稳的转换。PushState。但只是为了好玩…

首先,您应该将背景图像放在带有与页面相关联的类的全局style.css中。并将转换添加到css中,而不是jQuery中。

CSS

body {
    -webkit-transition: background-image 1s ease-in-out;
       -moz-transition: background-image 1s ease-in-out;       
            transition: background-image 1s ease-in-out;
    -webkit-transition-delay: 1s;
       -moz-transition-delay: 1s;
            transition-delay: 1s;
}
.home-page {
    background-image: url(bg-home.jpg);
}
.about-page {
    background-image: url(bg-about.jpg);
}
.content {
    opacity: 0;
    -webkit-transition: opacity 1s linear;
       -moz-transition: opacity 1s linear;
            transition: opacity 1s linear;
 }
.fade-in {
    opacity: 1;
 }

然后使用jQuery添加和删除类以启动转换和处理导航页面。

jQuery

$(function () {
    $body = $("body");
    $content = $(".content");
    setTimeout(function () {
        $content.addClass("fade-in");
    }, 200);
    function onTransitionEnd(href) {
        $content.on('webkitTransitionEnd otransitionend oTransitionEnd transitionend',
            function (event) {
                event.stopPropagation();
            });
        $body.on('webkitTransitionEnd otransitionend oTransitionEnd transitionend',
            function () {
                window.location = href;
            });
    };
    function pageTransition(toPageLink, toPageClass) {
        event.preventDefault();
        $body.removeClass().addClass(toPageClass);
        $content.removeClass("fade-in");
        onTransitionEnd(toPageLink);
    };
    $(".home-link").on("click", function (event) {     
        pageTransition($(this).attr('href'), 'home-page')
    });
    $(".about-link").on("click", function (event) {
        pageTransition($(this).attr('href'), 'about-page')
    })
});

然后,页面的标记将在正文和链接上具有类。

HTML

主页示例

<body class="home-page">
    <nav>
        <a href="home.html" class="home-link">Home</a>
        <a href="about.html" class="about-link">About</a></nav>
    <div class="content">
        Content goes here
    </div>
</body>

关于页面示例

<body class="about-page">
    <nav>
        <a href="home.html" class="home-link">Home</a>
        <a href="about.html" class="about-link">About</a></nav>
    <div class="content">
        Content goes here
    </div>
</body>

否则,您可以尝试这个插件,它可以使用ajax获取内容、进行转换并更新url:http://weblinc.github.io/jquery.smoothState.js/

最新更新