Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 9c5aa92

Browse files
committed
Landing page for Python Brasil 2019
1 parent a6efb4a commit 9c5aa92

32 files changed

+5944
-0
lines changed

assets/css/font-awesome.min.css

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/css/main.css

Lines changed: 1233 additions & 0 deletions
Large diffs are not rendered by default.

assets/fonts/FontAwesome.otf

132 KB
Binary file not shown.

assets/fonts/fontawesome-webfont.eot

162 KB
Binary file not shown.

assets/fonts/fontawesome-webfont.svg

Lines changed: 2671 additions & 0 deletions
Loading

assets/fonts/fontawesome-webfont.ttf

162 KB
Binary file not shown.

assets/fonts/fontawesome-webfont.woff

95.7 KB
Binary file not shown.
75.4 KB
Binary file not shown.

assets/js/main.js

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
/*
2+
Eventually by HTML5 UP
3+
html5up.net | @ajlkn
4+
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5+
*/
6+
7+
(function() {
8+
9+
"use strict";
10+
11+
var $body = document.querySelector('body');
12+
13+
// Methods/polyfills.
14+
15+
// classList | (c) @remy | github.com/remy/polyfills | rem.mit-license.org
16+
!function(){function t(t){this.el=t;for(var n=t.className.replace(/^\s+|\s+$/g,"").split(/\s+/),i=0;i<n.length;i++)e.call(this,n[i])}function n(t,n,i){Object.defineProperty?Object.defineProperty(t,n,{get:i}):t.__defineGetter__(n,i)}if(!("undefined"==typeof window.Element||"classList"in document.documentElement)){var i=Array.prototype,e=i.push,s=i.splice,o=i.join;t.prototype={add:function(t){this.contains(t)||(e.call(this,t),this.el.className=this.toString())},contains:function(t){return-1!=this.el.className.indexOf(t)},item:function(t){return this[t]||null},remove:function(t){if(this.contains(t)){for(var n=0;n<this.length&&this[n]!=t;n++);s.call(this,n,1),this.el.className=this.toString()}},toString:function(){return o.call(this," ")},toggle:function(t){return this.contains(t)?this.remove(t):this.add(t),this.contains(t)}},window.DOMTokenList=t,n(Element.prototype,"classList",function(){return new t(this)})}}();
17+
18+
// canUse
19+
window.canUse=function(p){if(!window._canUse)window._canUse=document.createElement("div");var e=window._canUse.style,up=p.charAt(0).toUpperCase()+p.slice(1);return p in e||"Moz"+up in e||"Webkit"+up in e||"O"+up in e||"ms"+up in e};
20+
21+
// window.addEventListener
22+
(function(){if("addEventListener"in window)return;window.addEventListener=function(type,f){window.attachEvent("on"+type,f)}})();
23+
24+
// Play initial animations on page load.
25+
window.addEventListener('load', function() {
26+
window.setTimeout(function() {
27+
$body.classList.remove('is-preload');
28+
}, 100);
29+
});
30+
31+
// Slideshow Background.
32+
(function() {
33+
34+
// Settings.
35+
var settings = {
36+
37+
// Images (in the format of 'url': 'alignment').
38+
images: {
39+
'images/bg01.jpg': 'center',
40+
'images/bg02.jpg': 'center',
41+
'images/bg03.jpg': 'center'
42+
},
43+
44+
// Delay.
45+
delay: 6000
46+
47+
};
48+
49+
// Vars.
50+
var pos = 0, lastPos = 0,
51+
$wrapper, $bgs = [], $bg,
52+
k, v;
53+
54+
// Create BG wrapper, BGs.
55+
$wrapper = document.createElement('div');
56+
$wrapper.id = 'bg';
57+
$body.appendChild($wrapper);
58+
59+
for (k in settings.images) {
60+
61+
// Create BG.
62+
$bg = document.createElement('div');
63+
$bg.style.backgroundImage = 'url("' + k + '")';
64+
$bg.style.backgroundPosition = settings.images[k];
65+
$wrapper.appendChild($bg);
66+
67+
// Add it to array.
68+
$bgs.push($bg);
69+
70+
}
71+
72+
// Main loop.
73+
$bgs[pos].classList.add('visible');
74+
$bgs[pos].classList.add('top');
75+
76+
// Bail if we only have a single BG or the client doesn't support transitions.
77+
if ($bgs.length == 1
78+
|| !canUse('transition'))
79+
return;
80+
81+
window.setInterval(function() {
82+
83+
lastPos = pos;
84+
pos++;
85+
86+
// Wrap to beginning if necessary.
87+
if (pos >= $bgs.length)
88+
pos = 0;
89+
90+
// Swap top images.
91+
$bgs[lastPos].classList.remove('top');
92+
$bgs[pos].classList.add('visible');
93+
$bgs[pos].classList.add('top');
94+
95+
// Hide last image after a short delay.
96+
window.setTimeout(function() {
97+
$bgs[lastPos].classList.remove('visible');
98+
}, settings.delay / 2);
99+
100+
}, settings.delay);
101+
102+
})();
103+
104+
// Signup Form.
105+
(function() {
106+
107+
// Vars.
108+
var $form = document.querySelectorAll('#signup-form')[0],
109+
$submit = document.querySelectorAll('#signup-form input[type="submit"]')[0],
110+
$message;
111+
112+
// Bail if addEventListener isn't supported.
113+
if (!('addEventListener' in $form))
114+
return;
115+
116+
// Message.
117+
$message = document.createElement('span');
118+
$message.classList.add('message');
119+
$form.appendChild($message);
120+
121+
$message._show = function(type, text) {
122+
123+
$message.innerHTML = text;
124+
$message.classList.add(type);
125+
$message.classList.add('visible');
126+
127+
window.setTimeout(function() {
128+
$message._hide();
129+
}, 3000);
130+
131+
};
132+
133+
$message._hide = function() {
134+
$message.classList.remove('visible');
135+
};
136+
137+
// Events.
138+
// Note: If you're *not* using AJAX, get rid of this event listener.
139+
$form.addEventListener('submit', function(event) {
140+
141+
event.stopPropagation();
142+
event.preventDefault();
143+
144+
// Hide message.
145+
$message._hide();
146+
147+
// Disable submit.
148+
$submit.disabled = true;
149+
150+
// Process form.
151+
// Note: Doesn't actually do anything yet (other than report back with a "thank you"),
152+
// but there's enough here to piece together a working AJAX submission call that does.
153+
window.setTimeout(function() {
154+
155+
// Reset form.
156+
$form.reset();
157+
158+
// Enable submit.
159+
$submit.disabled = false;
160+
161+
// Show message.
162+
$message._show('success', 'Thank you!');
163+
//$message._show('failure', 'Something went wrong. Please try again.');
164+
165+
}, 750);
166+
167+
});
168+
169+
})();
170+
171+
})();

