|
|
@@ -28,3 +28,56 @@ function realTimeEditsDemo() {
|
|
|
nextFrame()
|
|
|
}
|
|
|
realTimeEditsDemo()
|
|
|
+
|
|
|
+function homepageAnimation() {
|
|
|
+ function createFrames(word, { buildTime, holdTime, breakTime }) {
|
|
|
+ const frames = []
|
|
|
+ let current = ''
|
|
|
+
|
|
|
+ // Build up the word
|
|
|
+ for (const char of word) {
|
|
|
+ current += char
|
|
|
+ frames.push({ before: current, time: buildTime })
|
|
|
+ }
|
|
|
+
|
|
|
+ // Hold the complete word
|
|
|
+ frames.push({ before: current, time: holdTime })
|
|
|
+
|
|
|
+ // Break down the word
|
|
|
+ for (let i = word.length - 1; i > 0; i--) {
|
|
|
+ current = word.substring(0, i)
|
|
|
+ frames.push({ before: current, time: breakTime })
|
|
|
+ }
|
|
|
+
|
|
|
+ // Add the final frame with an empty string
|
|
|
+ frames.push({ before: '', time: holdTime })
|
|
|
+
|
|
|
+ return frames
|
|
|
+ }
|
|
|
+
|
|
|
+ const opts = {
|
|
|
+ buildTime: 100,
|
|
|
+ holdTime: 1000,
|
|
|
+ breakTime: 100,
|
|
|
+ }
|
|
|
+
|
|
|
+ const frames = [
|
|
|
+ ...createFrames('article', opts),
|
|
|
+ ...createFrames('theses', opts),
|
|
|
+ ...createFrames('reports', opts),
|
|
|
+ ...createFrames('presentations', opts),
|
|
|
+ ...createFrames('anything', opts),
|
|
|
+ ]
|
|
|
+
|
|
|
+ let index = 0
|
|
|
+ function nextFrame() {
|
|
|
+ const frame = frames[index]
|
|
|
+ index = (index + 1) % frames.length
|
|
|
+
|
|
|
+ $('#home-animation-text').html(frame.before)
|
|
|
+ setTimeout(nextFrame, frame.time)
|
|
|
+ }
|
|
|
+
|
|
|
+ nextFrame()
|
|
|
+}
|
|
|
+homepageAnimation()
|