Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamicpage divs flash shortly after loading new content

I'm using the dynamicpage script to load content via Ajax into my page. Everything works fine besides 1 issue. I have a page with the divs stacked beneath each other So for example: header-banner-nav-content-likebox-twitterwidget-footer.

If I change page, so if i go from home to contact for example, then i see my likebox and twitterwidget going to the top of the page (beneath the nav) in less then a second. After that everything loads correctly, but its annoying to see the boxes flash on top before showing the contact page. How can I modify the dynamicpage.js script, so that it will not shortly move the divs beneath the content from going to the top?

this is my script:

$(function() {

    var newHash      = "",
        $mainContent = $("#main-content"),
        $pageWrap    = $("#page=wrap"),
        baseHeight   = 0,
        $el;

    $pageWrap.height($pageWrap.height());
    baseHeight = $pageWrap.height() - $mainContent.height();

    $("nav").delegate("a", "click", function() {
        window.location.hash = $(this).attr("href");
        return false;
    });

    $(window).bind('hashchange', function(){ 
String.prototype.toTitleCase = function(n) {
   var s = this;
   if (1 !== n) s = s.toLowerCase();
   return s.replace(/\b[a-z]/g,function(f){return f.toUpperCase()});
   }

   newHash = window.location.hash.substring(1);         

   function changeTitle(title) { 

   document.title = window.location.hash.replace("#","").replace(/[_]/g,"").replace(".html","").replace("and","+").toTitleCase(); }
   changeTitle("");

        newHash = window.location.hash.substring(1);

        if (newHash) {
            $mainContent
                .find("#guts")
                .fadeOut(200, function() {
                    $mainContent.hide().load(newHash + " #guts", function() {
                        $mainContent.fadeIn(200, function() {
                            $pageWrap.animate({
                                height: baseHeight + $mainContent.height() + "px"
                            });
                        });
                        $("nav a").removeClass("current");
                        $("nav a[href="+newHash+"]").addClass("current");
                    });
                });
        };

    });
    $(window).trigger('hashchange');



});

here is my css:

.header-wrapper {
    display:block;
    clear: none;
    max-width:960px;
    margin:auto;

}
header {
    position:relative;
    display: block;
    width: 100%;
    max-width:960px;
    min-height: 110px;
    background: url('../img/header-d.gif') no-repeat;
    margin:0 auto;
    margin-top:15px;
}
.like-button {
    position:absolute;
    right: 36%;
    bottom:0;
}
.like-button-twitter {
    position:absolute;
    right:22%;
    bottom:2px;
}
#email {
     width: 180px; 
     background: #FFFFFF; 
     border: 1px solid #BBBBBB;
     position:absolute;
     right:2px;
     bottom:5px;
     margin: 0 5px 0 0;
     padding: 4px;  
     font-size: 10px;
     }  
.go {
    position: absolute;
    right:8px;
    bottom:10px;
    border:none;
    color: #455868;
    font-weight:bold;

}
#icons {
    background: url('../img/icons.png') no-repeat;
    position: absolute;
    list-style:none;
    width:210px;
    height:35px;
    right:0;

    }
#icons li {
    position:absolute;
    list-style:none;
    }
li icon1 {
    position:absolute;
    right:100px;
    width:35px;

}
nav {
    min-height: 40px;
    width: 100%; 
    background: #374652 ; /*#455868 */
    font-size: 10pt;
    font-family: sans-serif;
    position: relative;
    border-bottom: 2px solid #283744;
}
nav ul {
    padding: 0;
    margin: 0 auto;
    width: 400px;
    height: 20px;
}
nav li {
    display: inline;
    float: left;
}
nav a {
    display: inline-block;
    width: 100px;
    text-align: center;
    text-decoration: none;
    line-height: 40px;
    color:#ffffff;
}
nav li a {
    border-right: 1px solid #576979;
    box-sizing:border-box;
    -moz-box-sizing:border-box;
    -webkit-box-sizing:border-box;
    color:#ffffff;
}
nav a:visited
{   color:#ffffff; }

nav li:last-child a {
    border-right: 0;
}
nav a:hover, nav a:active {
    background-color: #2d3a44;
}
nav a#pull {
    display: none;
}
#banner {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display:block;  
    }
.wrapper {
    width: 100%;
    max-width: 960px;
    margin: auto;
}
article {
    clear: both;
    float: left;
    margin-left: 0;
    margin-top:30px;
    width: 62%;
    display: block;
}

#youtube-music .container {height:450px;}

section {
    padding-left:8px;
}
aside {
    clear: none;
    float: right;
    margin-left: 3%;
    padding-right:1%;
    margin-top:30px;
    width: 33.2033%;
    display: block;
}
#like-box {
    clear: none;
    float: left;
    width: 100%;
    display: block;
    overflow:hidden;
    border:1px solid #2c2c2c;
}
.fb-like-box  {
    width: 100% !important;
    border:none; 
    overflow:hidden;

}
#youtube-box {
    clear: none;
    float: left;
    width: 100%;
    margin-top:10px;
    display: block;
    border:1px solid #2c2c2c;
}
#twitter-box {
    clear: none;
    float: left;
    width: 100%;
    margin-top:10px;
    display: block;
    overflow:hidden;
    border:1px solid #2c2c2c;
}
#twitter {
width:100%;
}

#twitter_m {
width: 100%;
padding: 0 13px;
}
#twitter_container {
min-height:45px;
height:auto !important;

}
#twitter_update_list {
width: 100%;
padding: 0;
overflow: hidden;
font-size: 14px;
color: #374652;
line-height: 16px;
margin-left:-13px;
}
#twitter_update_list li {
width: 90%;
padding:10px;
border-bottom: solid 1px #ccc;
}
#twitter_update_list li a {
color:#631891;
text-decoration: none;
}
#twitter_update_list li a:hover {
color: #31353d;
}

footer { margin-top: 15px; display:block; background:#374652; color: #d5d5d5;}
#footer-container {position: relative; height: 250px; max-width:960px; margin:auto;}
footer ul { padding-top: 5px; padding-left:15px;}
footer ul li{float:left; position: relative; padding-right:15px;  display:inline;}
footer ul li a{color: #d5d5d5;}
footer ul li a:hover{color: #777;}
#footer-container p { position: absolute; bottom:30px;}

#youtube-music {    
    clear: none;
    float: left;
    width: 100%;
    display: block;
    }
like image 771
Eric Avatar asked Aug 29 '12 22:08

Eric


1 Answers

Your code might be running before all of the styles have been fully loaded. You might try using .load() instead of $(function(){...}) to call your code

    $(window).load(function () {
      // run code
    });

This will cause your code to run after the window has been completely loaded.

like image 169
DJ Sprouse Avatar answered Oct 11 '22 15:10

DJ Sprouse