assets/sass/base/_bg.scss

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
///
2+
/// Eventually by HTML5 UP
3+
/// html5up.net | @ajlkn
4+
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5+
///
6+
7+
/* BG */
8+
9+
#bg {
10+
@include vendor('transition', 'opacity #{_duration(bg-fadein)} ease-in-out');
11+
height: 100%;
12+
left: 0;
13+
opacity: 0.25;
14+
position: fixed;
15+
top: 0;
16+
width: 100%;
17+
z-index: 1;
18+
19+
div {
20+
@include vendor('transition', ('opacity #{_duration(bg-transition)} ease', 'visibility #{_duration(bg-transition)}'));
21+
background-size: cover;
22+
height: 100%;
23+
left: 0;
24+
opacity: 0;
25+
position: absolute;
26+
top: 0;
27+
visibility: hidden;
28+
width: 150%;
29+
30+
&.visible {
31+
@include vendor('animation', 'bg #{_duration(bg-slide)} linear infinite');
32+
opacity: 1;
33+
visibility: visible;
34+
z-index: 1;
35+
36+
&.top {
37+
z-index: 2;
38+
}
39+
40+
@include breakpoint('<=large') {
41+
@include vendor('animation', 'bg #{_duration(bg-slide) * 0.65} linear infinite');
42+
}
43+
44+
@include breakpoint('<=small') {
45+
@include vendor('animation', 'bg #{_duration(bg-slide) * 0.4} linear infinite');
46+
}
47+
}
48+
49+
&:only-child {
50+
@include vendor('animation-direction', 'alternate !important');
51+
}
52+
}
53+
54+
body.is-preload & {
55+
opacity: 0;
56+
}
57+
}
58+
59+
@include keyframes(bg) {
60+
0% {
61+
@include vendor('transform', 'translateX(0)');
62+
}
63+
64+
100% {
65+
@include vendor('transform', 'translateX(-25%)');
66+
}
67+
}

assets/sass/base/_page.scss

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
///
2+
/// Eventually by HTML5 UP
3+
/// html5up.net | @ajlkn
4+
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5+
///
6+
7+
/* Basic */
8+
9+
// MSIE: Required for IEMobile.
10+
@-ms-viewport {
11+
width: device-width;
12+
}
13+
14+
// MSIE: Prevents scrollbar from overlapping content.
15+
body {
16+
-ms-overflow-style: scrollbar;
17+
}
18+
19+
// Ensures page width is always >=320px.
20+
@include breakpoint('<=xsmall') {
21+
html, body {
22+
min-width: 320px;
23+
}
24+
}
25+
26+
// Set box model to border-box.
27+
// Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
28+
html {
29+
box-sizing: border-box;
30+
}
31+
32+
*, *:before, *:after {
33+
box-sizing: inherit;
34+
}
35+
36+
html, body {
37+
height: 100%;
38+
overflow-x: hidden;
39+
width: 100%;
40+
41+
@include breakpoint('short') {
42+
height: auto;
43+
min-height: 100%;
44+
}
45+
}
46+
47+
body {
48+
@include vendor('display', 'flex');
49+
@include vendor('flex-direction', 'column');
50+
@include vendor('justify-content', 'center');
51+
background-color: _palette(bg);
52+
padding: 6em 4em 4em 4em;
53+
54+
// Stops initial animations until page loads.
55+
&.is-preload {
56+
*, *:before, *:after {
57+
@include vendor('animation', 'none !important');
58+
@include vendor('transition', 'none !important');
59+
}
60+
}
61+
62+
> * {
63+
position: relative;
64+
z-index: 2;
65+
}
66+
67+
@include breakpoint('<=xlarge') {
68+
padding: 6em 3.5em 3.5em 3.5em;
69+
}
70+
71+
@include breakpoint('<=small') {
72+
padding: 5em 2em 2em 2em;
73+
}
74+
75+
@include breakpoint('<=xxsmall') {
76+
padding: 5em 1.25em 1.25em 1.25em;
77+
}
78+
}

assets/sass/base/_reset.scss

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
///
2+
/// Eventually by HTML5 UP
3+
/// html5up.net | @ajlkn
4+
/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5+
///
6+
7+
// Reset.
8+
// Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain)
9+
10+
html, body, div, span, applet, object,
11+
iframe, h1, h2, h3, h4, h5, h6, p, blockquote,
12+
pre, a, abbr, acronym, address, big, cite,
13+
code, del, dfn, em, img, ins, kbd, q, s, samp,
14+
small, strike, strong, sub, sup, tt, var, b,
15+
u, i, center, dl, dt, dd, ol, ul, li, fieldset,
16+
form, label, legend, table, caption, tbody,
17+
tfoot, thead, tr, th, td, article, aside,
18+
canvas, details, embed, figure, figcaption,
19+
footer, header, hgroup, menu, nav, output, ruby,
20+
section, summary, time, mark, audio, video {
21+
margin: 0;
22+
padding: 0;
23+
border: 0;
24+
font-size: 100%;
25+
font: inherit;
26+
vertical-align: baseline;
27+
}
28+
29+
article, aside, details, figcaption, figure,
30+
footer, header, hgroup, menu, nav, section {
31+
display: block;
32+
}
33+
34+
body {
35+
line-height: 1;
36+
}
37+
38+
ol, ul {
39+
list-style:none;
40+
}
41+
42+
blockquote, q {
43+
quotes: none;
44+
45+
&:before,
46+
&:after {
47+
content: '';
48+
content: none;
49+
}
50+
}
51+
52+
table {
53+
border-collapse: collapse;
54+
border-spacing: 0;
55+
}
56+
57+
body {
58+
-webkit-text-size-adjust: none;
59+
}
60+
61+
mark {
62+
background-color: transparent;
63+
color: inherit;
64+
}
65+
66+
input::-moz-focus-inner {
67+
border: 0;
68+
padding: 0;
69+
}
70+
71+
input, select, textarea {
72+
-moz-appearance: none;
73+
-webkit-appearance: none;
74+
-ms-appearance: none;
75+
appearance: none;
76+
}

0 commit comments

Comments
 (0)