alongslide 0.9.9 → 0.9.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/alongslide.gemspec +1 -1
- data/app/assets/javascripts/alongslide/alongslide.coffee +21 -14
- data/app/assets/javascripts/alongslide/layout.coffee +79 -77
- data/app/assets/javascripts/alongslide/scrolling.coffee +50 -44
- data/app/assets/javascripts/alongslide/state.coffee +32 -0
- data/app/assets/javascripts/alongslide.coffee +7 -5
- data/app/assets/stylesheets/alongslide.sass +33 -33
- data/vendor/assets/javascripts/jquery.history.js +3292 -0
- metadata +4 -2
@@ -1,13 +1,13 @@
|
|
1
|
-
#
|
1
|
+
#
|
2
2
|
# alongslide/scrolling.coffee: Skrollr wrapper.
|
3
|
-
#
|
3
|
+
#
|
4
4
|
# Copyright 2013 Canopy Canopy Canopy, Inc.
|
5
5
|
# Authors Adam Florin & Anthony Tran
|
6
|
-
#
|
6
|
+
#
|
7
7
|
class Alongslide::Scrolling
|
8
8
|
|
9
9
|
# For applyTransition.
|
10
|
-
#
|
10
|
+
#
|
11
11
|
TRANSITIONS:
|
12
12
|
in: [-1..0]
|
13
13
|
out: [0..1]
|
@@ -23,7 +23,7 @@ class Alongslide::Scrolling
|
|
23
23
|
indexedTransitions: {}
|
24
24
|
|
25
25
|
# For desktop scroll throttling.
|
26
|
-
#
|
26
|
+
#
|
27
27
|
wheelHistory: []
|
28
28
|
lastAverageMagnitude: 0
|
29
29
|
ignoreScroll: false
|
@@ -31,6 +31,9 @@ class Alongslide::Scrolling
|
|
31
31
|
|
32
32
|
mouseDown: false
|
33
33
|
|
34
|
+
# browser history
|
35
|
+
stateData: {}
|
36
|
+
|
34
37
|
constructor: (options= {}) ->
|
35
38
|
{@frames} = options
|
36
39
|
|
@@ -39,7 +42,7 @@ class Alongslide::Scrolling
|
|
39
42
|
horizontal: true
|
40
43
|
edgeStrategy: 'set'
|
41
44
|
render: @snap
|
42
|
-
easing:
|
45
|
+
easing:
|
43
46
|
easeInOutQuad: (p) ->
|
44
47
|
if p < 0.5
|
45
48
|
Math.pow(p*2, 1.5) / 2
|
@@ -58,15 +61,15 @@ class Alongslide::Scrolling
|
|
58
61
|
@monitorMouse()
|
59
62
|
|
60
63
|
# Init skrollr once content data attributes are populated.
|
61
|
-
#
|
64
|
+
#
|
62
65
|
# @param - frameAspect - percentage horizontal offset (0.-1.)
|
63
66
|
# to factor in when applying scroll transitions
|
64
|
-
#
|
67
|
+
#
|
65
68
|
render: (@frameAspect, lastFramePosition) ->
|
66
69
|
@applyTransitions(lastFramePosition)
|
67
70
|
@skrollr.refresh()
|
68
71
|
|
69
|
-
# TODO: write API that injects functions
|
72
|
+
# TODO: write API that injects functions
|
70
73
|
# i.e. functionName(event, frame number, function) `('before', 3, animateTable)`
|
71
74
|
events: =>
|
72
75
|
@frames.on 'skrollrBefore', (e) -> e.target
|
@@ -74,11 +77,11 @@ class Alongslide::Scrolling
|
|
74
77
|
@frames.on 'skrollrAfter', (e) -> e.target
|
75
78
|
|
76
79
|
# Apply skrollr-style attrs based on Alongslide attrs.
|
77
|
-
#
|
80
|
+
#
|
78
81
|
#
|
79
82
|
applyTransitions: (lastFramePosition) ->
|
80
83
|
@indexedTransitions = {}
|
81
|
-
|
84
|
+
|
82
85
|
@frames.find('.frame').each (index, frameEl) =>
|
83
86
|
frame = $(frameEl)
|
84
87
|
|
@@ -111,23 +114,23 @@ class Alongslide::Scrolling
|
|
111
114
|
|
112
115
|
|
113
116
|
# Write skrollr-style scroll transitions into jQuery DOM element.
|
114
|
-
#
|
117
|
+
#
|
115
118
|
# Note that, since a frame may enter and exit with different transitions,
|
116
119
|
# the CSS snippets for each transition should zero out effects of other
|
117
120
|
# transitions. (That's why the "slide" transition sets opacity.)
|
118
|
-
#
|
121
|
+
#
|
119
122
|
# Also, frames may scroll over a shorter distance ('scale') if they
|
120
123
|
# are with horizontally pinned panels. The code below must be context-aware
|
121
124
|
# enough to know when to do a normal-length scroll and when to shorten it.
|
122
|
-
#
|
125
|
+
#
|
123
126
|
# @param frame: jQuery object wrapping new DOM frame
|
124
127
|
# @param options: hash containing:
|
125
128
|
# - in: percentage of total page width when frame should enter
|
126
129
|
# - out (optional): percentage of total page width when frame should exit
|
127
130
|
# - lastFramePosition: last position of any frame in DOM.
|
128
|
-
#
|
131
|
+
#
|
129
132
|
# @return frame
|
130
|
-
#
|
133
|
+
#
|
131
134
|
applyTransition: (frame, options = {}) ->
|
132
135
|
# fuzzy logic coefficient. see below.
|
133
136
|
A_LITTLE_MORE = 2
|
@@ -149,7 +152,7 @@ class Alongslide::Scrolling
|
|
149
152
|
|
150
153
|
# Set framescale for horizontal panels if there's another horizontal
|
151
154
|
# panel at the opposite edge before AND after the transition.
|
152
|
-
#
|
155
|
+
#
|
153
156
|
if Math.abs(direction) > 0
|
154
157
|
if frame.parent().hasClass('panels')
|
155
158
|
panelAlignment = alongslide.layout.panelAlignment(frame)
|
@@ -162,8 +165,8 @@ class Alongslide::Scrolling
|
|
162
165
|
frameScale = 0.495
|
163
166
|
|
164
167
|
# In certain cases, we need more than one keypoint per direction.
|
165
|
-
#
|
166
|
-
keypoints =
|
168
|
+
#
|
169
|
+
keypoints =
|
167
170
|
if frameScale?
|
168
171
|
# if frameScale is set, use it--but add an additional keypoint
|
169
172
|
# at 1.0 to make sure these closely-packed frames are out of
|
@@ -178,7 +181,7 @@ class Alongslide::Scrolling
|
|
178
181
|
# Double keypoints in order to keep the frame out of the visible
|
179
182
|
# window until absolutely necessary so that it doesn't sit atop
|
180
183
|
# the visible frame (and consume link clicks).
|
181
|
-
#
|
184
|
+
#
|
182
185
|
[ {magnitude: magnitude, scale: scale * A_LITTLE_MORE},
|
183
186
|
{magnitude: magnitude * 0.99, scale: scale}]
|
184
187
|
|
@@ -194,7 +197,7 @@ class Alongslide::Scrolling
|
|
194
197
|
[{magnitude: direction, scale: 1.0}]
|
195
198
|
|
196
199
|
# apply Skrollr transitions for each keypoint.
|
197
|
-
#
|
200
|
+
#
|
198
201
|
for keypoint in _.flatten(keypoints)
|
199
202
|
{magnitude, scale} = keypoint
|
200
203
|
position = options[transition] + magnitude
|
@@ -221,9 +224,9 @@ class Alongslide::Scrolling
|
|
221
224
|
|
222
225
|
# Check frame's CSS classes for transition cues in the format
|
223
226
|
# `*-in` or `*-out`.
|
224
|
-
#
|
227
|
+
#
|
225
228
|
# Currently defaults to "slide", and does no validation.
|
226
|
-
#
|
229
|
+
#
|
227
230
|
transitionOptions: (frame, options = {}) ->
|
228
231
|
frameClass = frame.get(0).className
|
229
232
|
|
@@ -236,9 +239,9 @@ class Alongslide::Scrolling
|
|
236
239
|
return options
|
237
240
|
|
238
241
|
# If we're in the refractory period, extinguish all scroll events immediately.
|
239
|
-
#
|
242
|
+
#
|
240
243
|
# Desktop only.
|
241
|
-
#
|
244
|
+
#
|
242
245
|
throttleScrollEvents: ->
|
243
246
|
$(window).on 'wheel mousewheel DOMMouseScroll MozMousePixelScroll', (e) =>
|
244
247
|
|
@@ -254,12 +257,12 @@ class Alongslide::Scrolling
|
|
254
257
|
e.preventDefault()
|
255
258
|
|
256
259
|
@lastAverageMagnitude = averageMagnitude
|
257
|
-
|
260
|
+
|
258
261
|
# To gauge scroll inertia on desktop, need to constantly populate our
|
259
262
|
# wheelHistory array with zeroes to mark time.
|
260
|
-
#
|
263
|
+
#
|
261
264
|
# Desktop only.
|
262
|
-
#
|
265
|
+
#
|
263
266
|
monitorScroll: ->
|
264
267
|
# zero handler
|
265
268
|
zeroHistory = => @lastAverageMagnitude = @updateWheelHistory(0)
|
@@ -269,11 +272,11 @@ class Alongslide::Scrolling
|
|
269
272
|
|
270
273
|
# repeat forever.
|
271
274
|
setInterval zeroHistory, 5
|
272
|
-
|
275
|
+
|
273
276
|
# Add the latest delta to the running history, enforce max length.
|
274
|
-
#
|
277
|
+
#
|
275
278
|
# Returns average after updating.
|
276
|
-
#
|
279
|
+
#
|
277
280
|
updateWheelHistory: (delta) ->
|
278
281
|
# add delta to history
|
279
282
|
@wheelHistory.unshift(delta)
|
@@ -287,7 +290,7 @@ class Alongslide::Scrolling
|
|
287
290
|
return Math.abs(average)
|
288
291
|
|
289
292
|
# Monitor mousedown state on desktop to separate scrollbar from mousewheel
|
290
|
-
#
|
293
|
+
#
|
291
294
|
monitorMouse: ->
|
292
295
|
$(document).mousedown =>
|
293
296
|
@mouseDown = true
|
@@ -297,17 +300,17 @@ class Alongslide::Scrolling
|
|
297
300
|
window.alongslide?.scrolling.scrollToPosition(requestedPosition)
|
298
301
|
|
299
302
|
# Scroll to requested frame.
|
300
|
-
#
|
303
|
+
#
|
301
304
|
# Don't scroll below zero, and don't do redundant scrolls.
|
302
|
-
#
|
305
|
+
#
|
303
306
|
# @param position - ALS position (= frame number). May be floating point!
|
304
|
-
#
|
307
|
+
#
|
305
308
|
# @option skrollr - caller may pass in skrollr if our variable hasn't been
|
306
309
|
# set yet
|
307
310
|
# @option force - if true, force a corrective scroll, even if we think we're
|
308
311
|
# at the position we think we're supposed to be at.
|
309
312
|
# @option scrollMethod - is this a "scroll", a "touch", or "keys"?
|
310
|
-
#
|
313
|
+
#
|
311
314
|
scrollToPosition: (requestedPosition, options = {}) =>
|
312
315
|
# use our stored copy of skrollr instance if available
|
313
316
|
skrollr = @skrollr || options.skrollr
|
@@ -348,13 +351,13 @@ class Alongslide::Scrolling
|
|
348
351
|
if (position * $(window).width()) isnt skrollr.getScrollPosition()
|
349
352
|
scrollTo = @currentPosition
|
350
353
|
duration = @FORCE_SLIDE_DURATION_MS
|
351
|
-
|
354
|
+
|
352
355
|
@doScroll(scrollTo, skrollr, duration, options) if scrollTo?
|
353
356
|
|
354
357
|
@lastRequestedPosition = requestedPosition
|
355
|
-
|
356
|
-
#
|
357
|
-
#
|
358
|
+
|
359
|
+
#
|
360
|
+
#
|
358
361
|
doScroll: (scrollTo, skrollr, duration, options) ->
|
359
362
|
scrollDelta = scrollTo - @currentPosition
|
360
363
|
@currentPosition = scrollTo
|
@@ -368,7 +371,10 @@ class Alongslide::Scrolling
|
|
368
371
|
skrollr.animateTo scrollTo * $(window).width(),
|
369
372
|
duration: duration
|
370
373
|
easing: 'easeOutQuad'
|
371
|
-
done: (skrollr)
|
374
|
+
done: (skrollr) =>
|
375
|
+
@stateData =
|
376
|
+
index: @currentPosition
|
377
|
+
alongslide.state.update(@stateData)
|
372
378
|
|
373
379
|
# For mobile, stage/unstage frames after transition
|
374
380
|
if @skrollr.isMobile()
|
@@ -388,11 +394,11 @@ class Alongslide::Scrolling
|
|
388
394
|
|
389
395
|
# Snap-to-content scrolling, implemented as a skrollr callback, called after
|
390
396
|
# each frame in the animation loop.
|
391
|
-
#
|
397
|
+
#
|
392
398
|
# Bias the scroll so that it moves in the same direction as the user's input
|
393
399
|
# (i.e., use floor()/ceil() rather than round(), so that scroll never
|
394
400
|
# snaps BACK, which can feel disheartening as a user experience).
|
395
|
-
#
|
401
|
+
#
|
396
402
|
snap: (info) ->
|
397
403
|
|
398
404
|
# don't do anything if skrollr is animating
|
@@ -410,7 +416,7 @@ class Alongslide::Scrolling
|
|
410
416
|
|
411
417
|
# Listen to left/right arrow (unless modifier keys are pressed),
|
412
418
|
# and scroll accordingly.
|
413
|
-
#
|
419
|
+
#
|
414
420
|
arrowKeys: ->
|
415
421
|
$(document).keydown (event) =>
|
416
422
|
if event.altKey or event.shiftKey or event.ctrlKey or event.metaKey
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#
|
2
|
+
# state.coffee: update browser history
|
3
|
+
#
|
4
|
+
# Copyright 2013 Canopy Canopy Canopy, Inc.
|
5
|
+
#
|
6
|
+
class Alongslide::State
|
7
|
+
|
8
|
+
panelNames : {}
|
9
|
+
documentTitle: ''
|
10
|
+
hash : '#'
|
11
|
+
|
12
|
+
constructor: (options = {}) ->
|
13
|
+
History = window.History
|
14
|
+
if !History.enabled then return false
|
15
|
+
@documentTitle = document.getElementsByTagName('title')[0].innerHTML
|
16
|
+
@panelNames = options.panelNames
|
17
|
+
|
18
|
+
rewindStateIndex:(state) ->
|
19
|
+
state.index -= 1
|
20
|
+
@update(state);
|
21
|
+
|
22
|
+
update:(state)->
|
23
|
+
if @panelNames[state.index]
|
24
|
+
History.replaceState null, @documentTitle, @hash + @panelNames[state.index]
|
25
|
+
pageData =
|
26
|
+
index : state.index
|
27
|
+
hash : @panelNames[state.index]
|
28
|
+
$(document).triggerHandler 'alongslide.pagechange', pageData
|
29
|
+
else if !@panelNames[state.index] and state.index > -1
|
30
|
+
@rewindStateIndex(state)
|
31
|
+
else if state.index <= -1
|
32
|
+
return
|
@@ -1,13 +1,14 @@
|
|
1
|
-
#
|
1
|
+
#
|
2
2
|
# alongslide.js: Require Alongslide libraries.
|
3
|
-
#
|
3
|
+
#
|
4
4
|
# Vendor
|
5
5
|
#= require regionFlow
|
6
6
|
#= require skrollr
|
7
7
|
#= require tether
|
8
8
|
#= require prefix
|
9
9
|
#= require jquery.fitvids
|
10
|
-
|
10
|
+
#= require jquery.history
|
11
|
+
#
|
11
12
|
# Utility
|
12
13
|
#= require ./styles
|
13
14
|
#= require ./fixedAspect
|
@@ -17,7 +18,8 @@
|
|
17
18
|
#= require alongslide/parser
|
18
19
|
#= require alongslide/layout
|
19
20
|
#= require alongslide/scrolling
|
20
|
-
|
21
|
+
#= require alongslide/state
|
22
|
+
#
|
21
23
|
# Copyright 2013 Canopy Canopy Canopy, Inc.
|
22
24
|
# Authors Adam Florin & Anthony Tran
|
23
|
-
#
|
25
|
+
#
|
@@ -2,11 +2,11 @@
|
|
2
2
|
// alongslide.sass: Set up CSS Regions and basic scrolling mechanism.
|
3
3
|
//
|
4
4
|
// Copyright 2013 Canopy Canopy Canopy, Inc.
|
5
|
-
//
|
5
|
+
//
|
6
6
|
|
7
|
-
//
|
7
|
+
//
|
8
8
|
// FIXED pixel-based values from comps.
|
9
|
-
//
|
9
|
+
//
|
10
10
|
$fixed-frame-width: 980px
|
11
11
|
$fixed-frame-height: 612.5px
|
12
12
|
|
@@ -31,9 +31,9 @@ $fixed-three-column-width: fixed-width-in-bars($wide: 5, $narrow: 6)
|
|
31
31
|
$fixed-2-column-inner-margin: fixed-width-in-bars($wide: 1, $narrow: 2)
|
32
32
|
$fixed-3-column-inner-margin: fixed-width-in-bars($wide: 1, $narrow: 0)
|
33
33
|
|
34
|
-
//
|
34
|
+
//
|
35
35
|
// PERCENTAGE-based values based on fixed values above
|
36
|
-
//
|
36
|
+
//
|
37
37
|
$full-bleed: 100%
|
38
38
|
$outer-margin-width: percentage($fixed-column-outer-margin / $fixed-frame-width)
|
39
39
|
$outer-margin-height: percentage($fixed-column-outer-margin / $fixed-frame-height)
|
@@ -43,23 +43,23 @@ $vertical-grid-unit: percentage($fixed-vertical-grid-unit / $fixed-frame-height)
|
|
43
43
|
$width-2-column: ($full-bleed - 2 * $outer-margin-width - $inner-margin-2-column) / 2
|
44
44
|
$width-3-column: ($full-bleed - 2 * $outer-margin-width - 2 * $inner-margin-3-column) / 3
|
45
45
|
|
46
|
-
$white-bg: #
|
46
|
+
$white-bg: #ffffff
|
47
47
|
|
48
48
|
|
49
49
|
// skrollr elements must all be fixed.
|
50
|
-
//
|
50
|
+
//
|
51
51
|
@mixin scrollable
|
52
52
|
position: fixed
|
53
53
|
&.unstaged
|
54
54
|
position: static
|
55
55
|
|
56
56
|
// Hide Alongslide directives.
|
57
|
-
//
|
57
|
+
//
|
58
58
|
.alongslide
|
59
59
|
display: none
|
60
60
|
|
61
61
|
// Horizontally-scrolling content viewer.
|
62
|
-
//
|
62
|
+
//
|
63
63
|
#frames
|
64
64
|
height: $full-bleed
|
65
65
|
background-color: $white-bg
|
@@ -71,29 +71,29 @@ $white-bg: #fbfbfb
|
|
71
71
|
line-height: 1em
|
72
72
|
|
73
73
|
// One frame is one screen's worth.
|
74
|
-
//
|
74
|
+
//
|
75
75
|
// Panels, flow, backgrounds (front-to-back order) all contain frames.
|
76
|
-
//
|
76
|
+
//
|
77
77
|
.frame
|
78
78
|
width: $full-bleed
|
79
79
|
height: $full-bleed
|
80
80
|
@include scrollable
|
81
81
|
|
82
82
|
// Columns
|
83
|
-
//
|
83
|
+
//
|
84
84
|
// Flowing text laid out by CSS Regions.
|
85
|
-
//
|
85
|
+
//
|
86
86
|
// Column dimensions are all defined in percentages. FixedAspect then overwites
|
87
87
|
// the dimensions of `#frames > .flow > .frame`, and the contained columns
|
88
88
|
// fit accordingly.
|
89
|
-
//
|
89
|
+
//
|
90
90
|
// Contrast with what FixedAspect does with panels below.
|
91
|
-
//
|
91
|
+
//
|
92
92
|
.flow
|
93
93
|
.frame
|
94
94
|
|
95
95
|
// One text column
|
96
|
-
//
|
96
|
+
//
|
97
97
|
.column
|
98
98
|
width: $width-2-column
|
99
99
|
height: 45 * $vertical-grid-unit
|
@@ -107,17 +107,17 @@ $white-bg: #fbfbfb
|
|
107
107
|
text-indent: 0 !important
|
108
108
|
|
109
109
|
// Left/right columns
|
110
|
-
//
|
110
|
+
//
|
111
111
|
&:nth-child(1)
|
112
112
|
left: $outer-margin-width
|
113
113
|
&:nth-child(2)
|
114
114
|
right: $outer-margin-width
|
115
115
|
|
116
116
|
// With pinned panel: top/bottom
|
117
|
-
//
|
117
|
+
//
|
118
118
|
// All column values assume 'half' size by default and treat
|
119
119
|
// 'one-third' and 'two-thirds' as overwrites.
|
120
|
-
//
|
120
|
+
//
|
121
121
|
&.with-panel-pinned-bottom
|
122
122
|
.column
|
123
123
|
height: 19 * $vertical-grid-unit
|
@@ -138,7 +138,7 @@ $white-bg: #fbfbfb
|
|
138
138
|
height: 11 * $vertical-grid-unit
|
139
139
|
|
140
140
|
// With pinned panel: left/right
|
141
|
-
//
|
141
|
+
//
|
142
142
|
&.with-panel-pinned-left, &.with-panel-pinned-right
|
143
143
|
.column
|
144
144
|
width: $width-2-column
|
@@ -156,7 +156,7 @@ $white-bg: #fbfbfb
|
|
156
156
|
left: $outer-margin-width + 2 * ($width-3-column + $inner-margin-3-column)
|
157
157
|
|
158
158
|
// Three column layout
|
159
|
-
//
|
159
|
+
//
|
160
160
|
&.three-columns
|
161
161
|
.column
|
162
162
|
width: $width-3-column
|
@@ -180,21 +180,21 @@ $white-bg: #fbfbfb
|
|
180
180
|
left: $outer-margin-width + 2 * ($width-3-column + $inner-margin-3-column)
|
181
181
|
|
182
182
|
// Panels
|
183
|
-
//
|
183
|
+
//
|
184
184
|
// Contrary to columns above, all values are defined in pixels, which
|
185
185
|
// FixedAspect uses to re-apply percentages in JS. It then overwrites
|
186
186
|
// the below pixel-based values with percentage values based on aspect.
|
187
|
-
//
|
187
|
+
//
|
188
188
|
// The reason is that JS can't access the CSS percentage values anyway,
|
189
189
|
// so, to maintain floating point precision, we may as well do the
|
190
190
|
// math in JS--rather than go from pixels to percentages in SASS, and then
|
191
191
|
// re-derive the percentages in JS, which will be rounded to integers
|
192
192
|
// (and therefore exhibit sampling inaccuracy).
|
193
|
-
//
|
193
|
+
//
|
194
194
|
// The rule is:
|
195
195
|
// - `.panel` is the content area, defined in fixed pixel widths
|
196
196
|
// - `.panel .contents` is relative to the content area
|
197
|
-
//
|
197
|
+
//
|
198
198
|
.panels
|
199
199
|
.panel
|
200
200
|
width: $fixed-frame-width
|
@@ -212,7 +212,7 @@ $white-bg: #fbfbfb
|
|
212
212
|
overflow: visible
|
213
213
|
|
214
214
|
// Class for inner padding. This one _is_ percentage-based.
|
215
|
-
//
|
215
|
+
//
|
216
216
|
.inner
|
217
217
|
width: 100%
|
218
218
|
height: 100%
|
@@ -220,15 +220,15 @@ $white-bg: #fbfbfb
|
|
220
220
|
z-index: 101
|
221
221
|
|
222
222
|
// Responsive images
|
223
|
-
img
|
223
|
+
img
|
224
224
|
max-width: 100%
|
225
225
|
height: auto
|
226
|
-
|
226
|
+
|
227
227
|
// Pinned
|
228
|
-
//
|
228
|
+
//
|
229
229
|
// As with columns, default size is 'half'.
|
230
230
|
// 'one-third' and 'two-thirds' overwrite.
|
231
|
-
//
|
231
|
+
//
|
232
232
|
&.pin
|
233
233
|
background-color: $white-bg
|
234
234
|
&.top
|
@@ -308,7 +308,7 @@ $white-bg: #fbfbfb
|
|
308
308
|
left: percentage($fixed-panel-margin-two-thirds / $fixed-panel-width-two-thirds)
|
309
309
|
|
310
310
|
// Section backgrounds
|
311
|
-
//
|
311
|
+
//
|
312
312
|
.backgrounds
|
313
313
|
.background
|
314
314
|
width: $full-bleed
|
@@ -345,7 +345,7 @@ $white-bg: #fbfbfb
|
|
345
345
|
margin-left: 1%
|
346
346
|
|
347
347
|
// DEBUG GRID
|
348
|
-
//
|
348
|
+
//
|
349
349
|
#als-debug-grid
|
350
350
|
position: fixed
|
351
351
|
width: 100%
|
@@ -432,7 +432,7 @@ $white-bg: #fbfbfb
|
|
432
432
|
top: 0
|
433
433
|
width: 100%
|
434
434
|
height: 100%
|
435
|
-
background: #
|
435
|
+
background: #ffffff
|
436
436
|
h1
|
437
437
|
font-size: 54px
|
438
438
|
line-height: 1em
|