Skip to content

Instantly share code, notes, and snippets.

@willwalsh96
Created May 27, 2021 19:39
Show Gist options
  • Save willwalsh96/9529a2fdb9adbca97786c2969c2787c9 to your computer and use it in GitHub Desktop.
Save willwalsh96/9529a2fdb9adbca97786c2969c2787c9 to your computer and use it in GitHub Desktop.
FCC Quote Generator
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"
/>
<div id="wrapper">
<div id="quote-box">
<div class="quote-text">
<i class="fa fa-quote-left"> </i><span id="text"></span>
</div>
<div class="quote-author">- <span id="author"></span></div>
<div class="buttons">
<a
class="button"
id="tweet-quote"
title="Tweet this quote!"
target="_top"
>
<i class="fa fa-twitter"></i>
</a>
<a
class="button"
id="tumblr-quote"
title="Post this quote on tumblr!"
target="_blank"
>
<i class="fa fa-tumblr"></i>
</a>
<button class="button" id="new-quote">New quote</button>
</div>
</div>
<div class="footer">by <a href="https://codepen.io/hezag/">hezag</a></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js"></script>
/* eslint-disable max-len */
// eslint-disable-next-line no-unused-vars
const projectName = 'random-quote-machine';
let quotesData;
/*
Code by Gabriel Nunes
Modified by Todd Chaffee to use Camper gist for JSON Quote data.
*/
var colors = [
'#16a085',
'#27ae60',
'#2c3e50',
'#f39c12',
'#e74c3c',
'#9b59b6',
'#FB6964',
'#342224',
'#472E32',
'#BDBB99',
'#77B1A9',
'#73A857'
];
var currentQuote = '',
currentAuthor = '';
function getQuotes() {
return $.ajax({
headers: {
Accept: 'application/json'
},
url:
'https://gist.githubusercontent.com/camperbot/5a022b72e96c4c9585c32bf6a75f62d9/raw/e3c6895ce42069f0ee7e991229064f167fe8ccdc/quotes.json',
success: function (jsonQuotes) {
if (typeof jsonQuotes === 'string') {
quotesData = JSON.parse(jsonQuotes);
console.log('quotesData');
console.log(quotesData);
}
}
});
}
function getRandomQuote() {
return quotesData.quotes[
Math.floor(Math.random() * quotesData.quotes.length)
];
}
function getQuote() {
let randomQuote = getRandomQuote();
currentQuote = randomQuote.quote;
currentAuthor = randomQuote.author;
$('#tweet-quote').attr(
'href',
'https://twitter.com/intent/tweet?hashtags=quotes&related=freecodecamp&text=' +
encodeURIComponent('"' + currentQuote + '" ' + currentAuthor)
);
$('#tumblr-quote').attr(
'href',
'https://www.tumblr.com/widgets/share/tool?posttype=quote&tags=quotes,freecodecamp&caption=' +
encodeURIComponent(currentAuthor) +
'&content=' +
encodeURIComponent(currentQuote) +
'&canonicalUrl=https%3A%2F%2Fwww.tumblr.com%2Fbuttons&shareSource=tumblr_share_button'
);
$('.quote-text').animate({ opacity: 0 }, 500, function () {
$(this).animate({ opacity: 1 }, 500);
$('#text').text(randomQuote.quote);
});
$('.quote-author').animate({ opacity: 0 }, 500, function () {
$(this).animate({ opacity: 1 }, 500);
$('#author').html(randomQuote.author);
});
var color = Math.floor(Math.random() * colors.length);
$('html body').animate(
{
backgroundColor: colors[color],
color: colors[color]
},
1000
);
$('.button').animate(
{
backgroundColor: colors[color]
},
1000
);
}
$(document).ready(function () {
getQuotes().then(() => {
getQuote();
});
$('#new-quote').on('click', getQuote);
});
@import url('https://fonts.googleapis.com/css?family=Raleway:400,500');
* {
margin: 0;
padding: 0;
list-style: none;
vertical-align: baseline;
}
div {
position: relative;
z-index: 2;
}
body {
background-color: #333;
color: #333;
font-family: 'Raleway', sans-serif;
font-weight: 400;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.footer {
width: 450px;
text-align: center;
display: block;
margin: 15px auto 30px auto;
font-size: 0.8em;
color: #fff;
a {
font-weight: 500;
text-decoration: none;
color: #fff;
}
}
#quote-box {
border-radius: 3px;
position: relative;
//margin:8% auto auto auto;
width: 450px;
padding: 40px 50px;
display: table;
background-color: #fff;
.quote-text {
i {
font-size: 1em;
margin-right: 0.4em;
}
text-align: center;
width: 450px;
height: auto;
clear: both;
font-weight: 500;
font-size: 1.75em;
}
.quote-author {
width: 450px;
height: auto;
clear: both;
padding-top: 20px;
font-size: 1em;
text-align: right;
}
.buttons {
width: 450px;
margin: auto;
display: block;
.button {
height: 38px;
border: none;
border-radius: 3px;
color: #fff;
background-color: #333;
outline: none;
font-size: 0.85em;
padding: 8px 18px 6px 18px;
margin-top: 30px;
opacity: 1;
cursor: pointer;
&:hover {
opacity: 0.9;
}
&#tweet-quote,
&#tumblr-quote {
float: left;
padding: 0px;
padding-top: 8px;
text-align: center;
font-size: 1.2em;
margin-right: 5px;
height: 30px;
width: 40px;
}
&#new-quote {
float: right;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment