2

I am looking to create a loading overlay for my website. Each time an internal link is clicked I would like to display an inspirational quote for a few seconds.

After a few hours of research this is what I have found so far:

1. Different quote at random on page refresh?

https://forum.jquery.com/topic/how-can-i-show-a-different-quote-at-random-on-page-refresh

This is the exact question I am asking but I couldn't work out the solution to this discussion

2. A discussion on displaying random blockquotes

jQuery random blockquote

This is a good find for me but I need to add this to an loading / overlay effect for a few seconds.

Can anyone help me? Thanks guys


-- UPDATE --

With a lot of help from friends, here is the best solution I have been able to come up with:

html:

<body>
<!-- Place Directly Under the Opening "body" Tag -->
<div class="" id="preloader">
    <blockquote>Default Quote</blockquote> <cite>Default Cite</cite>

</div>
<script type="text/javascript">
    // Adds a "loading" Class to the Preloader
    document.getElementById('preloader').className += 'loading';
</script>
<p>Lorem ipsum ante in varius dui tortor senectus scelerisque vivamus posuere, aliquam odio rutrum cubilia rutrum taciti et fames vel ornare augue etiam justo.</p>

js:

// Display Random Blockquotes and Cites 


// Create Quotes Array
var quotes = [];

// The List of Quotes!
quotes[0] = "Quote One";
quotes[1] = "Quote Two";
quotes[2] = "Quote Three";
quotes[3] = "Quote Four";

// Assign the Variable "quote" with a Random Quotation from Above

var quote = quotes[Math.floor(Math.random() * quotes.length)];

// Alter the Current (Default) Quote Text with a Random Quote
$('#preloader blockquote').text(quote);

// Create Cites Array
var cites = [];

// The List of Cites
cites[0] = "- Cite One";
cites[1] = "- Cite Two";
cites[2] = "- Cite Three";
cites[3] = "- Cite Four";

// Assign the Variable "cite" with a Random Cite from Above

var cite = cites[Math.floor(Math.random() * cites.length)];

// Alter the Current (Default) Cite Text with a Random Quote
$('#preloader cite').text(cite);



// All Code Inside Here Will Get Executed After 5 Seconds
setTimeout(function () {
$('#preloader').fadeOut(2500, function () {
$('#preloader').removeClass('loading');
});
}, 2500);

css:

#preloader {
background: #000;
height: 100%;
bottom: 0;
display: none;
left: 0;
position: fixed;
right: 0;
top: 0;
background-image: url(http://loadinggif.com/generated-image?imageId=9&bgColor=%23000000&fgColor=%23ffffff&transparentBg=0&download=0&random=0.4457789873704314);
background-position: 50% 20%;
background-repeat:no-repeat;
z-index: 999;
margin: 0;
padding: 0;
}
#preloader.loading {
/* Displays Preloader When "loading" Class Present */
display: block;
}
#preloader blockquote {
color: #fff;
display: block;
font-size: 30px;
margin: 0;
text-align: center;
border: none;
margin: 15% 0 2% 0;
padding: 0;
}
#preloader cite {
color: #fff;
display: block;
font-size: 15px;
text-align: center;
border: none;
margin: 0;
padding: 0;
}

-- PROBLEM --

The problem I have now is a random quote will be matched with a random cite. How can I get "Quote One" with match "Cite One"... and so on. I still would like them to display randomly if possible

Here is a jsfiddle example http://jsfiddle.net/erlenmasson/24pEZ/

Community
  • 1
  • 1
erlenmasson
  • 43
  • 1
  • 8

1 Answers1

1

Something like this?

// Display Random Blockquotes and Cites 


// Create Quotes Array
var quotes = [];

// The List of Quotes!

quotes.push({"content": "Quote One", "cite": "- Cite One"});
quotes.push({"content": "Quote Two", "cite": "- Cite Two"});
quotes.push({"content": "Quote Three", "cite": "- Cite Three"});
quotes.push({"content": "Quote Four", "cite": "- Cite Four"});

var randomNumber = Math.floor(Math.random() * quotes.length);

// Alter the Current (Default) Quote Text with a Random Quote
$('#preloader blockquote').text(quotes[randomNumber]['content']);

// Alter the Current (Default) Cite Text with a Random Quote
$('#preloader cite').text(quotes[randomNumber]['cite']);


// All Code Inside Here Will Get Executed After 5 Seconds
setTimeout(function () {
    $('#preloader').fadeOut(2500, function () {
        $('#preloader').removeClass('loading');
    });
}, 2500);

http://jsfiddle.net/24pEZ/10/