-
-
Notifications
You must be signed in to change notification settings - Fork 388
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New intro page #1930
Merged
Merged
New intro page #1930
Changes from 76 commits
Commits
Show all changes
89 commits
Select commit
Hold shift + click to select a range
d9a2343
rewriting main pb file
lschatzkin 4c28486
adding foundation to repo
lschatzkin 3374b14
basic foundation 6 page build out
lschatzkin 90f68a2
adding colors and share-links layout
lschatzkin 77e1f52
adding share-links styles
lschatzkin 8051b6c
adding donate link
lschatzkin e75fa72
adding chunkfive font
lschatzkin 95f4120
added site images
lschatzkin 15c1f6f
renaming logo images
lschatzkin 51c2942
adding fonts
lschatzkin edfeb0c
building out base styles and font variables
lschatzkin 8d87a1c
modifying default foundation font settings
lschatzkin a980364
adding images
lschatzkin ce742e7
adding imsages for share links
lschatzkin 266c604
renaming content images
lschatzkin 6fd78d1
laying out content, roughly
lschatzkin 39c5737
swapped in social media icons with correct color
lschatzkin e47e367
added alt tags to images, refactoring some grid code
lschatzkin 79c5192
changing base settings for large button
lschatzkin 0edced7
adding some styles to button
lschatzkin 4bb6b8e
accidentally removed fonts file, readding
lschatzkin ad6342d
adding background gradients for bottom sections
lschatzkin e265703
increased all fonts to be minimum of 0.9rem (14px) to pass accessbili…
lschatzkin 9d531b7
increased button text to 1rem
lschatzkin 237a493
changed caret icon name
lschatzkin 5a73e37
moved share links down the page slightly
lschatzkin b5774d9
changed some #ids, moved help text under donate button
lschatzkin 0abe450
added correct social media links
lschatzkin 8b17b92
tweaks to header fonts, background sizes, column widths
lschatzkin 852f424
some mobile styling
lschatzkin 5d5051f
swapped in caret with correct color
lschatzkin 088bafe
adding compiled css files
lschatzkin 1cdb431
couldn't get foundation smooth scroll to work, using jquery
lschatzkin a89e30e
various tweaks throughout the page to better match design
lschatzkin 7869b88
adding margin-bottom to bottom of page
lschatzkin 6315414
Increase spacing above donate section
d9c6dfa
Increase spacing between graphic and text
78774df
Squeeze text on medium screens
db40c6f
Push text below graphic for mobile
bf6eb05
Make share links fixed position
e44099b
Remove text justify
a984e6a
Update text
18ef7f5
Remove css and js files no longer used for firstRun.html
73b1f70
Increase space above h3 titles for mobile
a1e5541
Center images on mobile
42cfd2e
Change h3 font size to 1.5rem
d3fa80b
Merge pull request #1 from lschatzkin/foundation
squiggy 821c23d
moved jquery.smooth-scroll.js to src/lib/vendor, using jquery in that…
lschatzkin a7d596f
adding setSeenComic to pb.js
lschatzkin 6b637ec
moved jquery files to src/lib/vendor
lschatzkin 93c2e3a
moved smooth scroll file
lschatzkin d88db56
removing foundation js
lschatzkin 643bcd5
cleaning up and commenting css file
lschatzkin d98f085
removing unused code for table, flex grid, media embeds
lschatzkin ef0d8fa
removing menu, many button styles
lschatzkin c764550
removed unnecessary line feed/spaces
lschatzkin 61401ec
moved new css code to pb.css
lschatzkin b74cd40
renaming css and js back to firstRun, center text in bottom section o…
lschatzkin 2653f20
removing spaces per travis errors
lschatzkin 9cbbadd
removing unused file, foundation compiled css
lschatzkin d798142
removing unused grid code
lschatzkin 60ce2c0
removing more unused xy grid code
lschatzkin dc20a36
removed excess foundation code
lschatzkin 93b5192
removed adblock text
lschatzkin 18283cf
removed scss folder
lschatzkin bd55416
removing old slideshow icons
lschatzkin 3eab563
removing build files
lschatzkin d562ab7
refacting top-bar css
lschatzkin 35efbcf
removing unused icons
lschatzkin a8a6f38
downsizing images using ImageOptim
lschatzkin 90de9af
removing extra logo
lschatzkin 22a3a0d
moving font licensing info, removing OpenSans-Regular.ttf
lschatzkin 818a2c1
adding jquery smooth scroll credits to LICENSE file
lschatzkin 8c2ac96
removing jcarousel, no longer using
lschatzkin c944ddf
removed after scroll function in smoothScroll, replaced with function…
lschatzkin b217d03
fixing lint errors (spacing)
lschatzkin 7f96e0c
Merge branch 'master'.
ghostwords 559ebe3
Update HTML indentation standard to two spaces.
ghostwords 81a087b
Remove old intro locale strings.
ghostwords eaac02d
Tweak "Share on Google+" locale string.
ghostwords a95c35d
Add i18n helper lib to intro page.
ghostwords dc8bfb2
Reuse some existing locale strings on intro page.
ghostwords cb28749
Remove hardcoded lang attribute from intro page.
ghostwords 1181ee3
Fix image alt attributes.
ghostwords e3fa70d
Localize all intro page messages.
ghostwords 6ee8e67
darkening link color
lschatzkin 79ab6d8
Open donation page in new tab.
ghostwords c9fc236
Update source locale to Transifex formatting.
ghostwords eb56172
Pull locales from Transifex to get the new strings
ghostwords File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,357 @@ | ||
/*! | ||
* jQuery Smooth Scroll - v2.2.0 - 2017-05-05 | ||
* https://github.com/kswedberg/jquery-smooth-scroll | ||
* Copyright (c) 2017 Karl Swedberg | ||
* Licensed MIT | ||
*/ | ||
|
||
(function(factory) { | ||
if (typeof define === 'function' && define.amd) { | ||
// AMD. Register as an anonymous module. | ||
define(['jquery'], factory); | ||
} else if (typeof module === 'object' && module.exports) { | ||
// CommonJS | ||
factory(require('jquery')); | ||
} else { | ||
// Browser globals | ||
factory(jQuery); | ||
} | ||
}(function($) { | ||
|
||
var version = '2.2.0'; | ||
var optionOverrides = {}; | ||
var defaults = { | ||
exclude: [], | ||
excludeWithin: [], | ||
offset: 0, | ||
|
||
// one of 'top' or 'left' | ||
direction: 'top', | ||
|
||
// if set, bind click events through delegation | ||
// supported since jQuery 1.4.2 | ||
delegateSelector: null, | ||
|
||
// jQuery set of elements you wish to scroll (for $.smoothScroll). | ||
// if null (default), $('html, body').firstScrollable() is used. | ||
scrollElement: null, | ||
|
||
// only use if you want to override default behavior | ||
scrollTarget: null, | ||
|
||
// automatically focus the target element after scrolling to it | ||
autoFocus: false, | ||
|
||
// fn(opts) function to be called before scrolling occurs. | ||
// `this` is the element(s) being scrolled | ||
beforeScroll: function() {}, | ||
|
||
// fn(opts) function to be called after scrolling occurs. | ||
// `this` is the triggering element | ||
afterScroll: function() {}, | ||
|
||
// easing name. jQuery comes with "swing" and "linear." For others, you'll need an easing plugin | ||
// from jQuery UI or elsewhere | ||
easing: 'swing', | ||
|
||
// speed can be a number or 'auto' | ||
// if 'auto', the speed will be calculated based on the formula: | ||
// (current scroll position - target scroll position) / autoCoeffic | ||
speed: 400, | ||
|
||
// coefficient for "auto" speed | ||
autoCoefficient: 2, | ||
|
||
// $.fn.smoothScroll only: whether to prevent the default click action | ||
preventDefault: true | ||
}; | ||
|
||
var getScrollable = function(opts) { | ||
var scrollable = []; | ||
var scrolled = false; | ||
var dir = opts.dir && opts.dir === 'left' ? 'scrollLeft' : 'scrollTop'; | ||
|
||
this.each(function() { | ||
var el = $(this); | ||
|
||
if (this === document || this === window) { | ||
return; | ||
} | ||
|
||
if (document.scrollingElement && (this === document.documentElement || this === document.body)) { | ||
scrollable.push(document.scrollingElement); | ||
|
||
return false; | ||
} | ||
|
||
if (el[dir]() > 0) { | ||
scrollable.push(this); | ||
} else { | ||
// if scroll(Top|Left) === 0, nudge the element 1px and see if it moves | ||
el[dir](1); | ||
scrolled = el[dir]() > 0; | ||
|
||
if (scrolled) { | ||
scrollable.push(this); | ||
} | ||
// then put it back, of course | ||
el[dir](0); | ||
} | ||
}); | ||
|
||
if (!scrollable.length) { | ||
this.each(function() { | ||
// If no scrollable elements and <html> has scroll-behavior:smooth because | ||
// "When this property is specified on the root element, it applies to the viewport instead." | ||
// and "The scroll-behavior property of the … body element is *not* propagated to the viewport." | ||
// → https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior | ||
if (this === document.documentElement && $(this).css('scrollBehavior') === 'smooth') { | ||
scrollable = [this]; | ||
} | ||
|
||
// If still no scrollable elements, fall back to <body>, | ||
// if it's in the jQuery collection | ||
// (doing this because Safari sets scrollTop async, | ||
// so can't set it to 1 and immediately get the value.) | ||
if (!scrollable.length && this.nodeName === 'BODY') { | ||
scrollable = [this]; | ||
} | ||
}); | ||
} | ||
|
||
// Use the first scrollable element if we're calling firstScrollable() | ||
if (opts.el === 'first' && scrollable.length > 1) { | ||
scrollable = [scrollable[0]]; | ||
} | ||
|
||
return scrollable; | ||
}; | ||
|
||
var rRelative = /^([\-\+]=)(\d+)/; | ||
|
||
$.fn.extend({ | ||
scrollable: function(dir) { | ||
var scrl = getScrollable.call(this, {dir: dir}); | ||
|
||
return this.pushStack(scrl); | ||
}, | ||
firstScrollable: function(dir) { | ||
var scrl = getScrollable.call(this, {el: 'first', dir: dir}); | ||
|
||
return this.pushStack(scrl); | ||
}, | ||
|
||
smoothScroll: function(options, extra) { | ||
options = options || {}; | ||
|
||
if (options === 'options') { | ||
if (!extra) { | ||
return this.first().data('ssOpts'); | ||
} | ||
|
||
return this.each(function() { | ||
var $this = $(this); | ||
var opts = $.extend($this.data('ssOpts') || {}, extra); | ||
|
||
$(this).data('ssOpts', opts); | ||
}); | ||
} | ||
|
||
var opts = $.extend({}, $.fn.smoothScroll.defaults, options); | ||
|
||
var clickHandler = function(event) { | ||
var escapeSelector = function(str) { | ||
return str.replace(/(:|\.|\/)/g, '\\$1'); | ||
}; | ||
|
||
var link = this; | ||
var $link = $(this); | ||
var thisOpts = $.extend({}, opts, $link.data('ssOpts') || {}); | ||
var exclude = opts.exclude; | ||
var excludeWithin = thisOpts.excludeWithin; | ||
var elCounter = 0; | ||
var ewlCounter = 0; | ||
var include = true; | ||
var clickOpts = {}; | ||
var locationPath = $.smoothScroll.filterPath(location.pathname); | ||
var linkPath = $.smoothScroll.filterPath(link.pathname); | ||
var hostMatch = location.hostname === link.hostname || !link.hostname; | ||
var pathMatch = thisOpts.scrollTarget || (linkPath === locationPath); | ||
var thisHash = escapeSelector(link.hash); | ||
|
||
if (thisHash && !$(thisHash).length) { | ||
include = false; | ||
} | ||
|
||
if (!thisOpts.scrollTarget && (!hostMatch || !pathMatch || !thisHash)) { | ||
include = false; | ||
} else { | ||
while (include && elCounter < exclude.length) { | ||
if ($link.is(escapeSelector(exclude[elCounter++]))) { | ||
include = false; | ||
} | ||
} | ||
|
||
while (include && ewlCounter < excludeWithin.length) { | ||
if ($link.closest(excludeWithin[ewlCounter++]).length) { | ||
include = false; | ||
} | ||
} | ||
} | ||
|
||
if (include) { | ||
if (thisOpts.preventDefault) { | ||
event.preventDefault(); | ||
} | ||
|
||
$.extend(clickOpts, thisOpts, { | ||
scrollTarget: thisOpts.scrollTarget || thisHash, | ||
link: link | ||
}); | ||
|
||
$.smoothScroll(clickOpts); | ||
} | ||
}; | ||
|
||
if (options.delegateSelector !== null) { | ||
this | ||
.off('click.smoothscroll', options.delegateSelector) | ||
.on('click.smoothscroll', options.delegateSelector, clickHandler); | ||
} else { | ||
this | ||
.off('click.smoothscroll') | ||
.on('click.smoothscroll', clickHandler); | ||
} | ||
|
||
return this; | ||
} | ||
}); | ||
|
||
var getExplicitOffset = function(val) { | ||
var explicit = {relative: ''}; | ||
var parts = typeof val === 'string' && rRelative.exec(val); | ||
|
||
if (typeof val === 'number') { | ||
explicit.px = val; | ||
} else if (parts) { | ||
explicit.relative = parts[1]; | ||
explicit.px = parseFloat(parts[2]) || 0; | ||
} | ||
|
||
return explicit; | ||
}; | ||
|
||
var onAfterScroll = function(opts) { | ||
var $tgt = $(opts.scrollTarget); | ||
|
||
if (opts.autoFocus && $tgt.length) { | ||
$tgt[0].focus(); | ||
|
||
if (!$tgt.is(document.activeElement)) { | ||
$tgt.prop({tabIndex: -1}); | ||
$tgt[0].focus(); | ||
} | ||
} | ||
|
||
opts.afterScroll.call(opts.link, opts); | ||
}; | ||
|
||
$.smoothScroll = function(options, px) { | ||
if (options === 'options' && typeof px === 'object') { | ||
return $.extend(optionOverrides, px); | ||
} | ||
var opts, $scroller, speed, delta; | ||
var explicitOffset = getExplicitOffset(options); | ||
var scrollTargetOffset = {}; | ||
var scrollerOffset = 0; | ||
var offPos = 'offset'; | ||
var scrollDir = 'scrollTop'; | ||
var aniProps = {}; | ||
var aniOpts = {}; | ||
|
||
if (explicitOffset.px) { | ||
opts = $.extend({link: null}, $.fn.smoothScroll.defaults, optionOverrides); | ||
} else { | ||
opts = $.extend({link: null}, $.fn.smoothScroll.defaults, options || {}, optionOverrides); | ||
|
||
if (opts.scrollElement) { | ||
offPos = 'position'; | ||
|
||
if (opts.scrollElement.css('position') === 'static') { | ||
opts.scrollElement.css('position', 'relative'); | ||
} | ||
} | ||
|
||
if (px) { | ||
explicitOffset = getExplicitOffset(px); | ||
} | ||
} | ||
|
||
scrollDir = opts.direction === 'left' ? 'scrollLeft' : scrollDir; | ||
|
||
if (opts.scrollElement) { | ||
$scroller = opts.scrollElement; | ||
|
||
if (!explicitOffset.px && !(/^(?:HTML|BODY)$/).test($scroller[0].nodeName)) { | ||
scrollerOffset = $scroller[scrollDir](); | ||
} | ||
} else { | ||
$scroller = $('html, body').firstScrollable(opts.direction); | ||
} | ||
|
||
// beforeScroll callback function must fire before calculating offset | ||
opts.beforeScroll.call($scroller, opts); | ||
|
||
scrollTargetOffset = explicitOffset.px ? explicitOffset : { | ||
relative: '', | ||
px: ($(opts.scrollTarget)[offPos]() && $(opts.scrollTarget)[offPos]()[opts.direction]) || 0 | ||
}; | ||
|
||
aniProps[scrollDir] = scrollTargetOffset.relative + (scrollTargetOffset.px + scrollerOffset + opts.offset); | ||
|
||
speed = opts.speed; | ||
|
||
// automatically calculate the speed of the scroll based on distance / coefficient | ||
if (speed === 'auto') { | ||
|
||
// $scroller[scrollDir]() is position before scroll, aniProps[scrollDir] is position after | ||
// When delta is greater, speed will be greater. | ||
delta = Math.abs(aniProps[scrollDir] - $scroller[scrollDir]()); | ||
|
||
// Divide the delta by the coefficient | ||
speed = delta / opts.autoCoefficient; | ||
} | ||
|
||
aniOpts = { | ||
duration: speed, | ||
easing: opts.easing, | ||
complete: function() { | ||
onAfterScroll(opts); | ||
} | ||
}; | ||
|
||
if (opts.step) { | ||
aniOpts.step = opts.step; | ||
} | ||
|
||
if ($scroller.length) { | ||
$scroller.stop().animate(aniProps, aniOpts); | ||
} else { | ||
onAfterScroll(opts); | ||
} | ||
}; | ||
|
||
$.smoothScroll.version = version; | ||
$.smoothScroll.filterPath = function(string) { | ||
string = string || ''; | ||
|
||
return string | ||
.replace(/^\//, '') | ||
.replace(/(?:index|default).[a-zA-Z]{3,4}$/, '') | ||
.replace(/\/$/, ''); | ||
}; | ||
|
||
// default options | ||
$.fn.smoothScroll.defaults = defaults; | ||
|
||
})); |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we also credit Smooth Scroll (by including this header) in our existing LICENSE file?