├── day-4-eggstraterrestrial
├── dist
│ ├── script.js
│ ├── index.html
│ └── style.css
├── src
│ ├── script.js
│ └── index.pug
├── README.markdown
└── license.txt
├── day-3-egg-head-in-love
├── dist
│ ├── script.js
│ ├── index.html
│ └── style.css
├── src
│ ├── script.js
│ ├── index.pug
│ └── style.scss
├── README.markdown
└── license.txt
├── day-17-18-pokemon-friends
├── dist
│ ├── script.js
│ └── index.html
├── src
│ ├── script.js
│ └── index.html
├── README.markdown
└── license.txt
├── day-2-pokeball-go
├── dist
│ ├── script.js
│ └── index.html
├── src
│ ├── script.js
│ └── index.pug
├── README.markdown
└── license.txt
├── day-1-hello-css
├── dist
│ ├── script.js
│ ├── index.html
│ └── style.css
├── src
│ ├── script.js
│ ├── index.html
│ └── style.scss
├── README.markdown
└── license.txt
├── day-5-sun-blocked-solar-eclipse-explained
├── src
│ ├── script.js
│ └── index.pug
├── dist
│ ├── script.js
│ └── index.html
├── README.markdown
└── license.txt
├── day-13-14-super
├── README.markdown
├── license.txt
├── src
│ ├── index.html
│ └── style.scss
└── dist
│ ├── index.html
│ └── style.css
├── day-9-self-portrait-interactive
├── README.markdown
├── src
│ ├── index.html
│ └── style.scss
├── dist
│ ├── index.html
│ └── style.css
└── license.txt
├── day-7-8-beauty-and-the-beast-s-enchanted-rose
├── README.markdown
├── src
│ ├── index.html
│ └── style.scss
├── dist
│ ├── index.html
│ └── style.css
└── license.txt
├── day-10-11-coder
├── README.markdown
├── license.txt
├── src
│ ├── index.html
│ └── style.sass
└── dist
│ └── index.html
├── day-6-are-you-gonna-eat-that-interactive-pen
├── README.markdown
├── src
│ ├── index.pug
│ ├── script.js
│ └── style.scss
├── license.txt
└── dist
│ ├── index.html
│ ├── script.js
│ └── style.css
├── day-15-16-under-kamek-s-spell
├── README.markdown
├── src
│ ├── index.pug
│ └── style.scss
├── license.txt
└── dist
│ └── index.html
├── day-19-25-pokemon-amie
├── README.markdown
├── license.txt
├── dist
│ ├── script.js
│ └── index.html
└── src
│ ├── script.js
│ └── index.html
├── LICENSE
└── README.md
/day-4-eggstraterrestrial/dist/script.js:
--------------------------------------------------------------------------------
1 | //Inspiration: https://codepen.io/maaarj/pen/KWNLaO
--------------------------------------------------------------------------------
/day-4-eggstraterrestrial/src/script.js:
--------------------------------------------------------------------------------
1 | //Inspiration: https://codepen.io/maaarj/pen/KWNLaO
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/dist/script.js:
--------------------------------------------------------------------------------
1 | /* Thanks to the following: https://codepen.io/hmps/pen/Cfjzh */
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/src/script.js:
--------------------------------------------------------------------------------
1 | /* Thanks to the following: https://codepen.io/hmps/pen/Cfjzh */
--------------------------------------------------------------------------------
/day-17-18-pokemon-friends/dist/script.js:
--------------------------------------------------------------------------------
1 | // Reference image: https://twitter.com/BulbaGanda/status/1163627358303264768
--------------------------------------------------------------------------------
/day-17-18-pokemon-friends/src/script.js:
--------------------------------------------------------------------------------
1 | // Reference image: https://twitter.com/BulbaGanda/status/1163627358303264768
--------------------------------------------------------------------------------
/day-2-pokeball-go/dist/script.js:
--------------------------------------------------------------------------------
1 | /* Design Credits:
2 | Dribble Shot: https://dribbble.com/shots/2842897-Pokeball
3 |
4 | */
--------------------------------------------------------------------------------
/day-2-pokeball-go/src/script.js:
--------------------------------------------------------------------------------
1 | /* Design Credits:
2 | Dribble Shot: https://dribbble.com/shots/2842897-Pokeball
3 |
4 | */
5 |
6 |
--------------------------------------------------------------------------------
/day-1-hello-css/dist/script.js:
--------------------------------------------------------------------------------
1 | /*Thanks to the following for help"
2 | https://codepen.io/maaarj/pen/mPeEyK
3 | https://codepen.io/dead_pixel/pen/pJeFx
4 | */
--------------------------------------------------------------------------------
/day-1-hello-css/src/script.js:
--------------------------------------------------------------------------------
1 | /*Thanks to the following for help"
2 | https://codepen.io/maaarj/pen/mPeEyK
3 | https://codepen.io/dead_pixel/pen/pJeFx
4 | */
--------------------------------------------------------------------------------
/day-5-sun-blocked-solar-eclipse-explained/src/script.js:
--------------------------------------------------------------------------------
1 | // Thanks to the following pens:
2 | //https://codepen.io/oliviale/pen/qLYNbE
3 | //https://codepen.io/juliepark/pen/JpxbjQ
4 | //https://codepen.io/Hackroro/pen/ByrKLZ
--------------------------------------------------------------------------------
/day-5-sun-blocked-solar-eclipse-explained/dist/script.js:
--------------------------------------------------------------------------------
1 | // Thanks to the following pens:
2 | //https://codepen.io/oliviale/pen/qLYNbE
3 | //https://codepen.io/juliepark/pen/JpxbjQ
4 | //https://codepen.io/Hackroro/pen/ByrKLZ
--------------------------------------------------------------------------------
/day-4-eggstraterrestrial/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 4: Eggstraterrestrial
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/LqLRjB](https://codepen.io/acupoftee/pen/LqLRjB).
3 |
4 | Egg Head in Space! 🍳💫
5 |
--------------------------------------------------------------------------------
/day-13-14-super/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 13/14: Super!
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/ydZdvr](https://codepen.io/acupoftee/pen/ydZdvr).
3 |
4 | She protecc, and she's cute and happy as hecc 💕✨
5 |
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 3: Egg Head In Love
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/aXJNmb](https://codepen.io/acupoftee/pen/aXJNmb).
3 |
4 | Pure CSS lovers 🍳 💖👻. Design Credits: https://dribbble.com/shots/2624995-Ghost-in-love
5 |
--------------------------------------------------------------------------------
/day-9-self-portrait-interactive/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 9: Self Portrait (Interactive)
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/mYGNbj](https://codepen.io/acupoftee/pen/mYGNbj).
3 |
4 | Worked on a new avatar for my social media profiles. Hover over for a nice surprise!
5 |
--------------------------------------------------------------------------------
/day-7-8-beauty-and-the-beast-s-enchanted-rose/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 7/8: Beauty and the Beast's Enchanted Rose
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/dEYLWg](https://codepen.io/acupoftee/pen/dEYLWg).
3 |
4 | Definitely my fav Disney movie to date 🥀 Inspired by https://codepen.io/maaarj/pen/gmNeXd
5 |
--------------------------------------------------------------------------------
/day-1-hello-css/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 1: Hello CSS
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/daoqOg](https://codepen.io/acupoftee/pen/daoqOg).
3 |
4 | Browsed some projects on CodePen and Dribbble for inspiration, and then decided to build off of the projects I came across to get a feel for CSS animations
5 |
--------------------------------------------------------------------------------
/day-4-eggstraterrestrial/src/index.pug:
--------------------------------------------------------------------------------
1 | .container
2 | .egg
3 | - var legs = 0
4 | ul
5 | while legs < 7
6 | -legs++
7 | li
8 | .face
9 | .eyes
10 | .smile
11 | .cheeks
12 | .shine
13 | .stars
14 | - var star = 0
15 | while star < 20
16 | -star++
17 | span(class="star")
--------------------------------------------------------------------------------
/day-10-11-coder/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 10/11: Coder
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/Yowmwm](https://codepen.io/acupoftee/pen/Yowmwm).
3 |
4 | I started my coding bootcamp this week and I've learned so much! This will be all that I do for the next 3 months and I'm looking forward to becoming a better software engineer through this 💕 (watch for a day and night cycle)
5 |
--------------------------------------------------------------------------------
/day-2-pokeball-go/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 2: Pokeball, Go!
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/pGgrgo](https://codepen.io/acupoftee/pen/pGgrgo).
3 |
4 | Originally I wanted to simply do a rolling Pokeball to get the hang of keyframes, but then my imagination ran wild after I was inspired by this Dribbble shot of a Pokeball: https://dribbble.com/shots/2842897-Pokeball
5 |
--------------------------------------------------------------------------------
/day-5-sun-blocked-solar-eclipse-explained/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 5: Sun Blocked: Solar Eclipse Explained
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/ErooQj](https://codepen.io/acupoftee/pen/ErooQj).
3 |
4 | This is totally how an eclipse happens 🌎❤️☀️. Originally made for the February 2019 CodePen Challenge. Design credits: https://dribbble.com/shots/3748620-Eclipse-Explained
5 |
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 6: Are You Gonna Eat That? (Interactive pen)
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/ErOYRR](https://codepen.io/acupoftee/pen/ErOYRR).
3 |
4 | An interactive pen of my pizza obsession 🍕🥰. That and I also wanted to try to draw an avatar that's inspired by Gigantic's work! (Pen inspired by https://codepen.io/maaarj/pen/vmYPqm)
5 |
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/src/index.pug:
--------------------------------------------------------------------------------
1 | .container
2 | .egg
3 | - var legs = 0
4 | ul
5 | while legs < 7
6 | -legs++
7 | li
8 | .face
9 | .eyes
10 | .smile
11 | .cheeks
12 | .shine
13 | .shadow(id="egg-shadow")
14 | .heart
15 | .light
16 | .ghost
17 | - var legs = 0
18 | ul
19 | while legs < 9
20 | -legs++
21 | li
22 | .face
23 | .eyes
24 | .smile
25 | .cheeks
26 | .shadow(id="ghost-shadow")
27 |
--------------------------------------------------------------------------------
/day-1-hello-css/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Hello World
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/day-5-sun-blocked-solar-eclipse-explained/src/index.pug:
--------------------------------------------------------------------------------
1 | .container
2 | .earth
3 | -for(var i = 0; i < 7; i++)
4 | .countries
5 | .eyes
6 | .eyes.opened
7 | .eyes.closed
8 | .tear
9 | .excited !
10 | .shadow
11 | .moon
12 | -for(var i = 0; i < 5; i++)
13 | .craters
14 | .eyes
15 | .sun
16 | .left-eye
17 | .left-eyelash
18 | .right-eye
19 | .right-eyelash
20 | .rays
21 | -for(var i = 0; i < 10; i++)
22 | .beam
23 | .stars1
24 | .stars2
25 | .stars3
--------------------------------------------------------------------------------
/day-15-16-under-kamek-s-spell/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 15/16: Under Kamek's Spell
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/mdbqQjB](https://codepen.io/acupoftee/pen/mdbqQjB).
3 |
4 | In honor of today's Nintendo Direct announcement of my all time favorite game Yoshi's Island being available on the Switch, here's an animation featuring my favorite Nintendo villain Kamek! I used to obsess over the animations and effects as a kid and the idea came about while I was replaying Yoshi's Island last weekend
5 |
6 |
7 | Made with help from https://codepen.io/simeydotme/pen/PrQKgo
8 |
--------------------------------------------------------------------------------
/day-17-18-pokemon-friends/README.markdown:
--------------------------------------------------------------------------------
1 | # Day 17/18: Pokemon Friends
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/YzzzYxj](https://codepen.io/acupoftee/pen/YzzzYxj).
3 |
4 | Pikachu comforts Bulbasaur in the Mysterious Garden 🌱❤️This is my favorite Pokemon episode because not only does it feature my favorite Pokemon Bulbasaur, but because I love the character development it's put through in this episode. Also I loved the Mysterious Garden growing up. I was obsessed with the sparkles ✨ Reference image: https://twitter.com/BulbaGanda/status/1163627358303264768
5 |
6 | Process video: https://youtu.be/u88wXh66XYs
7 |
--------------------------------------------------------------------------------
/day-15-16-under-kamek-s-spell/src/index.pug:
--------------------------------------------------------------------------------
1 | mixin makeItems(itemCount, trail=false)
2 | -var i = 0
3 | while i < itemCount
4 | if trail
5 | li.trail
6 | .sparkles
7 | else
8 | li
9 | -i++
10 |
11 | .container
12 | ul.stars
13 | +makeItems(60)
14 | .cloud
15 | .cloud
16 | .magic-mountain
17 | .eyes
18 | ul.hills.back-hills
19 | +makeItems(5)
20 | ul.hills.mid-hills
21 | +makeItems(7)
22 | ul.hills.front-hills
23 | +makeItems(10)
24 | ul.spell-trail
25 | +makeItems(10, true)
26 | .kamek
27 | img(src="https://i.imgur.com/QNdo6Yk.png" alt="Kamek" title="Kamek")
--------------------------------------------------------------------------------
/day-7-8-beauty-and-the-beast-s-enchanted-rose/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
11 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
32 |
--------------------------------------------------------------------------------
/day-9-self-portrait-interactive/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
23 |
--------------------------------------------------------------------------------
/day-1-hello-css/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 1: Hello CSS
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
Hello World
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/day-2-pokeball-go/src/index.pug:
--------------------------------------------------------------------------------
1 | //- link(rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous")
2 | .container
3 | .circle-container
4 | .background-grass
5 | - var blades = 0
6 | while blades < 14
7 | - blades++
8 | .background-blade
9 | .middle-grass
10 | - var blades = 0
11 | while blades < 15
12 | - blades++
13 | .middle-blade
14 | .foreground-grass
15 | - var blades = 0
16 | while blades < 18
17 | - blades++
18 | .foreground-blade
19 | .center.pokeball.animate
20 | .pokeball-button
21 | .pokeball-ring
22 | .pokeball-shine
23 | .pokeball-shine-small
24 | .stars1
25 | .stars2
26 | .stars3
27 | .shooting-stars
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/src/index.pug:
--------------------------------------------------------------------------------
1 | .container
2 | .me
3 | .hair
4 | .first-row
5 | -for(var i = 0; i < 5; i++)
6 | span
7 | .second-row
8 | -for(var i = 0; i < 5; i++)
9 | span
10 | .third-row
11 | -for(var i = 0; i < 5; i++)
12 | span
13 | .fourth-row
14 | -for(var i = 0; i < 5; i++)
15 | span
16 | .fifth-row
17 | -for(var i = 0; i < 5; i++)
18 | span
19 | .shirt
20 | .neck
21 | .head
22 | .bangs
23 | -for(var i = 0; i < 3; i++)
24 | span
25 | .bangs-upper
26 | -for(var i = 0; i < 3; i++)
27 | span
28 | .face
29 | .glasses
30 | .left
31 | .shine
32 | .right
33 | .shine
34 | .eyes
35 | p are you gonna eat that?
36 |
37 |
--------------------------------------------------------------------------------
/day-19-25-pokemon-amie/README.markdown:
--------------------------------------------------------------------------------
1 | # Pokemon Amie ❤️ (Hover over Eevee and hold left click to pet it)
2 | A Pen created at CodePen.io. Original URL: [https://codepen.io/acupoftee/pen/zYYKRoX](https://codepen.io/acupoftee/pen/zYYKRoX).
3 |
4 | This is the minimum viable product (MVP) for a Pokemon therapy pet app! Eevee's one of my favorite Pokemon and I've always enjoyed playing with it in Pokemon X. It was surprisingly therapeutic and helped tremendously during busy or tough days. Thus I wanted to create a similar therapeutic experience for myself, and anyone who's in need of a cute therapy Pokemon. I'll definitely be coming back here on days when I feel in need of a therapy pet.
5 |
6 | Future goals for this include a responsibe/mobile friendly version, audio, and cosmetics.
7 |
8 | If you're in need of an adorable distraction, Eevee's got you covered! Hover over it and hold down the left mouse button to pet it and show it some love
9 |
--------------------------------------------------------------------------------
/day-7-8-beauty-and-the-beast-s-enchanted-rose/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 7/8: Beauty and the Beast's Enchanted Rose
6 |
7 |
8 |
9 |
10 |
11 |
12 |
15 |
21 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/day-9-self-portrait-interactive/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 9: Self Portrait (Interactive)
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
19 |
20 |
21 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/day-1-hello-css/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/daoqOg)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-10-11-coder/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/Yowmwm)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-13-14-super/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/ydZdvr)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-2-pokeball-go/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/pGgrgo)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-19-25-pokemon-amie/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/zYYKRoX)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/aXJNmb)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-4-eggstraterrestrial/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/LqLRjB)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Tee
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/day-15-16-under-kamek-s-spell/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/mdbqQjB)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-17-18-pokemon-friends/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/YzzzYxj)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-9-self-portrait-interactive/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/mYGNbj)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-5-sun-blocked-solar-eclipse-explained/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/ErooQj)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/ErOYRR)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-7-8-beauty-and-the-beast-s-enchanted-rose/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 by Tee Diang (https://codepen.io/acupoftee/pen/dEYLWg)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/day-4-eggstraterrestrial/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 4: Eggstraterrestrial
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 3: Egg Head In Love
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
27 |
28 |
29 |
30 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 6: Are You Gonna Eat That? (Interactive pen)
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
43 |
44 |
45 |
are you gonna eat that?
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/day-5-sun-blocked-solar-eclipse-explained/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 5: Sun Blocked: Solar Eclipse Explained
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
!
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
40 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/day-19-25-pokemon-amie/dist/script.js:
--------------------------------------------------------------------------------
1 | const openEyes = document.querySelector('.eyes')
2 | const blinkedEyes = document.querySelector('.blink')
3 | const closedEyes = document.querySelector('.closed')
4 | const happyBubble = document.querySelector('.happy')
5 | const hearts = document.querySelector('.hearts')
6 | const mouth = document.querySelector('.mouth')
7 |
8 | // Event classes
9 | const head = document.querySelector('.head')
10 | const legs = document.querySelectorAll('.leg')
11 | const chest = document.querySelector('.chest')
12 | const ears = document.querySelectorAll('.ear')
13 |
14 | if (isMobile()) {
15 | document.querySelector('.mobile-block').style.display = 'flex'
16 | document.querySelector('.container').style.display = 'none'
17 | }
18 |
19 | head.addEventListener('mousedown', enableAnimations)
20 | chest.addEventListener('mousedown', enableAnimations)
21 |
22 | legs.forEach(leg => {
23 | leg.addEventListener('mousedown', enableAnimations)
24 | })
25 |
26 | ears.forEach(ear => {
27 | ear.addEventListener('mousedown', enableAnimations)
28 | })
29 |
30 | // https://stackoverflow.com/questions/17436760/detect-mouseup-outside-of-mousedown-element
31 | document.addEventListener('mouseup', disableAnimations)
32 |
33 | // Original implementation included the use of .toggle.
34 | // Because we know when we want animations to be enabled or disabled, this approach is guaranteed to reveal and conceal specific elements.
35 | function enableAnimations () {
36 | openEyes.classList.remove('is-visible')
37 | blinkedEyes.classList.remove('is-visible')
38 | closedEyes.classList.add('is-visible')
39 | hearts.classList.add('is-visible')
40 | mouth.classList.add('is-visible')
41 | happyBubble.classList.remove('after-pet')
42 | }
43 |
44 | function disableAnimations () {
45 | openEyes.classList.add('is-visible')
46 | blinkedEyes.classList.add('is-visible')
47 | closedEyes.classList.remove('is-visible')
48 | hearts.classList.remove('is-visible')
49 | mouth.classList.remove('is-visible')
50 | happyBubble.classList.add('after-pet')
51 | }
52 |
53 | function isMobile() {
54 | return typeof window.orientation !== 'undefined'
55 | }
--------------------------------------------------------------------------------
/day-19-25-pokemon-amie/src/script.js:
--------------------------------------------------------------------------------
1 | const openEyes = document.querySelector('.eyes')
2 | const blinkedEyes = document.querySelector('.blink')
3 | const closedEyes = document.querySelector('.closed')
4 | const happyBubble = document.querySelector('.happy')
5 | const hearts = document.querySelector('.hearts')
6 | const mouth = document.querySelector('.mouth')
7 |
8 | // Event classes
9 | const head = document.querySelector('.head')
10 | const legs = document.querySelectorAll('.leg')
11 | const chest = document.querySelector('.chest')
12 | const ears = document.querySelectorAll('.ear')
13 |
14 | if (isMobile()) {
15 | document.querySelector('.mobile-block').style.display = 'flex'
16 | document.querySelector('.container').style.display = 'none'
17 | }
18 |
19 | head.addEventListener('mousedown', enableAnimations)
20 | chest.addEventListener('mousedown', enableAnimations)
21 |
22 | legs.forEach(leg => {
23 | leg.addEventListener('mousedown', enableAnimations)
24 | })
25 |
26 | ears.forEach(ear => {
27 | ear.addEventListener('mousedown', enableAnimations)
28 | })
29 |
30 | // https://stackoverflow.com/questions/17436760/detect-mouseup-outside-of-mousedown-element
31 | document.addEventListener('mouseup', disableAnimations)
32 |
33 | // Original implementation included the use of .toggle.
34 | // Because we know when we want animations to be enabled or disabled, this approach is guaranteed to reveal and conceal specific elements.
35 | function enableAnimations () {
36 | openEyes.classList.remove('is-visible')
37 | blinkedEyes.classList.remove('is-visible')
38 | closedEyes.classList.add('is-visible')
39 | hearts.classList.add('is-visible')
40 | mouth.classList.add('is-visible')
41 | happyBubble.classList.remove('after-pet')
42 | }
43 |
44 | function disableAnimations () {
45 | openEyes.classList.add('is-visible')
46 | blinkedEyes.classList.add('is-visible')
47 | closedEyes.classList.remove('is-visible')
48 | hearts.classList.remove('is-visible')
49 | mouth.classList.remove('is-visible')
50 | happyBubble.classList.add('after-pet')
51 | }
52 |
53 | function isMobile() {
54 | return typeof window.orientation !== 'undefined'
55 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
25 Days of CSS Animations
4 |
Code from my 25 Days of CSS Animations challenge on CodePen.
5 |
6 |
7 | ### ✨ About
8 | This year I spent 25 days practicing CSS with animations! This repo has the source code for
9 | each animation.
10 |
11 | ### 🤓 File Structure
12 | Here's what you'll find when visiting each animation folder:
13 |
14 | * `src`
15 | * Contains the original code as written on CodePen and Visual Studio Code.
16 | * `dist`
17 | * Contains code that's been translated for browsers by CodePen. Because web browsers only understand [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML), [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS), and [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript), and not the alternatives used in this challenge, this allows my original code to be understood and displayed on the web \o/
18 |
19 | ### 📋 Relevant Links
20 | * [DEV post](https://dev.to/acupoftee/25-days-of-css-animations-teaching-myself-css-through-motion-design-4l10)
21 | * [CodePen collection](https://codepen.io/collection/DBeLyg)
22 |
23 | ### 🎨 Animations
24 | * [Day 1: Hello CSS](day-1-hello-css/README.markdown)
25 | * [Day 2: Pokeball, Go!](day-2-pokeball-go/README.markdown)
26 | * [Day 3: Egghead in Love](day-3-egg-head-in-love/README.markdown)
27 | * [Day 4: Eggstraterrestrial](day-4-eggstraterrestrial/README.markdown)
28 | * [Day 5: Sun Blocked](day-5-sun-blocked-solar-eclipse-explained/README.markdown)
29 | * [Day 6: Are You Gonna Eat That?](day-6-are-you-gonna-eat-that-interactive-pen/README.markdown)
30 | * [Day 7/8: Enchanted Rose](day-7-8-beauty-and-the-beast-s-enchanted-rose/README.markdown)
31 | * [Day 9: Self Portrait](day-9-self-portrait-interactive/README.markdown)
32 | * [Day 10/11: Coder](day-10-11-coder/README.markdown)
33 | * [Day 12: Tic Tac Toe](https://github.com/acupoftee/tic-tac-toe)
34 | * [Day 13/14: Super!](day-13-14-super/README.markdown)
35 | * [Day 15/16: Under Kamek's Spell](day-15-16-under-kamek-s-spell/README.markdown)
36 | * [Day 17/18: Pokémon Friends](day-17-18-pokemon-friends/README.markdown)
37 | * [Day 19-25: Pokémon Amie](day-19-25-pokemon-amie/README.markdown)
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/day-13-14-super/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Day 13/14: Super!
10 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
38 |
39 |
42 |
43 |
44 |
45 |
46 |
47 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/day-10-11-coder/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Day 10: Coder
10 |
11 |
12 |
13 |
14 |
18 |
19 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/day-13-14-super/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 13/14: Super!
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | Day 13/14: Super!
20 |
21 |
22 |
23 |
24 |
25 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
48 |
49 |
52 |
53 |
54 |
55 |
56 |
57 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/day-10-11-coder/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 10/11: Coder
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | Day 10: Coder
20 |
21 |
22 |
23 |
24 |
28 |
29 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
--------------------------------------------------------------------------------
/day-2-pokeball-go/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 2: Pokeball, Go!
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/day-15-16-under-kamek-s-spell/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 15/16: Under Kamek's Spell
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
--------------------------------------------------------------------------------
/day-17-18-pokemon-friends/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/dist/script.js:
--------------------------------------------------------------------------------
1 | var directions = ["look-right", "look-left"];
2 | // from orignal implementation
3 | // var directions = ["look-right", "look-left", "look-down", "look-up", "look-bottom-right", "look-bottom-left", "look-top-right", "look-top-left"];
4 | function removeClasses() {
5 | for (var x = 0; x < directions.length; x++) {
6 | $(".head").removeClass(directions[x]);
7 | $(".hair").removeClass(directions[x]);
8 | $(".face").removeClass(directions[x]);
9 | $(".neck").removeClass(directions[x]);
10 | }
11 | }
12 | function direction(e) {
13 | //look left
14 | if (e.clientX <= (window.innerWidth / 2)) {
15 | removeClasses();
16 | $(".head").addClass("look-left");
17 | $(".hair").addClass("look-left");
18 | $(".face").addClass("look-left");
19 | $(".neck").addClass("look-left");
20 | }
21 |
22 | //look right
23 | if (e.clientX >= window.innerWidth - (window.innerWidth / 2)) {
24 | removeClasses();
25 | $(".head").addClass("look-right");
26 | $(".hair").addClass("look-right");
27 | $(".face").addClass("look-right");
28 | $(".neck").addClass("look-right");
29 | }
30 |
31 | //TODO: resolve afro lag
32 | // look down
33 | // if (e.clientY >= window.innerHeight - (window.innerHeight / 2.5)) {
34 | // removeClasses();
35 | // // $(".head").addClass("look-down");
36 | // // $(".hair").addClass("look-down");
37 | // $(".face").addClass("look-down");
38 | // //$(".neck").addClass("look-down");
39 | // }
40 |
41 | // //look up
42 | // if (e.clientY <= (window.innerHeight / 2.5)) {
43 | // removeClasses();
44 | // // $(".head").addClass("look-up");
45 | // // $(".hair").addClass("look-up");
46 | // $(".face").addClass("look-up");
47 | // //$(".neck").addClass("look-up");
48 | // }
49 | // //look bottom right
50 | // if(e.clientY >= (window.innerHeight - (window.innerHeight/2.5)) && e.clientX >= (window.innerWidth-(window.innerWidth/3))) {
51 | // removeClasses();
52 | // //$(".head").addClass("look-bottom-right");
53 | // $(".face").addClass("look-bottom-right");
54 | // // $(".neck").addClass("look-bottom-right");
55 | // // $(".hair").addClass("look-bottom-right");
56 | // }
57 |
58 | // // look bottom left
59 | // if(e.clientY >= (window.innerHeight - (window.innerHeight/2.5)) && e.clientX <= (window.innerWidth/3)) {
60 | // removeClasses();
61 | // //$(".head").addClass("look-bottom-left");
62 | // $(".face").addClass("look-bottom-left");
63 | // //$(".neck").addClass("look-bottom-left");
64 | // //$(".hair").addClass("look-bottom-left");
65 | // }
66 |
67 | // // look top right
68 | // if(e.clientY <= (window.innerHeight/2.5) && e.clientX >= (window.innerWidth - (window.innerWidth/3))) {
69 | // removeClasses();
70 | // //$(".head").addClass("look-top-right");
71 | // $(".face").addClass("look-top-right");
72 | // //$(".neck").addClass("look-top-right");
73 | // //$(".hair").addClass("look-top-right");
74 | // }
75 | // if( e.clientY <= ((window.innerHeight/2.5)) && e.clientX <= window.innerWidth/3) {
76 | // //$(".head").addClass("look-top-left");
77 | // $(".face").addClass("look-top-left");
78 | // //$(".neck").addClass("look-top-left");
79 | // //$(".hair").addClass("look-top-left");
80 | // }
81 |
82 | // if (
83 | // e.clientX > (window.innerWidth / 3) &&
84 | // e.clientX < (window.innerWidth - (window.innerWidth / 3)) &&
85 | // e.clientY > (window.innerHeight / 2.5) &&
86 | // e.clientY < (window.innerHeight - (window.innerHeight / 2.5))
87 | // ) {
88 | // removeClasses();
89 | // //console.log("center");
90 | // }
91 | }
92 | document.addEventListener("mousemove", function(e) {
93 | direction(e);
94 | });
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/src/script.js:
--------------------------------------------------------------------------------
1 | var directions = ["look-right", "look-left"];
2 | // from orignal implementation
3 | // var directions = ["look-right", "look-left", "look-down", "look-up", "look-bottom-right", "look-bottom-left", "look-top-right", "look-top-left"];
4 | function removeClasses() {
5 | for (var x = 0; x < directions.length; x++) {
6 | $(".head").removeClass(directions[x]);
7 | $(".hair").removeClass(directions[x]);
8 | $(".face").removeClass(directions[x]);
9 | $(".neck").removeClass(directions[x]);
10 | }
11 | }
12 | function direction(e) {
13 | //look left
14 | if (e.clientX <= (window.innerWidth / 2)) {
15 | removeClasses();
16 | $(".head").addClass("look-left");
17 | $(".hair").addClass("look-left");
18 | $(".face").addClass("look-left");
19 | $(".neck").addClass("look-left");
20 | }
21 |
22 | //look right
23 | if (e.clientX >= window.innerWidth - (window.innerWidth / 2)) {
24 | removeClasses();
25 | $(".head").addClass("look-right");
26 | $(".hair").addClass("look-right");
27 | $(".face").addClass("look-right");
28 | $(".neck").addClass("look-right");
29 | }
30 |
31 | //TODO: resolve afro lag
32 | // look down
33 | // if (e.clientY >= window.innerHeight - (window.innerHeight / 2.5)) {
34 | // removeClasses();
35 | // // $(".head").addClass("look-down");
36 | // // $(".hair").addClass("look-down");
37 | // $(".face").addClass("look-down");
38 | // //$(".neck").addClass("look-down");
39 | // }
40 |
41 | // //look up
42 | // if (e.clientY <= (window.innerHeight / 2.5)) {
43 | // removeClasses();
44 | // // $(".head").addClass("look-up");
45 | // // $(".hair").addClass("look-up");
46 | // $(".face").addClass("look-up");
47 | // //$(".neck").addClass("look-up");
48 | // }
49 | // //look bottom right
50 | // if(e.clientY >= (window.innerHeight - (window.innerHeight/2.5)) && e.clientX >= (window.innerWidth-(window.innerWidth/3))) {
51 | // removeClasses();
52 | // //$(".head").addClass("look-bottom-right");
53 | // $(".face").addClass("look-bottom-right");
54 | // // $(".neck").addClass("look-bottom-right");
55 | // // $(".hair").addClass("look-bottom-right");
56 | // }
57 |
58 | // // look bottom left
59 | // if(e.clientY >= (window.innerHeight - (window.innerHeight/2.5)) && e.clientX <= (window.innerWidth/3)) {
60 | // removeClasses();
61 | // //$(".head").addClass("look-bottom-left");
62 | // $(".face").addClass("look-bottom-left");
63 | // //$(".neck").addClass("look-bottom-left");
64 | // //$(".hair").addClass("look-bottom-left");
65 | // }
66 |
67 | // // look top right
68 | // if(e.clientY <= (window.innerHeight/2.5) && e.clientX >= (window.innerWidth - (window.innerWidth/3))) {
69 | // removeClasses();
70 | // //$(".head").addClass("look-top-right");
71 | // $(".face").addClass("look-top-right");
72 | // //$(".neck").addClass("look-top-right");
73 | // //$(".hair").addClass("look-top-right");
74 | // }
75 | // if( e.clientY <= ((window.innerHeight/2.5)) && e.clientX <= window.innerWidth/3) {
76 | // //$(".head").addClass("look-top-left");
77 | // $(".face").addClass("look-top-left");
78 | // //$(".neck").addClass("look-top-left");
79 | // //$(".hair").addClass("look-top-left");
80 | // }
81 |
82 | // if (
83 | // e.clientX > (window.innerWidth / 3) &&
84 | // e.clientX < (window.innerWidth - (window.innerWidth / 3)) &&
85 | // e.clientY > (window.innerHeight / 2.5) &&
86 | // e.clientY < (window.innerHeight - (window.innerHeight / 2.5))
87 | // ) {
88 | // removeClasses();
89 | // //console.log("center");
90 | // }
91 | }
92 | document.addEventListener("mousemove", function(e) {
93 | direction(e);
94 | });
95 |
--------------------------------------------------------------------------------
/day-17-18-pokemon-friends/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Day 17/18: Pokemon Friends
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/day-1-hello-css/src/style.scss:
--------------------------------------------------------------------------------
1 | @import "compass/css3";
2 | @import url("https://fonts.googleapis.com/css?family=Pacifico");
3 |
4 | // gradient source: https://uigradients.com/#IntuitivePurple
5 | $gradients: linear-gradient(to top, #da22ff, #9733ee);
6 | $background: #da22ff;
7 | $shadow: #e3e3e3;
8 |
9 | // hello world gradient
10 | @mixin text-gradient() {
11 | // creates an image mask using bg gradients
12 | background-image: -webkit-linear-gradient(to top, #da22ff, #9733ee);
13 | background-image: -moz-linear-gradient(to top, #da22ff, #9733ee);
14 | background-image: -ms-linear-gradient(to top, #da22ff, #9733ee);
15 | background-image: -o-linear-gradient(to top, #da22ff, #9733ee);
16 | background-image: linear-gradient(to top, #da22ff, #9733ee);
17 | // prepares the text for masking
18 | color: transparent;
19 | // creates clipping mask with text
20 | -webkit-background-clip: text;
21 | background-clip: text;
22 | }
23 |
24 | // hand rotations
25 | @mixin rotate-hand($angle) {
26 | -webkit-transform: rotate($angle);
27 | -moz-transform: rotate($angle);
28 | -ms-transform: rotate($angle);
29 | transform: rotate($angle);
30 | }
31 |
32 | // origin updates for hand wave
33 | @mixin origin($origin_values) {
34 | -webkit-transform-origin: $origin_values;
35 | -moz-transform-origin: $origin_values;
36 | -ms-transform-origin: $origin_values;
37 | transform-origin: $origin_values;
38 | }
39 | // Set the background color to custom gradient
40 | body,
41 | html {
42 | background: $gradients;
43 | background-repeat: no-repeat;
44 | background-attachment: fixed;
45 | width: 100vw;
46 | height: 100vh;
47 | }
48 |
49 | .container {
50 | position: absolute;
51 | left: 50%;
52 | top: 50%;
53 | transform: translate(-50%, -50%);
54 | }
55 |
56 | // Style for hello world text
57 | .hello {
58 | font-family: "Pacifico", cursive;
59 | font-size: 70px;
60 | @include text-gradient();
61 | text-align: center;
62 | opacity: 0;
63 | filter: drop-shadow(2px 7px 0px $shadow);
64 | @include animation(hello 2s forwards);
65 | @include animation-delay(0.8s);
66 | }
67 |
68 | // Speech bubble style
69 | .speech_bubble {
70 | width: 625px;
71 | height: 220px;
72 | background: #fff;
73 | position: relative;
74 | margin: auto;
75 | border: 10px solid #fff;
76 | @include border-radius(200px);
77 | @include animation(pop 2s ease-out);
78 | filter: drop-shadow(4px 7px 0px $shadow);
79 | }
80 |
81 | // speech bubble opening animation
82 | @include keyframes(pop) {
83 | 0% {
84 | width: 100px;
85 | }
86 | 40% {
87 | width: 1000px;
88 | }
89 | 80% {
90 | width: 600px;
91 | }
92 | // 90% {
93 | // width: 900px;
94 | // }
95 | }
96 | // hello world fade in
97 | @include keyframes(hello) {
98 | 0% {
99 | opacity: 0;
100 | }
101 | 50% {
102 | opacity: 1;
103 | }
104 | 100% {
105 | opacity: 1;
106 | }
107 | }
108 | // completed speech bubble
109 | .speech_bubble:after {
110 | width: 0;
111 | height: 0;
112 | border-left: 40px solid transparent;
113 | border-right: 40px solid transparent;
114 | border-top: 50px solid #fff;
115 | content: "";
116 | top: 210px;
117 | position: absolute;
118 | left: 100px;
119 | right: 0;
120 | margin: auto;
121 | @include animation(move 0.8s ease);
122 | }
123 | // speech bubble before transition
124 | .speech_bubble:before {
125 | @extend .speech_bubble:after;
126 | top: 220px;
127 | border-top: 55px solid #fff;
128 | border-left: 44px solid transparent;
129 | border-right: 44px solid transparent;
130 | }
131 | // moves the speech bubble tooltip in plain sight
132 | @include keyframes(move) {
133 | 0% {
134 | top: 50px;
135 | left: -10px;
136 | }
137 | 50% {
138 | left: 50px;
139 | }
140 | 100% {
141 | left: 100px;
142 | }
143 | }
144 | // hand movements
145 | .em-hand {
146 | font-size: 48px;
147 | text-align: center;
148 | margin: 0.5em 0.5em 1em;
149 | @include animation(wave 0.3s alternate infinite);
150 | @include origin(50% 100%);
151 | }
152 | // handwave animation
153 | @include keyframes(wave) {
154 | 0% {
155 | // rotate hand down
156 | @include rotate-hand(-30deg);
157 | }
158 | 100% {
159 | // rotate back up
160 | @include rotate-hand(10deg);
161 | }
162 | }
163 |
--------------------------------------------------------------------------------
/day-1-hello-css/dist/style.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Pacifico");
2 | body,
3 | html {
4 | background: linear-gradient(to top, #da22ff, #9733ee);
5 | background-repeat: no-repeat;
6 | background-attachment: fixed;
7 | width: 100vw;
8 | height: 100vh;
9 | }
10 |
11 | .container {
12 | position: absolute;
13 | left: 50%;
14 | top: 50%;
15 | transform: translate(-50%, -50%);
16 | }
17 |
18 | .hello {
19 | font-family: "Pacifico", cursive;
20 | font-size: 70px;
21 | background-image: -webkit-linear-gradient(to top, #da22ff, #9733ee);
22 | background-image: -moz-linear-gradient(to top, #da22ff, #9733ee);
23 | background-image: -ms-linear-gradient(to top, #da22ff, #9733ee);
24 | background-image: -o-linear-gradient(to top, #da22ff, #9733ee);
25 | background-image: linear-gradient(to top, #da22ff, #9733ee);
26 | color: transparent;
27 | -webkit-background-clip: text;
28 | background-clip: text;
29 | text-align: center;
30 | opacity: 0;
31 | filter: drop-shadow(2px 7px 0px #e3e3e3);
32 | -moz-animation: hello 2s forwards;
33 | -webkit-animation: hello 2s forwards;
34 | animation: hello 2s forwards;
35 | -moz-animation-delay: 0.8s;
36 | -webkit-animation-delay: 0.8s;
37 | animation-delay: 0.8s;
38 | }
39 |
40 | .speech_bubble {
41 | width: 625px;
42 | height: 220px;
43 | background: #fff;
44 | position: relative;
45 | margin: auto;
46 | border: 10px solid #fff;
47 | -moz-border-radius: 200px;
48 | -webkit-border-radius: 200px;
49 | border-radius: 200px;
50 | -moz-animation: pop 2s ease-out;
51 | -webkit-animation: pop 2s ease-out;
52 | animation: pop 2s ease-out;
53 | filter: drop-shadow(4px 7px 0px #e3e3e3);
54 | }
55 |
56 | @-moz-keyframes pop {
57 | 0% {
58 | width: 100px;
59 | }
60 | 40% {
61 | width: 1000px;
62 | }
63 | 80% {
64 | width: 600px;
65 | }
66 | }
67 | @-webkit-keyframes pop {
68 | 0% {
69 | width: 100px;
70 | }
71 | 40% {
72 | width: 1000px;
73 | }
74 | 80% {
75 | width: 600px;
76 | }
77 | }
78 | @keyframes pop {
79 | 0% {
80 | width: 100px;
81 | }
82 | 40% {
83 | width: 1000px;
84 | }
85 | 80% {
86 | width: 600px;
87 | }
88 | }
89 | @-moz-keyframes hello {
90 | 0% {
91 | opacity: 0;
92 | }
93 | 50% {
94 | opacity: 1;
95 | }
96 | 100% {
97 | opacity: 1;
98 | }
99 | }
100 | @-webkit-keyframes hello {
101 | 0% {
102 | opacity: 0;
103 | }
104 | 50% {
105 | opacity: 1;
106 | }
107 | 100% {
108 | opacity: 1;
109 | }
110 | }
111 | @keyframes hello {
112 | 0% {
113 | opacity: 0;
114 | }
115 | 50% {
116 | opacity: 1;
117 | }
118 | 100% {
119 | opacity: 1;
120 | }
121 | }
122 | .speech_bubble:after, .speech_bubble:before {
123 | width: 0;
124 | height: 0;
125 | border-left: 40px solid transparent;
126 | border-right: 40px solid transparent;
127 | border-top: 50px solid #fff;
128 | content: "";
129 | top: 210px;
130 | position: absolute;
131 | left: 100px;
132 | right: 0;
133 | margin: auto;
134 | -moz-animation: move 0.8s ease;
135 | -webkit-animation: move 0.8s ease;
136 | animation: move 0.8s ease;
137 | }
138 |
139 | .speech_bubble:before {
140 | top: 220px;
141 | border-top: 55px solid #fff;
142 | border-left: 44px solid transparent;
143 | border-right: 44px solid transparent;
144 | }
145 |
146 | @-moz-keyframes move {
147 | 0% {
148 | top: 50px;
149 | left: -10px;
150 | }
151 | 50% {
152 | left: 50px;
153 | }
154 | 100% {
155 | left: 100px;
156 | }
157 | }
158 | @-webkit-keyframes move {
159 | 0% {
160 | top: 50px;
161 | left: -10px;
162 | }
163 | 50% {
164 | left: 50px;
165 | }
166 | 100% {
167 | left: 100px;
168 | }
169 | }
170 | @keyframes move {
171 | 0% {
172 | top: 50px;
173 | left: -10px;
174 | }
175 | 50% {
176 | left: 50px;
177 | }
178 | 100% {
179 | left: 100px;
180 | }
181 | }
182 | .em-hand {
183 | font-size: 48px;
184 | text-align: center;
185 | margin: 0.5em 0.5em 1em;
186 | -moz-animation: wave 0.3s alternate infinite;
187 | -webkit-animation: wave 0.3s alternate infinite;
188 | animation: wave 0.3s alternate infinite;
189 | -webkit-transform-origin: 50% 100%;
190 | -moz-transform-origin: 50% 100%;
191 | -ms-transform-origin: 50% 100%;
192 | transform-origin: 50% 100%;
193 | }
194 |
195 | @-moz-keyframes wave {
196 | 0% {
197 | -webkit-transform: rotate(-30deg);
198 | -moz-transform: rotate(-30deg);
199 | -ms-transform: rotate(-30deg);
200 | transform: rotate(-30deg);
201 | }
202 | 100% {
203 | -webkit-transform: rotate(10deg);
204 | -moz-transform: rotate(10deg);
205 | -ms-transform: rotate(10deg);
206 | transform: rotate(10deg);
207 | }
208 | }
209 | @-webkit-keyframes wave {
210 | 0% {
211 | -webkit-transform: rotate(-30deg);
212 | -moz-transform: rotate(-30deg);
213 | -ms-transform: rotate(-30deg);
214 | transform: rotate(-30deg);
215 | }
216 | 100% {
217 | -webkit-transform: rotate(10deg);
218 | -moz-transform: rotate(10deg);
219 | -ms-transform: rotate(10deg);
220 | transform: rotate(10deg);
221 | }
222 | }
223 | @keyframes wave {
224 | 0% {
225 | -webkit-transform: rotate(-30deg);
226 | -moz-transform: rotate(-30deg);
227 | -ms-transform: rotate(-30deg);
228 | transform: rotate(-30deg);
229 | }
230 | 100% {
231 | -webkit-transform: rotate(10deg);
232 | -moz-transform: rotate(10deg);
233 | -ms-transform: rotate(10deg);
234 | transform: rotate(10deg);
235 | }
236 | }
--------------------------------------------------------------------------------
/day-19-25-pokemon-amie/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Pokemon Amie ❤️
6 |
7 |
8 |
9 |
10 |
Eevee isn't ready to play on mobile yet.
11 |
Try visiting Eevee on desktop!
12 |
13 |
14 |
15 |
16 |
135 |
140 |
141 |
149 |
160 |
168 |
169 |
170 |
174 |
178 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
--------------------------------------------------------------------------------
/day-9-self-portrait-interactive/dist/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #020916;
3 | position: absolute;
4 | transform: translate(-50%, -50%);
5 | left: 50%;
6 | top: 50%;
7 | }
8 |
9 | .container {
10 | background: #5ab3b5;
11 | overflow: hidden;
12 | width: 300px;
13 | height: 300px;
14 | border-radius: 100%;
15 | transition: all 0.5s ease;
16 | }
17 | .container:hover {
18 | background: pink;
19 | }
20 | .container:hover .cheeks::before, .container:hover .cheeks::after {
21 | background: #870d24;
22 | }
23 | .container:hover .heart {
24 | background: pink;
25 | }
26 | .container:hover .heart:before, .container:hover .heart:after {
27 | background: pink;
28 | }
29 | .container:hover .shirt-button {
30 | background: #b51231;
31 | }
32 | .container:hover .heart-button {
33 | z-index: 1;
34 | color: white;
35 | animation: pulse 1s 0.5s ease-out infinite;
36 | }
37 |
38 | .heart {
39 | width: 300px;
40 | height: 300px;
41 | background: #020916;
42 | position: absolute;
43 | top: 30px;
44 | z-index: -1;
45 | transform: rotate(45deg);
46 | transition: all 0.5s ease;
47 | }
48 | .heart:before, .heart:after {
49 | content: "";
50 | width: 300px;
51 | height: 300px;
52 | position: absolute;
53 | border-radius: 100%;
54 | background: #020916;
55 | transition: all 0.5s ease;
56 | }
57 | .heart:before {
58 | top: -150px;
59 | left: 0;
60 | }
61 | .heart:after {
62 | left: -150px;
63 | top: 0;
64 | }
65 |
66 | .avatar-body {
67 | width: 60px;
68 | height: 30px;
69 | background: #b51231;
70 | position: absolute;
71 | left: calc(50% - 30px);
72 | top: 75%;
73 | z-index: 2;
74 | }
75 | .avatar-body:after {
76 | content: "";
77 | position: absolute;
78 | border-bottom: 20px solid #e6e6e6;
79 | border-left: 20x solid transparent;
80 | border-right: 15px solid transparent;
81 | height: 0;
82 | width: 22px;
83 | right: calc(50% - 10px);
84 | top: -20px;
85 | }
86 | .avatar-body:before {
87 | content: "";
88 | position: absolute;
89 | border-bottom: 20px solid #cccccc;
90 | border-left: 15px solid transparent;
91 | border-right: 0px solid transparent;
92 | height: 0;
93 | width: 25px;
94 | right: 2px;
95 | top: -20px;
96 | }
97 |
98 | .shirt-button {
99 | position: absolute;
100 | width: 10px;
101 | height: 10px;
102 | background: white;
103 | border-radius: 100%;
104 | left: calc(50% - 5px);
105 | top: 10px;
106 | }
107 |
108 | .heart-button {
109 | position: absolute;
110 | color: #b51231;
111 | font-size: 20px;
112 | top: -15px;
113 | left: 35%;
114 | z-index: -1;
115 | }
116 |
117 | .avatar-head {
118 | position: absolute;
119 | z-index: 3;
120 | width: 90px;
121 | height: 120px;
122 | background: #c74b16;
123 | border-radius: 40px;
124 | left: calc(50% - 45px);
125 | top: 70px;
126 | }
127 |
128 | .avatar-neck {
129 | position: absolute;
130 | width: 40px;
131 | height: 50px;
132 | background: #c74b16;
133 | left: calc(50% - 20px);
134 | top: 60%;
135 | box-shadow: inset 0px 16px 0px 0px #993a11;
136 | }
137 |
138 | .avatar-hair {
139 | position: absolute;
140 | width: 130px;
141 | height: 130px;
142 | background: #020916;
143 | border-radius: 100%;
144 | left: calc(50% - 65px);
145 | top: 12%;
146 | box-shadow: inset 10px -1px #061c45;
147 | }
148 | .avatar-hair:after {
149 | content: "";
150 | position: absolute;
151 | width: 90px;
152 | height: 50px;
153 | background: #020916;
154 | border-radius: 0px 200px 0px 200px;
155 | z-index: 4;
156 | left: 40px;
157 | top: 20px;
158 | transform: rotate(10deg);
159 | }
160 |
161 | .avatar-ponytail {
162 | width: 90px;
163 | height: 120px;
164 | position: absolute;
165 | background: #020916;
166 | left: 25%;
167 | top: 40%;
168 | border-radius: 200px;
169 | }
170 | .avatar-ponytail:after {
171 | content: "";
172 | position: absolute;
173 | width: 120px;
174 | height: 70px;
175 | background: #020916;
176 | border-radius: 0 0 300px 300px;
177 | top: 60%;
178 | right: -5%;
179 | }
180 |
181 | .avatar-face {
182 | width: 500px;
183 | height: 500px;
184 | position: absolute;
185 | left: calc(50% - 35px);
186 | top: calc(50% - 50px);
187 | z-index: 5;
188 | }
189 | .avatar-face .eyes {
190 | dispaly: flex;
191 | justify-content: space-between;
192 | position: absolute;
193 | top: 12px;
194 | left: -7px;
195 | }
196 | .avatar-face .eyes::before, .avatar-face .eyes::after {
197 | display: inline-block;
198 | content: "";
199 | width: 15px;
200 | height: 40px;
201 | background: #020916;
202 | margin: 0 14px;
203 | border-radius: 200px;
204 | animation: blink 3s ease-in-out infinite;
205 | }
206 | .avatar-face .glasses {
207 | position: relative;
208 | width: 5px;
209 | height: 2px;
210 | background: #f89714;
211 | left: 6.5%;
212 | top: 25px;
213 | }
214 | .avatar-face .glasses .left, .avatar-face .glasses .right {
215 | position: absolute;
216 | width: 50px;
217 | height: 50px;
218 | background: transparent;
219 | border-radius: 100%;
220 | border: 2px solid #f89714;
221 | left: -52px;
222 | top: -22px;
223 | overflow: hidden;
224 | z-index: 2;
225 | }
226 | .avatar-face .glasses .right {
227 | left: 4px;
228 | }
229 |
230 | .shine {
231 | position: absolute;
232 | }
233 | .shine:before, .shine:after {
234 | content: "";
235 | position: absolute;
236 | width: 20px;
237 | height: 100px;
238 | background: white;
239 | opacity: 0.3;
240 | transform: rotate(30deg);
241 | top: -25px;
242 | left: 5px;
243 | }
244 | .shine:after {
245 | width: 5px;
246 | left: 30px;
247 | }
248 |
249 | .cheeks {
250 | dispaly: flex;
251 | justify-content: space-between;
252 | position: absolute;
253 | top: 55px;
254 | left: -25px;
255 | }
256 | .cheeks::before, .cheeks::after {
257 | display: inline-block;
258 | content: "";
259 | width: 20px;
260 | height: 20px;
261 | background: #c74b16;
262 | margin: 0 20px;
263 | opacity: 0.5;
264 | transition: all 1s ease;
265 | border-radius: 200px;
266 | }
267 |
268 | @keyframes blink {
269 | 0% {
270 | transform: scaleY(1);
271 | }
272 | 18% {
273 | transform: scaleY(1);
274 | }
275 | 20% {
276 | transform: scaleY(0);
277 | }
278 | 25% {
279 | transform: scaleY(1);
280 | }
281 | 38% {
282 | transform: scaleY(1);
283 | }
284 | 40% {
285 | transform: scaleY(0);
286 | }
287 | 45% {
288 | transform: scaleY(1);
289 | }
290 | 80% {
291 | transform: scaleY(1);
292 | }
293 | }
294 | @keyframes pulse {
295 | 0% {
296 | transform: scale(1);
297 | }
298 | 30% {
299 | transform: scale(1.5);
300 | }
301 | 100% {
302 | transform: scale(1);
303 | }
304 | }
--------------------------------------------------------------------------------
/day-19-25-pokemon-amie/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Pokemon Amie ❤️ (Hover over Eevee and hold left click to pet it)
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Pokemon Amie ❤️
16 |
17 |
18 |
19 |
20 |
Eevee isn't ready to play on mobile yet.
21 |
Try visiting Eevee on desktop!
22 |
23 |
24 |
25 |
26 |
145 |
150 |
151 |
159 |
170 |
178 |
179 |
180 |
184 |
188 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
--------------------------------------------------------------------------------
/day-9-self-portrait-interactive/src/style.scss:
--------------------------------------------------------------------------------
1 | $background: #020916;
2 | $container: #5ab3b5; //#00ced1;
3 | $shirt: #b51231;
4 | $skin: #c74b16;
5 |
6 | body {
7 | background: $background;
8 | position: absolute;
9 | transform: translate(-50%, -50%);
10 | left: 50%;
11 | top: 50%;
12 | }
13 |
14 | .container {
15 | background: $container;
16 | overflow: hidden;
17 | width: 300px;
18 | height: 300px;
19 | border-radius: 100%;
20 | transition: all 0.5s ease;
21 | &:hover {
22 | background: pink;
23 | .cheeks {
24 | &::before,
25 | &::after {
26 | background: darken($shirt, 10%);
27 | }
28 | }
29 | .heart {
30 | background: pink;
31 | &:before,
32 | &:after {
33 | background: pink;
34 | }
35 | }
36 | .shirt-button {
37 | background: $shirt;
38 | }
39 | .heart-button {
40 | z-index: 1;
41 | color: white;
42 | animation: pulse 1s 0.5s ease-out infinite;
43 | }
44 | }
45 | }
46 |
47 | .heart {
48 | width: 300px;
49 | height: 300px;
50 | background: $background;
51 | position: absolute;
52 | top: 30px;
53 | z-index: -1;
54 | transform: rotate(45deg);
55 | transition: all 0.5s ease;
56 | &:before,
57 | &:after {
58 | content: "";
59 | width: 300px;
60 | height: 300px;
61 | position: absolute;
62 | border-radius: 100%;
63 | background: $background;
64 | transition: all 0.5s ease;
65 | }
66 | &:before {
67 | top: -150px;
68 | left: 0;
69 | }
70 | &:after {
71 | left: -150px;
72 | top: 0;
73 | }
74 | }
75 | .avatar-body {
76 | width: 60px;
77 | height: 30px;
78 | background: $shirt;
79 | position: absolute;
80 | left: calc(50% - 30px);
81 | top: 75%;
82 | z-index: 2;
83 | &:after {
84 | content: "";
85 | position: absolute;
86 | border-bottom: 20px solid darken(white, 10%);
87 | border-left: 20x solid transparent;
88 | border-right: 15px solid transparent;
89 | height: 0;
90 | width: 22px;
91 | right: calc(50% - 10px);
92 | top: -20px;
93 | }
94 | &:before {
95 | content: "";
96 | position: absolute;
97 | border-bottom: 20px solid darken(white, 20%);
98 | border-left: 15px solid transparent;
99 | border-right: 0px solid transparent;
100 | height: 0;
101 | width: 25px;
102 | right: 2px;
103 | top: -20px;
104 | }
105 | }
106 | .shirt-button {
107 | position: absolute;
108 | width: 10px;
109 | height: 10px;
110 | background: white;
111 | border-radius: 100%;
112 | left: calc(50% - 5px);
113 | top: 10px;
114 | }
115 | .heart-button {
116 | position: absolute;
117 | color: $shirt;
118 | font-size: 20px;
119 | top: -15px;
120 | left: 35%;
121 | z-index: -1;
122 | }
123 | .avatar-head {
124 | position: absolute;
125 | z-index: 3;
126 | width: 90px;
127 | height: 120px;
128 | background: $skin;
129 | border-radius: 40px;
130 | left: calc(50% - 45px);
131 | top: 70px;
132 | }
133 | .avatar-neck {
134 | position: absolute;
135 | width: 40px;
136 | height: 50px;
137 | background: $skin;
138 | left: calc(50% - 20px);
139 | top: 60%;
140 | box-shadow: inset 0px 16px 0px 0px darken($skin, 10%);
141 | }
142 | .avatar-hair {
143 | position: absolute;
144 | width: 130px;
145 | height: 130px;
146 | background: $background;
147 | border-radius: 100%;
148 | left: calc(50% - 65px);
149 | top: 12%;
150 | box-shadow: inset 10px -1px lighten($background, 10%);
151 | &:after {
152 | content: "";
153 | position: absolute;
154 | width: 90px;
155 | height: 50px;
156 | background: $background;
157 | border-radius: 0px 200px 0px 200px;
158 | z-index: 4;
159 | left: 40px;
160 | top: 20px;
161 | transform: rotate(10deg);
162 | }
163 | }
164 | .avatar-ponytail {
165 | width: 90px;
166 | height: 120px;
167 | position: absolute;
168 | background: $background;
169 | left: 25%;
170 | top: 40%;
171 | border-radius: 200px;
172 | &:after {
173 | content: "";
174 | position: absolute;
175 | width: 120px;
176 | height: 70px;
177 | background: $background;
178 | border-radius: 0 0 300px 300px;
179 | top: 60%;
180 | right: -5%;
181 | }
182 | }
183 | .avatar-face {
184 | width: 500px;
185 | height: 500px;
186 | position: absolute;
187 | left: calc(50% - 35px);
188 | top: calc(50% - 50px);
189 | z-index: 5;
190 | .eyes {
191 | dispaly: flex;
192 | justify-content: space-between;
193 | position: absolute;
194 | top: 12px;
195 | left: -7px;
196 | &::before,
197 | &::after {
198 | display: inline-block;
199 | content: "";
200 | width: 15px;
201 | height: 40px;
202 | background: $background;
203 | margin: 0 14px;
204 | border-radius: 200px;
205 | animation: blink 3s ease-in-out infinite;
206 | }
207 | }
208 |
209 | .glasses {
210 | position: relative;
211 | width: 5px;
212 | height: 2px;
213 | background: #f89714;
214 | left: 6.5%;
215 | top: 25px;
216 | .left {
217 | position: absolute;
218 | width: 50px;
219 | height: 50px;
220 | background: transparent;
221 | border-radius: 100%;
222 | border: 2px solid #f89714;
223 | left: -52px;
224 | top: -22px;
225 | overflow: hidden;
226 | z-index: 2;
227 | }
228 | .right {
229 | @extend .left;
230 | left: 4px;
231 | }
232 | }
233 | }
234 | .shine {
235 | position: absolute;
236 | &:before {
237 | content: "";
238 | position: absolute;
239 | width: 20px;
240 | height: 100px;
241 | background: white;
242 | opacity: 0.3;
243 | transform: rotate(30deg);
244 | top: -25px;
245 | left: 5px;
246 | }
247 | &:after {
248 | @extend .shine:before;
249 | width: 5px;
250 | left: 30px;
251 | }
252 | }
253 | .cheeks {
254 | dispaly: flex;
255 | justify-content: space-between;
256 | position: absolute;
257 | top: 55px;
258 | left: -25px;
259 | &::before,
260 | &::after {
261 | display: inline-block;
262 | content: "";
263 | width: 20px;
264 | height: 20px;
265 | background: $skin;
266 | margin: 0 20px;
267 | opacity: 0.5;
268 | transition: all 1s ease;
269 | border-radius: 200px;
270 | }
271 | }
272 |
273 | @keyframes blink {
274 | 0% {
275 | transform: scaleY(1);
276 | }
277 | 18% {
278 | transform: scaleY(1);
279 | }
280 | 20% {
281 | transform: scaleY(0);
282 | }
283 | 25% {
284 | transform: scaleY(1);
285 | }
286 | 38% {
287 | transform: scaleY(1);
288 | }
289 | 40% {
290 | transform: scaleY(0);
291 | }
292 | 45% {
293 | transform: scaleY(1);
294 | }
295 | 80% {
296 | transform: scaleY(1);
297 | }
298 | }
299 |
300 | @keyframes pulse {
301 | 0% {
302 | transform: scale(1);
303 | } 30% {
304 | transform: scale(1.5);
305 | } 100% {
306 | transform: scale(1);
307 | }
308 | }
--------------------------------------------------------------------------------
/day-7-8-beauty-and-the-beast-s-enchanted-rose/src/style.scss:
--------------------------------------------------------------------------------
1 | $bg: darken(#122139, 8%);//#fffafa;
2 | $case: #122139;
3 | $casebase: #a52a2a;
4 | $pink1: #d52d58;
5 | $pink2: #9e183a;
6 | $pink3: #b81b43;
7 | $pink4: #c9204b;
8 | $green1: #338f37;
9 | $green2: darken(#066406, 5%);
10 |
11 | @mixin rotatePetal($i, $angle) {
12 | @if ($i % 2 == 1) {
13 | $angle: $angle * -1;
14 | }
15 | transform: rotate($angle + deg);
16 | }
17 | @function randomNum($min, $max) {
18 | $rand: random();
19 | $randomNum: $min + floor($rand * (($max - $min) + 1));
20 |
21 | @return $randomNum;
22 | }
23 | body {
24 | height: 100%;
25 | width: 100%;
26 | background: $bg;
27 | overflow: hidden;
28 | }
29 |
30 | .container {
31 | position: absolute;
32 | left: 50%;
33 | top: 50%;
34 | transform: translate(-50%, -50%);
35 | }
36 |
37 | .glass {
38 | height: 350px;
39 | width: 200px;
40 | background: $case;
41 | border-radius: 300px 300px 0px 0px;
42 | &:before {
43 | content: "";
44 | height: 10px;
45 | width: 10px;
46 | transform-origin: center;
47 | border: 10px solid $case;
48 | border-radius: 100%;
49 | position: absolute;
50 | left: 87px;
51 | top: -25px;
52 | }
53 | &:after {
54 | content: "";
55 | position: absolute;
56 | height: 15px;
57 | width: 250px;
58 | background: $casebase;
59 | top: 100%;
60 | left: -13%;
61 | }
62 | }
63 | .shine {
64 | width: 12px;
65 | height: 140px;
66 | background: white;
67 | opacity: 0.2;
68 | position: absolute;
69 | left: 85%;
70 | top: 80px;
71 | border-radius: 100px;
72 | z-index: 10;
73 | &:before {
74 | content: "";
75 | width: 12px;
76 | height: 20px;
77 | position: absolute;
78 | background: white;
79 | top: 160px;
80 | border-radius: 100px;
81 | }
82 | }
83 | .petals {
84 | & > div {
85 | position: absolute;
86 | background: $pink1;
87 | width: 45px;
88 | height: 80px;
89 | top: 55px;
90 | transition: all 0.5s ease-out;
91 | }
92 | & > div:nth-child(1) {
93 | border-radius: 15px;
94 | box-shadow: 0px 0px 30px rgba(245, 148, 184, 1);
95 | left: 80px;
96 | top: 60px;
97 | background: $pink1;
98 | }
99 | & > div:nth-child(2),
100 | & > div:nth-child(4),
101 | & > div:nth-child(6) {
102 | background: $pink3;
103 | left: 60px;
104 | border-radius: 0px 30px 0px 30px;
105 | transform-origin: bottom right;
106 | }
107 | & > div:nth-child(3),
108 | & > div:nth-child(5),
109 | & > div:nth-child(7) {
110 | background: $pink3;
111 | left: 100px;
112 | border-radius: 30px 0px 30px 0px;
113 | transform-origin: bottom left;
114 | }
115 | @for $i from 2 to 8 {
116 | $background: "";
117 | $top: "";
118 | $h: "";
119 | $box: "";
120 | $angle: 30deg;
121 | @if ($i == 2 or $i == 3) {
122 | $background: lighten($pink2, 3%);
123 | $top: 75px;
124 | $h: 70px;
125 | //@if ($i == 3) {
126 | $box: 0px 0px 50px rgba(245, 148, 184, .5);
127 | //}
128 | }
129 | @if ($i == 4 or $i == 5) {
130 | $background: $pink3;
131 | $top: 70px;
132 | $h: 75px;
133 | $box: 0px 0px 50px rgba(245, 148, 184, .5);
134 | }
135 | @if ($i == 6 or $i == 7) {
136 | $background: $pink4;
137 | $top: 65px;
138 | $h: 70px;
139 | $box: 0px 0px 50px rgba(245, 148, 184, .3);
140 | }
141 | & > div:nth-child(#{$i}) {
142 | z-index: 7-$i;
143 | background: $background;
144 | top: $top;
145 | height: $h;
146 | box-shadow: $box;
147 | @if ($i == 2) {
148 | animation: bloom2 3s ease-in-out;
149 | } @else {
150 | animation: bloom+$i 3s ease-in-out, glowing 2.5s ease-in-out infinite;
151 | }
152 | animation-fill-mode: forwards;
153 | }
154 | }
155 | }
156 | .deadPetals {
157 | & > div {
158 | position: absolute;
159 | background: $pink1;
160 | width: 20px;
161 | height: 15px;
162 | top: 120px;
163 | border-radius: 0px 30px 0px 30px;
164 | box-shadow: 0px 0px 30px rgba(245, 148, 184, .5);
165 | transition: all 0.5s ease-out;
166 | }
167 | @for $i from 1 to 5 {
168 | & > div:nth-child(#{$i}) {
169 | left: randomNum(60, 120)+px;
170 | transform: rotate(-30deg);
171 | animation: falling 20s $i*4s ease-in-out infinite;
172 | }
173 | }
174 | }
175 | .leaves {
176 | & > div:nth-last-child(1) {
177 | position: absolute;
178 | width: 55px;
179 | height: 30px;
180 | background: $green1;
181 | top: 120px;
182 | left: 75px;
183 | border-radius: 100px;
184 |
185 | }
186 | & > div:nth-child(1) {
187 | position: absolute;
188 | width: 6px;
189 | height: 210px;
190 | background: $green2;
191 | top: 95px;
192 | left: 100px;
193 | border-radius: 0 0 100px 100px;
194 | }
195 | & > div:nth-child(2) {
196 | position: absolute;
197 | width: 30px;
198 | height: 50px;
199 | top: 53px;
200 | border-radius: 5px 40px 20px 40px;
201 | background: $green2;
202 | transform-origin: bottom;
203 | transform: rotate(-30deg);
204 | top: 180px;
205 | left: 80px;
206 | box-shadow: inset 5px 5px lighten($green2, 5%);
207 | }
208 | & > div:nth-child(3) {
209 | position: absolute;
210 | width: 30px;
211 | height: 50px;
212 | top: 53px;
213 | border-radius: 40px 5px 40px 20px;
214 | background: $green2;
215 | transform-origin: bottom;
216 | transform: rotate(30deg);
217 | top: 150px;
218 | left: 95px;
219 | box-shadow: inset -5px 5px lighten($green2, 5%);
220 | }
221 | }
222 | .thorns {
223 | & > div {
224 | position: absolute;
225 | width: 0;
226 | height: 0;
227 | top: 140px;
228 | }
229 | & > div:nth-child(odd) {
230 | border-top: 5px solid transparent;
231 | border-bottom: 5px solid transparent;
232 | border-left: 5px solid $green2;
233 | left: 105px;
234 | }
235 | & > div:nth-child(even) {
236 | border-top: 5px solid transparent;
237 | border-bottom: 5px solid transparent;
238 | border-right: 5px solid $green2;
239 | left: 95px;
240 | }
241 | & > div:nth-child(1) {
242 | top: 200px;
243 | }
244 | & > div:nth-child(2) {
245 | top: 170px;
246 | }
247 | & > div:nth-child(4) {
248 | top: 230px;
249 | }
250 | }
251 |
252 | @keyframes bloom2 {
253 | 50% {
254 | transform: rotate(-90deg);
255 | top: 200px;
256 | left: 100px;
257 | }
258 | 100% {
259 | transform: rotate(-60deg);
260 | top: 252px;
261 | left: 50px;
262 | background: darken($pink4, 20%);
263 | box-shadow: 0px 0px 0px rgba(245, 148, 184, 0);
264 | }
265 | }
266 |
267 | @keyframes bloom3 {
268 | 100% {
269 | transform: rotate(45deg);
270 | }
271 | }
272 |
273 | @keyframes bloom4 {
274 | 100% {
275 | transform: rotate(-20deg);
276 | }
277 | }
278 |
279 | @keyframes bloom5 {
280 | 100% {
281 | transform: rotate(20deg);
282 | }
283 | }
284 |
285 | @keyframes bloom6 {
286 | 100% {
287 | transform: rotate(-5deg);
288 | }
289 | }
290 |
291 | @keyframes bloom7 {
292 | 100% {
293 | transform: rotate(5deg);
294 | }
295 | }
296 |
297 | @keyframes glowing {
298 | 50% {
299 | background: lighten($pink1, 2%);
300 | box-shadow: 0px 0px 60px rgba(245, 148, 184, 1);
301 | }
302 | }
303 |
304 | @keyframes falling {
305 | 20% {
306 | top: 335px;
307 | background: darken($pink4, 10%);
308 | box-shadow: 0px 0px 0px rgba(245, 148, 184, 0);
309 | }
310 | 100% {
311 | top: 335px;
312 | opacity: 0;
313 | }
314 | }
--------------------------------------------------------------------------------
/day-7-8-beauty-and-the-beast-s-enchanted-rose/dist/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | height: 100%;
3 | width: 100%;
4 | background: #080f1a;
5 | overflow: hidden;
6 | }
7 |
8 | .container {
9 | position: absolute;
10 | left: 50%;
11 | top: 50%;
12 | transform: translate(-50%, -50%);
13 | }
14 |
15 | .glass {
16 | height: 350px;
17 | width: 200px;
18 | background: #122139;
19 | border-radius: 300px 300px 0px 0px;
20 | }
21 | .glass:before {
22 | content: "";
23 | height: 10px;
24 | width: 10px;
25 | transform-origin: center;
26 | border: 10px solid #122139;
27 | border-radius: 100%;
28 | position: absolute;
29 | left: 87px;
30 | top: -25px;
31 | }
32 | .glass:after {
33 | content: "";
34 | position: absolute;
35 | height: 15px;
36 | width: 250px;
37 | background: #a52a2a;
38 | top: 100%;
39 | left: -13%;
40 | }
41 |
42 | .shine {
43 | width: 12px;
44 | height: 140px;
45 | background: white;
46 | opacity: 0.2;
47 | position: absolute;
48 | left: 85%;
49 | top: 80px;
50 | border-radius: 100px;
51 | z-index: 10;
52 | }
53 | .shine:before {
54 | content: "";
55 | width: 12px;
56 | height: 20px;
57 | position: absolute;
58 | background: white;
59 | top: 160px;
60 | border-radius: 100px;
61 | }
62 |
63 | .petals > div {
64 | position: absolute;
65 | background: #d52d58;
66 | width: 45px;
67 | height: 80px;
68 | top: 55px;
69 | transition: all 0.5s ease-out;
70 | }
71 | .petals > div:nth-child(1) {
72 | border-radius: 15px;
73 | box-shadow: 0px 0px 30px #f594b8;
74 | left: 80px;
75 | top: 60px;
76 | background: #d52d58;
77 | }
78 | .petals > div:nth-child(2), .petals > div:nth-child(4), .petals > div:nth-child(6) {
79 | background: #b81b43;
80 | left: 60px;
81 | border-radius: 0px 30px 0px 30px;
82 | transform-origin: bottom right;
83 | }
84 | .petals > div:nth-child(3), .petals > div:nth-child(5), .petals > div:nth-child(7) {
85 | background: #b81b43;
86 | left: 100px;
87 | border-radius: 30px 0px 30px 0px;
88 | transform-origin: bottom left;
89 | }
90 | .petals > div:nth-child(2) {
91 | z-index: 5;
92 | background: #ab1a3f;
93 | top: 75px;
94 | height: 70px;
95 | box-shadow: 0px 0px 50px rgba(245, 148, 184, 0.5);
96 | animation: bloom2 3s ease-in-out;
97 | animation-fill-mode: forwards;
98 | }
99 | .petals > div:nth-child(3) {
100 | z-index: 4;
101 | background: #ab1a3f;
102 | top: 75px;
103 | height: 70px;
104 | box-shadow: 0px 0px 50px rgba(245, 148, 184, 0.5);
105 | animation: bloom3 3s ease-in-out, glowing 2.5s ease-in-out infinite;
106 | animation-fill-mode: forwards;
107 | }
108 | .petals > div:nth-child(4) {
109 | z-index: 3;
110 | background: #b81b43;
111 | top: 70px;
112 | height: 75px;
113 | box-shadow: 0px 0px 50px rgba(245, 148, 184, 0.5);
114 | animation: bloom4 3s ease-in-out, glowing 2.5s ease-in-out infinite;
115 | animation-fill-mode: forwards;
116 | }
117 | .petals > div:nth-child(5) {
118 | z-index: 2;
119 | background: #b81b43;
120 | top: 70px;
121 | height: 75px;
122 | box-shadow: 0px 0px 50px rgba(245, 148, 184, 0.5);
123 | animation: bloom5 3s ease-in-out, glowing 2.5s ease-in-out infinite;
124 | animation-fill-mode: forwards;
125 | }
126 | .petals > div:nth-child(6) {
127 | z-index: 1;
128 | background: #c9204b;
129 | top: 65px;
130 | height: 70px;
131 | box-shadow: 0px 0px 50px rgba(245, 148, 184, 0.3);
132 | animation: bloom6 3s ease-in-out, glowing 2.5s ease-in-out infinite;
133 | animation-fill-mode: forwards;
134 | }
135 | .petals > div:nth-child(7) {
136 | z-index: 0;
137 | background: #c9204b;
138 | top: 65px;
139 | height: 70px;
140 | box-shadow: 0px 0px 50px rgba(245, 148, 184, 0.3);
141 | animation: bloom7 3s ease-in-out, glowing 2.5s ease-in-out infinite;
142 | animation-fill-mode: forwards;
143 | }
144 |
145 | .deadPetals > div {
146 | position: absolute;
147 | background: #d52d58;
148 | width: 20px;
149 | height: 15px;
150 | top: 120px;
151 | border-radius: 0px 30px 0px 30px;
152 | box-shadow: 0px 0px 30px rgba(245, 148, 184, 0.5);
153 | transition: all 0.5s ease-out;
154 | }
155 | .deadPetals > div:nth-child(1) {
156 | left: 91px;
157 | transform: rotate(-30deg);
158 | animation: falling 20s 4s ease-in-out infinite;
159 | }
160 | .deadPetals > div:nth-child(2) {
161 | left: 66px;
162 | transform: rotate(-30deg);
163 | animation: falling 20s 8s ease-in-out infinite;
164 | }
165 | .deadPetals > div:nth-child(3) {
166 | left: 110px;
167 | transform: rotate(-30deg);
168 | animation: falling 20s 12s ease-in-out infinite;
169 | }
170 | .deadPetals > div:nth-child(4) {
171 | left: 77px;
172 | transform: rotate(-30deg);
173 | animation: falling 20s 16s ease-in-out infinite;
174 | }
175 |
176 | .leaves > div:nth-last-child(1) {
177 | position: absolute;
178 | width: 55px;
179 | height: 30px;
180 | background: #338f37;
181 | top: 120px;
182 | left: 75px;
183 | border-radius: 100px;
184 | }
185 | .leaves > div:nth-child(1) {
186 | position: absolute;
187 | width: 6px;
188 | height: 210px;
189 | background: #054c05;
190 | top: 95px;
191 | left: 100px;
192 | border-radius: 0 0 100px 100px;
193 | }
194 | .leaves > div:nth-child(2) {
195 | position: absolute;
196 | width: 30px;
197 | height: 50px;
198 | top: 53px;
199 | border-radius: 5px 40px 20px 40px;
200 | background: #054c05;
201 | transform-origin: bottom;
202 | transform: rotate(-30deg);
203 | top: 180px;
204 | left: 80px;
205 | box-shadow: inset 5px 5px #066406;
206 | }
207 | .leaves > div:nth-child(3) {
208 | position: absolute;
209 | width: 30px;
210 | height: 50px;
211 | top: 53px;
212 | border-radius: 40px 5px 40px 20px;
213 | background: #054c05;
214 | transform-origin: bottom;
215 | transform: rotate(30deg);
216 | top: 150px;
217 | left: 95px;
218 | box-shadow: inset -5px 5px #066406;
219 | }
220 |
221 | .thorns > div {
222 | position: absolute;
223 | width: 0;
224 | height: 0;
225 | top: 140px;
226 | }
227 | .thorns > div:nth-child(odd) {
228 | border-top: 5px solid transparent;
229 | border-bottom: 5px solid transparent;
230 | border-left: 5px solid #054c05;
231 | left: 105px;
232 | }
233 | .thorns > div:nth-child(even) {
234 | border-top: 5px solid transparent;
235 | border-bottom: 5px solid transparent;
236 | border-right: 5px solid #054c05;
237 | left: 95px;
238 | }
239 | .thorns > div:nth-child(1) {
240 | top: 200px;
241 | }
242 | .thorns > div:nth-child(2) {
243 | top: 170px;
244 | }
245 | .thorns > div:nth-child(4) {
246 | top: 230px;
247 | }
248 |
249 | @keyframes bloom2 {
250 | 50% {
251 | transform: rotate(-90deg);
252 | top: 200px;
253 | left: 100px;
254 | }
255 | 100% {
256 | transform: rotate(-60deg);
257 | top: 252px;
258 | left: 50px;
259 | background: #71122a;
260 | box-shadow: 0px 0px 0px rgba(245, 148, 184, 0);
261 | }
262 | }
263 | @keyframes bloom3 {
264 | 100% {
265 | transform: rotate(45deg);
266 | }
267 | }
268 | @keyframes bloom4 {
269 | 100% {
270 | transform: rotate(-20deg);
271 | }
272 | }
273 | @keyframes bloom5 {
274 | 100% {
275 | transform: rotate(20deg);
276 | }
277 | }
278 | @keyframes bloom6 {
279 | 100% {
280 | transform: rotate(-5deg);
281 | }
282 | }
283 | @keyframes bloom7 {
284 | 100% {
285 | transform: rotate(5deg);
286 | }
287 | }
288 | @keyframes glowing {
289 | 50% {
290 | background: #d7365f;
291 | box-shadow: 0px 0px 60px #f594b8;
292 | }
293 | }
294 | @keyframes falling {
295 | 20% {
296 | top: 335px;
297 | background: #9d193b;
298 | box-shadow: 0px 0px 0px rgba(245, 148, 184, 0);
299 | }
300 | 100% {
301 | top: 335px;
302 | opacity: 0;
303 | }
304 | }
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/dist/style.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Archivo+Black");
2 | html, body {
3 | width: 100%;
4 | height: 100%;
5 | overflow: hidden;
6 | background: #5ab3b5;
7 | margin: 0;
8 | padding: 0;
9 | cursor: url("https://acupoftee.github.io/images/slice-of-pizza.png"), auto;
10 | }
11 |
12 | p {
13 | font-family: "Archivo Black";
14 | text-transform: uppercase;
15 | text-align: center;
16 | margin-top: 180px;
17 | color: #a0d3d5;
18 | }
19 |
20 | .container {
21 | position: absolute;
22 | left: 50%;
23 | top: 50%;
24 | transform: translate(-50%, -50%);
25 | }
26 | .container .me {
27 | transition: all 0.5s ease;
28 | position: absolute;
29 | left: 0;
30 | right: 0;
31 | margin: auto;
32 | width: 80px;
33 | height: 160px;
34 | }
35 | .container .me .head {
36 | position: absolute;
37 | width: 70px;
38 | height: 90px;
39 | top: 10px;
40 | background: #b5612c;
41 | border-radius: 100px;
42 | left: 4px;
43 | transition: all 0.5s ease;
44 | }
45 | .container .me .head .bangs, .container .me .head .bangs-upper {
46 | position: absolute;
47 | width: 94%;
48 | height: 50px;
49 | top: -12px;
50 | transition: all 0.5s ease;
51 | }
52 | .container .me .head .bangs span, .container .me .head .bangs-upper span {
53 | position: absolute;
54 | width: 30px;
55 | height: 30px;
56 | background: black;
57 | border-radius: 100%;
58 | }
59 | .container .me .head .bangs span:nth-child(2), .container .me .head .bangs-upper span:nth-child(2) {
60 | left: 20px;
61 | }
62 | .container .me .head .bangs span:nth-child(3), .container .me .head .bangs-upper span:nth-child(3) {
63 | left: 40px;
64 | }
65 | .container .me .head .bangs-upper {
66 | margin-top: -12px;
67 | }
68 | .container .me .head.look-left {
69 | width: 70px;
70 | left: -10px;
71 | }
72 | .container .me .head.look-left .bangs, .container .me .head.look-left .bangs-upper {
73 | width: 106%;
74 | left: -7px;
75 | }
76 | .container .me .head.look-right {
77 | width: 70px;
78 | left: 15px;
79 | }
80 | .container .me .head.look-right .bangs, .container .me .head.look-right .bangs-upper {
81 | width: 106%;
82 | left: 5px;
83 | }
84 | .container .me .face {
85 | transition: all 0.5s ease;
86 | position: absolute;
87 | top: 30px;
88 | }
89 | .container .me .face .eyes {
90 | display: flex;
91 | justify-content: space-between;
92 | }
93 | .container .me .face .eyes:before, .container .me .face .eyes:after {
94 | content: "";
95 | display: block;
96 | position: relative;
97 | transform-origin: center;
98 | width: 9px;
99 | height: 30px;
100 | background: black;
101 | border-radius: 200px;
102 | left: 3px;
103 | margin: -2px 12px;
104 | animation: blink 4s infinite;
105 | transition: all 0.5s ease;
106 | }
107 | .container .me .face .glasses {
108 | position: relative;
109 | width: 5px;
110 | height: 2px;
111 | background: #f89714;
112 | left: 50%;
113 | top: 15px;
114 | }
115 | .container .me .face .glasses .left, .container .me .face .glasses .right {
116 | position: absolute;
117 | width: 40px;
118 | height: 40px;
119 | background: transparent;
120 | border-radius: 100%;
121 | border: 2px solid #f89714;
122 | left: -42px;
123 | top: -22px;
124 | overflow: hidden;
125 | z-index: 2;
126 | }
127 | .container .me .face .glasses .right {
128 | left: 4px;
129 | }
130 | .container .me .face.look-left {
131 | left: -7px;
132 | }
133 | .container .me .face.look-right {
134 | left: 5px;
135 | }
136 | .container .me .shine {
137 | position: absolute;
138 | }
139 | .container .me .shine:before, .container .me .shine:after {
140 | content: "";
141 | position: absolute;
142 | width: 20px;
143 | height: 100px;
144 | background: white;
145 | opacity: 0.3;
146 | transform: rotate(30deg);
147 | top: -30px;
148 | left: 5px;
149 | }
150 | .container .me .shine:after {
151 | width: 5px;
152 | left: 30px;
153 | }
154 | .container .me .neck {
155 | position: absolute;
156 | width: 20px;
157 | height: 60px;
158 | background: #b5612c;
159 | top: 60px;
160 | left: 30px;
161 | border-radius: 0px 0px 100px 100px;
162 | overflow: hidden;
163 | }
164 | .container .me .neck:before {
165 | content: "";
166 | position: absolute;
167 | width: 60px;
168 | height: 60px;
169 | background: #8c4b22;
170 | border-radius: 100%;
171 | top: -12px;
172 | left: -18px;
173 | transition: all 0.5s ease;
174 | }
175 | .container .me .neck.look-left:before {
176 | left: -38px;
177 | }
178 | .container .me .neck.look-right:before {
179 | left: -5px;
180 | }
181 | .container .me .shirt {
182 | position: absolute;
183 | width: 80px;
184 | height: 40px;
185 | background: #b51231;
186 | top: 105px;
187 | border-radius: 100px 100px 10px 10px;
188 | overflow: hidden;
189 | }
190 | .container .me .shirt:after {
191 | content: "\2665";
192 | position: absolute;
193 | color: #870d24;
194 | top: 15px;
195 | left: 50px;
196 | }
197 | .container .me .hair {
198 | transition: all 0.5s ease;
199 | position: absolute;
200 | width: 90px;
201 | height: 120px;
202 | left: -8%;
203 | top: -10%;
204 | }
205 | .container .me .hair .first-row, .container .me .hair .second-row, .container .me .hair .third-row, .container .me .hair .fourth-row, .container .me .hair .fifth-row {
206 | position: absolute;
207 | }
208 | .container .me .hair .first-row span, .container .me .hair .second-row span, .container .me .hair .third-row span, .container .me .hair .fourth-row span, .container .me .hair .fifth-row span {
209 | width: 30px;
210 | height: 30px;
211 | border-radius: 100%;
212 | background: black;
213 | position: absolute;
214 | }
215 | .container .me .hair .first-row span:nth-child(1), .container .me .hair .second-row span:nth-child(1), .container .me .hair .third-row span:nth-child(1), .container .me .hair .fourth-row span:nth-child(1), .container .me .hair .fifth-row span:nth-child(1) {
216 | top: 5px;
217 | }
218 | .container .me .hair .first-row span:nth-child(2), .container .me .hair .second-row span:nth-child(2), .container .me .hair .third-row span:nth-child(2), .container .me .hair .fourth-row span:nth-child(2), .container .me .hair .fifth-row span:nth-child(2) {
219 | left: 30px;
220 | }
221 | .container .me .hair .first-row span:nth-child(3), .container .me .hair .second-row span:nth-child(3), .container .me .hair .third-row span:nth-child(3), .container .me .hair .fourth-row span:nth-child(3), .container .me .hair .fifth-row span:nth-child(3) {
222 | left: 60px;
223 | top: 5px;
224 | }
225 | .container .me .hair .first-row span:nth-child(4), .container .me .hair .second-row span:nth-child(4), .container .me .hair .third-row span:nth-child(4), .container .me .hair .fourth-row span:nth-child(4), .container .me .hair .fifth-row span:nth-child(4) {
226 | left: 15px;
227 | }
228 | .container .me .hair .first-row span:nth-child(5), .container .me .hair .second-row span:nth-child(5), .container .me .hair .third-row span:nth-child(5), .container .me .hair .fourth-row span:nth-child(5), .container .me .hair .fifth-row span:nth-child(5) {
229 | border-radius: 80%;
230 | left: 45px;
231 | }
232 | .container .me .hair .second-row {
233 | top: 20px;
234 | }
235 | .container .me .hair .third-row {
236 | top: 40px;
237 | }
238 | .container .me .hair .fourth-row {
239 | top: 60px;
240 | left: 2px;
241 | }
242 | .container .me .hair .fourth-row span {
243 | width: 25px;
244 | height: 25px;
245 | }
246 | .container .me .hair .fifth-row {
247 | top: 80px;
248 | left: 7.2px;
249 | }
250 | .container .me .hair .fifth-row span {
251 | width: 15px;
252 | height: 15px;
253 | }
254 | .container .me .hair.look-left {
255 | width: 55px;
256 | left: -17px;
257 | }
258 | .container .me .hair.look-right {
259 | width: 55px;
260 | left: 2px;
261 | }
262 |
263 | @keyframes blink {
264 | 0% {
265 | transform: scaleY(1);
266 | }
267 | 18% {
268 | transform: scaleY(1);
269 | }
270 | 20% {
271 | transform: scaleY(0);
272 | }
273 | 25% {
274 | transform: scaleY(1);
275 | }
276 | 38% {
277 | transform: scaleY(1);
278 | }
279 | 40% {
280 | transform: scaleY(0);
281 | }
282 | 45% {
283 | transform: scaleY(1);
284 | }
285 | 80% {
286 | transform: scaleY(1);
287 | }
288 | }
--------------------------------------------------------------------------------
/day-13-14-super/dist/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fffaf0;
3 | }
4 |
5 | .trails {
6 | display: flex;
7 | justify-content: space-between;
8 | width: 90%;
9 | left: 0;
10 | position: absolute;
11 | }
12 | .trails li {
13 | background-color: #f9ad46;
14 | list-style: none;
15 | position: relative;
16 | border-radius: 200px;
17 | height: 400px;
18 | }
19 | .trails li:nth-child(1) {
20 | animation: flightTrail .22s linear infinite;
21 | width: 50px;
22 | }
23 | .trails li:nth-child(1):after {
24 | content: '';
25 | background-color: #fcd9a9;
26 | width: 15px;
27 | height: 350px;
28 | position: absolute;
29 | left: 15%;
30 | top: 5%;
31 | border-radius: 200px;
32 | }
33 | .trails li:nth-child(2) {
34 | animation: flightTrail .28s .1s linear infinite;
35 | width: 75px;
36 | }
37 | .trails li:nth-child(2):after {
38 | content: '';
39 | background-color: #fcd9a9;
40 | width: 20px;
41 | height: 350px;
42 | position: absolute;
43 | left: 15%;
44 | top: 5%;
45 | border-radius: 200px;
46 | }
47 | .trails li:nth-child(3) {
48 | animation: flightTrail .18s .03s linear infinite;
49 | width: 15px;
50 | }
51 | .trails li:nth-child(4) {
52 | animation: flightTrail .25s .01s linear infinite;
53 | width: 65px;
54 | }
55 | .trails li:nth-child(4):after {
56 | content: '';
57 | background-color: #fcd9a9;
58 | width: 20px;
59 | height: 350px;
60 | position: absolute;
61 | left: 15%;
62 | top: 5%;
63 | border-radius: 200px;
64 | }
65 | .trails li:nth-child(5) {
66 | animation: flightTrail .4s .01s linear infinite;
67 | width: 40px;
68 | }
69 | .trails li:nth-child(5):after {
70 | background-color: #fcd9a9;
71 | border-radius: 200px;
72 | content: '';
73 | height: 350px;
74 | left: 15%;
75 | position: absolute;
76 | top: 5%;
77 | width: 20px;
78 | }
79 |
80 | .container {
81 | background: #de197c;
82 | border-radius: 100%;
83 | height: 500px;
84 | left: 50%;
85 | overflow: hidden;
86 | position: absolute;
87 | top: 50%;
88 | transform: translate(-50%, -50%) scale(0.85);
89 | width: 500px;
90 | }
91 |
92 | .super-girl {
93 | animation: easeUpBody 0.7s ease-in-out alternate infinite;
94 | height: 400px;
95 | left: calc(50% - 100px);
96 | position: absolute;
97 | top: calc(50% - 150px);
98 | width: 200px;
99 | }
100 |
101 | .head {
102 | animation: easeUpHead 0.7s ease-in-out alternate infinite;
103 | background-color: #de5419;
104 | border-radius: 100px;
105 | box-shadow: inset -5px -10px #b04213;
106 | height: 210px;
107 | left: calc(50% - 80px);
108 | position: absolute;
109 | width: 160px;
110 | z-index: 4;
111 | }
112 | .head .face {
113 | height: 150px;
114 | left: calc(50% - 75px);
115 | position: absolute;
116 | top: calc(50% - 75px);
117 | width: 150px;
118 | }
119 | .head .face .eyes {
120 | animation: easeUpFace 0.7s ease-in-out alternate infinite;
121 | display: flex;
122 | justify-content: space-between;
123 | left: 6%;
124 | position: absolute;
125 | top: 60px;
126 | }
127 | .head .face .eyes::before, .head .face .eyes::after {
128 | border-radius: 200px;
129 | box-shadow: inset 0px 10px #020916;
130 | content: '';
131 | height: 45px;
132 | margin: 0 10px;
133 | width: 45px;
134 | }
135 | .head .face .smile {
136 | background-color: #fffaf0;
137 | border-bottom-left-radius: 50px;
138 | border-bottom-right-radius: 50px;
139 | height: 30px;
140 | left: calc(50% - 30px);
141 | overflow: hidden;
142 | position: absolute;
143 | top: 80%;
144 | width: 60px;
145 | }
146 |
147 | .hair {
148 | background-color: #020916;
149 | border-radius: 100%;
150 | box-shadow: inset 15px 0px #08265c;
151 | height: 220px;
152 | left: calc(50% - 110px);
153 | position: absolute;
154 | top: -12%;
155 | width: 220px;
156 | }
157 | .hair::after {
158 | animation: easeUpHair 0.7s ease-in-out alternate infinite;
159 | background-color: #020916;
160 | border-radius: 0px 300px 0px 300px;
161 | content: '';
162 | height: 110px;
163 | left: 63px;
164 | position: absolute;
165 | top: 25px;
166 | transform: rotate(-5deg);
167 | width: 130px;
168 | z-index: 5;
169 | }
170 |
171 | .neck {
172 | background-color: #c74b16;
173 | border-bottom-left-radius: 100%;
174 | border-bottom-right-radius: 100%;
175 | height: 70px;
176 | left: calc(50% - 30px);
177 | position: absolute;
178 | top: 45%;
179 | width: 60px;
180 | z-index: 4;
181 | }
182 | .neck::after {
183 | background-color: #a73f12;
184 | border-bottom-left-radius: 100%;
185 | border-bottom-right-radius: 100%;
186 | content: '';
187 | height: 40px;
188 | position: absolute;
189 | width: 100%;
190 | }
191 |
192 | .body {
193 | background-color: #670050;
194 | border-top-left-radius: 200px;
195 | border-top-right-radius: 200px;
196 | height: 300px;
197 | left: calc(50% - 80px);
198 | position: absolute;
199 | top: 50%;
200 | width: 160px;
201 | }
202 |
203 | .ponytail {
204 | background-color: #020916;
205 | border-radius: 200px;
206 | box-shadow: inset 15px 0px #0b2f74;
207 | height: 200px;
208 | left: -20px;
209 | position: absolute;
210 | top: 30%;
211 | width: 120px;
212 | }
213 | .ponytail:after {
214 | background: #020916;
215 | border-radius: 0 0 400px 400px;
216 | box-shadow: inset 15px 0px #0b2f74;
217 | content: '';
218 | height: 100px;
219 | left: -34%;
220 | position: absolute;
221 | width: 160px;
222 | top: 60%;
223 | }
224 |
225 | .arm-left {
226 | animation: rotateLeft 0.7s ease-in-out alternate infinite;
227 | background-color: #670050;
228 | border-top-left-radius: 200px;
229 | border-bottom-left-radius: 200px;
230 | height: 60px;
231 | left: 10%;
232 | position: absolute;
233 | top: 70%;
234 | transform: rotate(35deg);
235 | transform-origin: 80% 15%;
236 | width: 200px;
237 | z-index: 2;
238 | }
239 | .arm-left .hand {
240 | background-color: #de5419;
241 | border-top-left-radius: 200px;
242 | border-bottom-left-radius: 200px;
243 | height: 60px;
244 | width: 60px;
245 | }
246 |
247 | .arm-right {
248 | animation: rotateRight 0.7s ease-in-out alternate infinite;
249 | background-color: #670050;
250 | border-top-left-radius: 200px;
251 | border-bottom-left-radius: 200px;
252 | height: 60px;
253 | left: 33%;
254 | position: absolute;
255 | top: 75%;
256 | transform: rotate(145deg);
257 | transform-origin: 80% 15%;
258 | width: 200px;
259 | }
260 | .arm-right .hand {
261 | background-color: #de5419;
262 | border-top-left-radius: 200px;
263 | border-bottom-left-radius: 200px;
264 | height: 60px;
265 | width: 50px;
266 | }
267 |
268 | .fingers {
269 | left: -23%;
270 | list-style: none;
271 | position: absolute;
272 | top: -38%;
273 | }
274 | .fingers li {
275 | background-color: #d95218;
276 | box-shadow: inset -4px 4px #993a11;
277 | position: relative;
278 | border-radius: 200px;
279 | margin: auto -1%;
280 | height: 19px;
281 | width: 45px;
282 | }
283 | .fingers li:nth-child(1), .fingers li:nth-child(4) {
284 | left: 20%;
285 | }
286 |
287 | .thumb {
288 | background-color: #b04213;
289 | border-radius: 100%;
290 | height: 25px;
291 | left: 12%;
292 | position: absolute;
293 | top: -5%;
294 | width: 25px;
295 | }
296 | .thumb::after {
297 | background-color: #c74b16;
298 | border-radius: 200px;
299 | box-shadow: inset -4px 4px #993a11;
300 | content: '';
301 | height: 35px;
302 | position: absolute;
303 | width: 18px;
304 | }
305 |
306 | @keyframes flightTrail {
307 | 0% {
308 | transform: translate(0, -400px);
309 | }
310 | 100% {
311 | transform: translate(0, 600px);
312 | }
313 | }
314 | @keyframes rotateLeft {
315 | from {
316 | transform: rotate(35deg);
317 | }
318 | to {
319 | transform: rotate(50deg);
320 | }
321 | }
322 | @keyframes rotateRight {
323 | from {
324 | transform: rotate(145deg);
325 | }
326 | to {
327 | transform: rotate(125deg);
328 | }
329 | }
330 | @keyframes easeUpBody {
331 | from {
332 | transform: translateY(2%);
333 | }
334 | to {
335 | transform: translateY(5%);
336 | }
337 | }
338 | @keyframes easeUpHead {
339 | from {
340 | transform: translateY(0%);
341 | }
342 | to {
343 | transform: translateY(1.5%);
344 | }
345 | }
346 | @keyframes easeUpHair {
347 | from {
348 | transform: translateY(0%);
349 | }
350 | to {
351 | transform: translateY(1.5%);
352 | }
353 | }
354 | @keyframes easeUpFace {
355 | from {
356 | transform: translateY(0%);
357 | }
358 | to {
359 | transform: scaleY(0.9);
360 | }
361 | }
--------------------------------------------------------------------------------
/day-6-are-you-gonna-eat-that-interactive-pen/src/style.scss:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Archivo+Black");
2 |
3 | $background: #5ab3b5;
4 | $font: "Archivo Black";
5 | $headHeight: 90px;
6 | $headWidth: 70px;
7 | $headTop: 10px;
8 | $skinTone: #b5612c;
9 | $bangsHeight: 50px;
10 | $bangsTop: -12px;
11 | $bangsWidth: 94%;
12 | $shirt: #b51231;
13 | $glasses: #f89714;
14 |
15 |
16 | html,body {
17 | width: 100%;
18 | height: 100%;
19 | overflow: hidden;
20 | background: $background;
21 | margin: 0;
22 | padding: 0;
23 | cursor: url('https://acupoftee.github.io/images/slice-of-pizza.png'), auto;
24 | }
25 | p {
26 | font-family: $font;
27 | text-transform: uppercase;
28 | text-align: center;
29 | margin-top: 180px;
30 | color: lighten($background, 20%);
31 | }
32 | .container {
33 | position: absolute;
34 | left: 50%;
35 | top: 50%;
36 | transform: translate(-50%, -50%);
37 | .me {
38 | transition: all 0.5s ease;
39 | position: absolute;
40 | left: 0;
41 | right: 0;
42 | margin: auto;
43 | width: 80px;
44 | height: 160px;
45 | .head {
46 | position: absolute;
47 | width: $headWidth;
48 | height: $headHeight;
49 | top: $headTop;
50 | background: $skinTone;
51 | border-radius: 100px;
52 | left: 4px;
53 | transition: all 0.5s ease;
54 | .bangs {
55 | position: absolute;
56 | width: $bangsWidth;
57 | height: $bangsHeight;
58 | top: $bangsTop;
59 | transition: all 0.5s ease;
60 | span {
61 | //transition: all 0.5 ease;
62 | position: absolute;
63 | width: 30px;
64 | height: 30px;
65 | background: black;
66 | border-radius: 100%;
67 | &:nth-child(2) {
68 | left: 20px;
69 | }
70 | &:nth-child(3) {
71 | left: 40px;
72 | }
73 | }
74 | }
75 | .bangs-upper {
76 | @extend .bangs;
77 | margin-top: -12px;
78 | }
79 | &.look-left {
80 | width: $headWidth;
81 | left: -10px;
82 | .bangs {
83 | width: $bangsWidth + 12;
84 | left: -7px;
85 | }
86 | }
87 | &.look-right {
88 | width: $headWidth;
89 | left: 15px;
90 | .bangs {
91 | width: $bangsWidth + 12;
92 | left: 5px;
93 | }
94 | }
95 | } // end head
96 | .face {
97 | transition: all 0.5s ease;
98 | position: absolute;
99 | top: 30px;
100 | .eyes {
101 | display: flex;
102 | justify-content: space-between;
103 | &:before,
104 | &:after {
105 | content: "";
106 | display: block;
107 | position: relative;
108 | transform-origin: center;
109 | width: 9px;
110 | height: 30px;
111 | background: black;
112 | border-radius: 200px;
113 | left: 3px;
114 | margin: -2px 12px;
115 | animation: blink 4s infinite;
116 | transition: all 0.5s ease;
117 | }
118 | } // end eyes
119 | .glasses {
120 | position: relative;
121 | width: 5px;
122 | height: 2px;
123 | background: $glasses;
124 | left: 50%;
125 | top: 15px;
126 | .left {
127 | position: absolute;
128 | width: 40px;
129 | height: 40px;
130 | background: transparent;
131 | border-radius: 100%;
132 | border: 2px solid $glasses;
133 | left: -42px;
134 | top: -22px;
135 | overflow: hidden;
136 | z-index: 2;
137 | }
138 | .right {
139 | @extend .left;
140 | left: 4px;
141 | }
142 | } // end glasses
143 | &.look-left {
144 | left: -7px;
145 | }
146 | &.look-right {
147 | left: 5px;
148 | }
149 | // &.look-down {
150 | // top: 40px;
151 | // .eyes:before, .eyes:after {
152 | // height: 25px;
153 | // margin-top: 2px;
154 | // }
155 | // }
156 | // &.look-up {
157 | // top: 20px;
158 | // .eyes:before, .eyes:after {
159 | // height: 25px;
160 | // margin-top: -2px;
161 | // }
162 | // }
163 | // &.look-bottom-right {
164 | // top: 40px;
165 | // left: 5px;
166 | // .eyes:before, .eyes:after {
167 | // height: 25px;
168 | // margin-top: -1px;
169 | // }
170 | // }
171 | // &.look-bottom-left {
172 | // top: 40px;
173 | // left: -7px;
174 | // .eyes:before, .eyes:after {
175 | // height: 25px;
176 | // margin-top: -1px;
177 | // }
178 | // }
179 | // &.look-top-right {
180 | // top: 20px;
181 | // left: 5px;
182 | // .eyes:before, .eyes:after {
183 | // height: 25px;
184 | // margin-top: -2px;
185 | // }
186 | // }
187 | // &.look-top-left {
188 | // top: 20px;
189 | // left: -7px;
190 | // .eyes:before, .eyes:after {
191 | // height: 25px;
192 | // margin-top: -2px;
193 | // }
194 | // }
195 | } // end face
196 |
197 | .shine {
198 | position: absolute;
199 | &:before {
200 | content: "";
201 | position: absolute;
202 | width: 20px;
203 | height: 100px;
204 | background: white;
205 | opacity: 0.3;
206 | transform: rotate(30deg);
207 | top: -30px;
208 | left: 5px;
209 | }
210 | &:after {
211 | @extend .shine:before;
212 | width: 5px;
213 | left: 30px;
214 | }
215 | } // end shine
216 | .neck {
217 | position: absolute;
218 | width: 20px;
219 | height: 60px;
220 | background: $skinTone;
221 | top: 60px;
222 | left: 30px;
223 | border-radius: 0px 0px 100px 100px;
224 | overflow: hidden;
225 | &:before {
226 | content: "";
227 | position: absolute;
228 | width: 60px;
229 | height: 60px;
230 | background: darken($skinTone, 10%);
231 | border-radius: 100%;
232 | top: -12px;
233 | left: -18px;
234 | transition: all 0.5s ease;
235 | }
236 | &.look-left:before {
237 | left: -38px;
238 | }
239 | &.look-right:before {
240 | left: -5px;
241 | }
242 | } // end neck
243 |
244 | .shirt {
245 | position: absolute;
246 | width: 80px;
247 | height: 40px;
248 | background: $shirt;
249 | top: 105px;
250 | border-radius: 100px 100px 10px 10px;
251 | overflow: hidden;
252 | &:after {
253 | content: "\2665";
254 | position: absolute;
255 | color: darken($shirt, 10%);
256 | top: 15px;
257 | left: 50px;
258 | }
259 |
260 | } // end shirt
261 | .hair {
262 | transition: all 0.5s ease;
263 | position: absolute;
264 | width: 90px;
265 | height: 120px;
266 | left: -8%;
267 | top: -10%;
268 | .first-row {
269 | position: absolute;
270 | span {
271 | width: 30px;
272 | height: 30px;
273 | border-radius: 100%;
274 | background: black;
275 | position: absolute;
276 | &:nth-child(1) {
277 | top: 5px;
278 | }
279 | &:nth-child(2) {
280 | left: 30px;
281 | }
282 | &:nth-child(3) {
283 | left: 60px;
284 | top: 5px;
285 | }
286 | &:nth-child(4) {
287 | left: 15px;
288 | }
289 | &:nth-child(5) {
290 | border-radius: 80%;
291 | left: 45px;
292 | }
293 | }
294 | }
295 | .second-row {
296 | @extend .first-row;
297 | top: 20px;
298 | }
299 | .third-row {
300 | @extend .first-row;
301 | top: 40px;
302 | }
303 | .fourth-row {
304 | @extend .first-row;
305 | top: 60px;
306 | left: 2px;
307 | span {
308 | width: 25px;
309 | height: 25px;
310 | }
311 | }
312 | .fifth-row {
313 | @extend .first-row;
314 | top: 80px;
315 | left: 7.2px;
316 | span {
317 | width: 15px;
318 | height: 15px;
319 | }
320 | }
321 | &.look-left {
322 | width: 55px;
323 | left: -17px;
324 | }
325 | &.look-right {
326 | width: 55px;
327 | left: 2px;
328 | }
329 | } // end hair
330 | } // end me (but please don't actually)
331 | } // end container
332 |
333 | @keyframes blink {
334 | 0% {
335 | transform: scaleY(1);
336 | }
337 | 18% {
338 | transform: scaleY(1);
339 | }
340 | 20% {
341 | transform: scaleY(0);
342 | }
343 | 25% {
344 | transform: scaleY(1);
345 | }
346 | 38% {
347 | transform: scaleY(1);
348 | }
349 | 40% {
350 | transform: scaleY(0);
351 | }
352 | 45% {
353 | transform: scaleY(1);
354 | }
355 | 80% {
356 | transform: scaleY(1);
357 | }
358 | }
359 |
--------------------------------------------------------------------------------
/day-10-11-coder/src/style.sass:
--------------------------------------------------------------------------------
1 | $background: #fad0d9
2 | $windowFrame: #393d73
3 | $windowMetal: #a6a9d3
4 | $white: #fffaf0
5 |
6 | // sky colors
7 | $sky: #aadbea
8 | $sunset: #ff5f6d
9 | $night: #201b46
10 |
11 | // $sky: linear-gradient(to bottom, #4ca1af, #c4e0e5)
12 | // $sunset: linear-gradient(to bottom, #ff5f6d, #ffc371)
13 | // $night: linear-gradient(to bottom, #020107 0%, #201b46 40%)
14 |
15 | $sunsetCloud: darken(white, 15%)
16 | $nightCloud: darken(white, 30%)
17 |
18 | // tech variables
19 | $ideBackground: #301353
20 | $buttonRed: #FF4766
21 | $buttonYellow: #FFB023
22 | $buttonGreen: darken(#6ADEAE, 20%)
23 | $buttonOffset: 20px
24 | $codeGreenLength: 80px
25 | $codeYellowLength: 45px
26 | $codeRedLength: 60px
27 |
28 | // avatar variables
29 | $hair: #020916
30 | $shirt: #b51231
31 | $skin: #c74b16
32 |
33 | =bar()
34 | .bar
35 | position: absolute
36 | width: 100%
37 | height: 30px
38 | background: black
39 | z-index: 5
40 | .button
41 | position: absolute
42 | margin-left: 10px
43 | margin-top: 10px
44 | margin-right: 15px
45 | width: 10px
46 | height: 10px
47 | border-radius: 100%
48 | #red
49 | background: $buttonRed
50 | #yellow
51 | left: $buttonOffset
52 | background: $buttonYellow
53 | #green
54 | left: $buttonOffset * 2
55 | background: $buttonGreen
56 |
57 |
58 | body
59 | height: 100%
60 | width: 100%
61 | background: $white
62 | ul
63 | list-style: none
64 |
65 | .container
66 | transition: all 5s ease
67 | width: 450px
68 | height: 450px
69 | background: $background //purple
70 | position: absolute
71 | transform: translate(-50%, -50%)
72 | left: 50%
73 | top: 50%
74 | border-radius: 100%
75 | overflow: hidden
76 | animation: wallChange 40s ease-in-out infinite
77 |
78 | .window
79 | transition: all 5s ease
80 | width: 200px
81 | height: 200px
82 | background: $sky
83 | position: absolute
84 | left: 50%
85 | border: 10px solid $windowFrame
86 | border-radius: 10px
87 | animation: skyChange 40s ease-in-out infinite
88 | overflow: hidden
89 | .cloud
90 | position: absolute
91 | background: white
92 | width: 35px
93 | height: 30px
94 | top: 20px
95 | left: 20px
96 | border-radius: 100px
97 | &:before
98 | content: ""
99 | position: absolute
100 | @extend .cloud
101 | width: 30px
102 | left: -5px
103 | top: 10px
104 | animation: cloudChange 40s ease-in-out infinite
105 | &:after
106 | content: ""
107 | position: absolute
108 | @extend .cloud
109 | width: 40px
110 | left: 15px
111 | top: 12px
112 | animation: cloudChange 40s ease-in-out infinite
113 |
114 | #first-cloud
115 | animation: cloudMove 25s linear infinite, cloudChange 40s ease-in-out infinite
116 |
117 | #second-cloud
118 | top: 80px
119 | left: -60px
120 | animation: cloudMove 40s 10s linear infinite, cloudChange 40s ease-in-out infinite
121 |
122 |
123 | .small-monitor
124 | position: absolute
125 | width: 160px
126 | height: 210px
127 | top: 20%
128 | border-radius: 10px
129 | background: $ideBackground
130 | overflow: hidden
131 | border: 8px solid lighten($windowMetal, 10%)
132 | border-bottom: 50px solid lighten($windowMetal, 10%)
133 | box-shadow: -5px 5px $windowMetal
134 | left: 10px
135 | +bar()
136 | .screen
137 | position: absolute
138 | width: 190px
139 | height: 240px
140 | backgorund: $ideBackground
141 | margin-top: 30px
142 | li
143 | position: relative
144 | width: 20px
145 | height: 5px
146 | margin-top: 4px
147 | left: -20px
148 | border-radius: 5px
149 | background: white
150 | @for $i from 1 to 5
151 | &:nth-child(#{$i})
152 | background: $buttonGreen
153 | width: 100px
154 | @for $i from 5 to 8
155 | &:nth-child(#{$i})
156 | $width: 100px - $i * 10
157 | background: $buttonRed
158 | width: $width
159 | left: 8px
160 | @for $i from 8 to 19
161 | &:nth-child(#{$i})
162 | $width: 100px - $i * 10
163 | background: $buttonYellow
164 | width: $width
165 | .inline-code
166 | position: relative
167 | display: inline-block
168 | width: 40px
169 | height: 5px
170 | background: pink
171 |
172 | .main-monitor
173 | position: absolute
174 | width: 250px
175 | height: 200px
176 | top: 30%
177 | left: 25%
178 | border-radius: 10px
179 | background: $ideBackground
180 | overflow: hidden
181 | border: 8px solid lighten($windowMetal, 10%)
182 | border-bottom: 50px solid lighten($windowMetal, 10%)
183 | box-shadow: -5px 5px $windowMetal
184 | +bar()
185 | .screen
186 | position: absolute
187 | width: 190px
188 | height: 240px
189 | max-height: 200px
190 | overflow: hidden
191 | li
192 | position: relative
193 | height: 5px
194 | margin: 5px 0
195 | left: -20px
196 | border-radius: 5px
197 | @for $i from 1 to 31
198 | &:nth-child(#{$i})
199 | @if $i % 3 == 0
200 | background: $buttonRed
201 | width: $codeRedLength
202 | @else if $i % 2 == 0
203 | background: $buttonGreen
204 | width: $codeGreenLength
205 | @else
206 | background: $buttonYellow
207 | width: $codeYellowLength
208 | ul
209 | position: absolute
210 | top: 0
211 | animation: codeMove 5s linear infinite
212 | .avatar
213 | position: absolute
214 | width: 150px
215 | height: 300px
216 | top: 40%
217 | left: 50%
218 | .avatar-body
219 | position: absolute
220 | width: 130px
221 | height: 100px
222 | background: $shirt
223 | top: 70%
224 | border-radius: 30px
225 | .avatar-collar
226 | position: absolute
227 | width: 80px
228 | height: 35px
229 | background: darken(white, 10%)
230 | top: 65%
231 | left: calc(45% - 40px)
232 | .avatar-neck
233 | position: absolute
234 | width: 50px
235 | height: 60px
236 | background: $skin
237 | top: 50%
238 | left: calc(45% - 25px)
239 | .avatar-head
240 | position: absolute
241 | width: 150px
242 | height: 150px
243 | background: $hair
244 | border-radius: 100%
245 | top: 10%
246 | left: calc(42% - 75px)
247 | border-bottom: 6px solid $skin
248 | border-left: 5px solid lighten($hair, 10%)
249 | border-right: 5px solid lighten($hair, 10%)
250 | box-shadow: inset 10px 10px lighten($hair, 10%)
251 | .avatar-hairband
252 | position: absolute
253 | width: 80px
254 | height: 80px
255 | background: $shirt
256 | border-radius: 100%
257 | left: calc(63% - 40px)
258 | top: 25%
259 | .avatar-hair
260 | width: 85px
261 | height: 120px
262 | position: absolute
263 | background: $hair
264 | left: 40%
265 | top: 25%
266 | border-radius: 200px
267 | box-shadow: inset 10px 10px lighten($hair, 10%)
268 | &:after
269 | content: ""
270 | position: absolute
271 | width: 120px
272 | height: 70px
273 | background: $hair
274 | border-radius: 0 0 300px 300px
275 | top: 60%
276 | box-shadow: inset 10px -10px lighten($hair, 10%)
277 |
278 | // https://stackoverflow.com/questions/34314474/css-infinite-scrolling-div
279 | @keyframes codeMove
280 | 100%
281 | top: -60%
282 |
283 | @keyframes skyChange
284 | 0%
285 | background: $sky
286 | 20%
287 | background: $sunset
288 | 40%
289 | background: $night
290 | 60%
291 | background: $sky
292 |
293 | @keyframes wallChange
294 | 0%
295 | background: $background
296 | 20%
297 | background: darken($background, 10%)
298 | 40%
299 | background: $ideBackground
300 | 60%
301 | background: $background
302 |
303 | @keyframes cloudChange
304 | 0%
305 | background: white
306 | 20%
307 | background: $sunsetCloud
308 | 40%
309 | background: $nightCloud
310 | 60%
311 | background: white
312 |
313 | @keyframes cloudMove
314 | 0%
315 | left: -30%
316 | 100%
317 | left: 100%
318 |
--------------------------------------------------------------------------------
/day-15-16-under-kamek-s-spell/src/style.scss:
--------------------------------------------------------------------------------
1 | $white: #fffaf0;
2 |
3 | // Scene vars
4 | $container-size: 450px;
5 | $night-sky: linear-gradient(to bottom, #360033, #0b8793);
6 | $night-sky-fallback: #2a0845;
7 |
8 | // mountain vars
9 | $mountain-border-radius: 200px;
10 | $front-hills:#3b0a30;
11 | $mid-hills: #6a3964;
12 | $back-hills: #522057;
13 | $magic-mountain-color: #311c30;
14 |
15 | // Trail vars
16 | $steps: 10;
17 | $saturation: 80%;
18 | $lightness: 60%;
19 | $hue-offset: 320;
20 | $trail-height: 500px;
21 | $trail-width: calc(460px / 10);
22 | $trail-radius: 23px;
23 | $trail-opacity: 0.6;
24 |
25 | // animation vars
26 | $kamek-timing: 6s;
27 | $trail-timing: 6s;
28 |
29 | // Color lists
30 | $hsl-colors: ();
31 | $bg-colors: ();
32 |
33 | // Populate $hsl-colors with calculated colors
34 | // These will be used to create the gradients in the second for loop
35 | @for $i from 1 through 11 {
36 | $color: hsl(360 / $steps * $i + $hue-offset, $saturation, $lightness);
37 | $hsl-colors: append($hsl-colors, $color);
38 | }
39 |
40 | // Define gradients with the newly created colors from $hsl-colors
41 | // Then, populate $background-colors with these newly created gradients
42 | @for $j from 1 through 10 {
43 | $bg: linear-gradient(to right, nth($hsl-colors, $j), nth($hsl-colors, $j + 1));
44 | $bg-colors: append($bg-colors, $bg);
45 | }
46 |
47 | // Returns a random number given a min value
48 | // and max value
49 | @function randomNum($min, $max) {
50 | $rand: random();
51 | @return ($min + floor($rand * (($max - $min) + 1)));
52 | }
53 |
54 | // Creates mountain ranges
55 | @mixin createHills($numHills, $minWidth, $maxWidth, $minHeight, $maxHeight) {
56 | @for $i from 1 through $numHills {
57 | &:nth-child(#{$i}) {
58 | width: randomNum($minWidth, $maxWidth);
59 | height: randomNum($minHeight, $maxHeight);
60 | }
61 | }
62 | }
63 |
64 | body {
65 | background-color: $white;
66 | }
67 |
68 | ul {
69 | list-style: none;
70 | padding-inline-start: 0;
71 | }
72 |
73 | .container {
74 | background: $night-sky-fallback;
75 | background: $night-sky;
76 | border-radius: 100%;
77 | height: $container-size;
78 | left: 50%;
79 | position: absolute;
80 | top: 50%;
81 | transform: translate(-50%, -50%);
82 | width: $container-size;
83 | overflow: hidden;
84 | /* this fixes the overflow:hidden in Chrome */
85 | -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
86 | mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
87 |
88 | }
89 |
90 | .stars {
91 | width: 100%;
92 | height: 400px;
93 | li {
94 | position: absolute;
95 | background-color: rgb(255, 242, 123);
96 | border-radius: 100%;
97 | @for $i from 1 through 60 {
98 | &:nth-child(#{$i}) {
99 | $starSize: randomNum(0, 3px);
100 | width: $starSize;
101 | height: $starSize;
102 | left: randomNum(0, 400px);
103 | top: randomNum(0, 350px);
104 | }
105 | }
106 | }
107 | }
108 |
109 | .cloud {
110 | width: 60px;
111 | height: 60px;
112 | border-radius: 100%;
113 | background-color: rgb(79, 111, 160);
114 | position: absolute;
115 | left: -30%;
116 | top: 10%;
117 | box-shadow: inset 10px 10px rgb(23, 30, 54);
118 | animation: moveCloud 60s 1s infinite;
119 | &:before {
120 | content: '';
121 | position: absolute;
122 | width: 55px;
123 | height: 55px;
124 | left: 30px;
125 | border-radius: 100%;
126 | top: 20px;
127 | background-color: rgb(79, 111, 160);
128 | }
129 | &:after {
130 | content: '';
131 | position: absolute;
132 | width: 60px;
133 | height: 60px;
134 | left: -20px;
135 | border-radius: 100%;
136 | top: 10px;
137 | background-color: rgb(79, 111, 160);
138 | box-shadow: inset 10px 10px rgb(23, 30, 54);
139 | }
140 |
141 | &:nth-child(2) {
142 | left: -50%;
143 | top: 20%;
144 | animation: moveCloud 100s 2s infinite;
145 | }
146 | }
147 |
148 | .hills {
149 | position: absolute;
150 | width: 460px;
151 | height: 200px;
152 | display: flex;
153 | align-items: flex-end;
154 | li {
155 | border-top-left-radius: $mountain-border-radius;
156 | border-top-right-radius: $mountain-border-radius;
157 | }
158 | }
159 |
160 | .magic-mountain {
161 | position: absolute;
162 | width: 150px;
163 | height: 300px;
164 | top: 32%;
165 | right: 60%;
166 | border-top-left-radius: $mountain-border-radius;
167 | border-top-right-radius: $mountain-border-radius;
168 | background-color: $magic-mountain-color;
169 | box-shadow: inset 10px 10px darken($magic-mountain-color, 10%);
170 |
171 | .eyes {
172 | position: absolute;
173 | display: flex;
174 | justify-content: space-between;
175 | width: 50%;
176 | left: 25%;
177 | top: 20%;
178 |
179 | &:before,
180 | &:after {
181 | content: "";
182 | width: 20px;
183 | height: 50px;
184 | background-color: black;
185 | border-radius: 100%;
186 | transform: scaleY(0);
187 | animation: wakeUp 2s 2s ease-in-out forwards, blink 4s 4s ease-in-out infinite;
188 | transition: 0.5s ease;
189 | }
190 | }
191 | }
192 |
193 | .front-hills {
194 | top: 67%;
195 | li {
196 | background-color: $front-hills;
197 | box-shadow: inset 5px 10px darken($front-hills, 10%);
198 | @include createHills(10, 300px, 400px, 100px, 200px);
199 | }
200 | }
201 |
202 | .mid-hills {
203 | top: 70%;
204 | li {
205 | background-color: $mid-hills;
206 | box-shadow: inset 5px 10px darken($mid-hills, 10%);
207 | @include createHills(7, 300px, 500px, 100px, 310px);
208 | }
209 | }
210 |
211 | .back-hills {
212 | top: 72%;
213 | li {
214 | background-color: $back-hills;
215 | box-shadow: inset 5px 10px darken($back-hills, 10%);
216 | @include createHills(5, 300px, 500px, 200px, 330px);
217 | }
218 | }
219 |
220 | .kamek {
221 | animation: fly $kamek-timing linear infinite;
222 | position: absolute;
223 | transform: scaleX(-1) rotate(10deg);
224 | top: 30%;
225 | left: -100%;
226 | z-index: 2;
227 | }
228 |
229 | .spell-trail {
230 | display: flex;
231 | opacity: $trail-opacity;
232 | height: 500px;
233 | width: 460px;
234 | position: absolute;
235 | top: 45%;
236 | transform-origin: center;
237 | z-index: 1;
238 | // align-items: flex-start;
239 | // with help from https://bennettfeely.com/clippy/
240 | clip-path: polygon( 15%, 100% 0, 100% 100%, 0 100%);
241 | -webkit-clip-path: polygon(0 15%, 100% 0, 100% 100%, 0 100%);
242 |
243 | .trail {
244 | height: 0;
245 | min-height: 0;
246 | position: relative;
247 | width: $trail-width;
248 | flex: 1;
249 |
250 | $delay: 0.8s;
251 | $percentage: 10%;
252 |
253 | // Creates a new rainbow trail with it's own animation
254 | @for $i from 1 through 10 {
255 | &:nth-child(#{$i}) {
256 | animation: createTrail $trail-timing $delay ease-in infinite;
257 | background-image: nth($bg-colors, $i);
258 | border-bottom-left-radius: $trail-radius;
259 | border-bottom-right-radius: $trail-radius;
260 | $delay: $delay + 0.2s;
261 |
262 | // image source: https://codepen.io/simeydotme/pen/PrQKgo
263 | .sparkles {
264 | background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/13471/sparkles.gif");
265 | background-position: $percentage 0;
266 | border-bottom-left-radius: $trail-radius;
267 | border-bottom-right-radius: $trail-radius;
268 | height: 100%;
269 | mix-blend-mode: color-dodge;
270 | width: $trail-width;
271 | $percentage: $percentage + 10%;
272 | }
273 | }
274 | }
275 | }
276 | }
277 |
278 | @keyframes fly {
279 | 50% {
280 | left: 110%;
281 | top: 10%;
282 | }
283 | 51% {
284 | transform: scaleX(-1) rotate(10deg);
285 | top: 30%;
286 | }
287 | 52% {
288 | transform: scaleX(1) rotate(10deg);
289 | }
290 | 100% {
291 | transform: scaleX(1) rotate(10deg);
292 | left: -100%;
293 | top: 10%;
294 | }
295 | }
296 |
297 | @keyframes createTrail {
298 | 25% {
299 | height: $trail-height;
300 | opacity: 1;
301 | }
302 | 65% {
303 | height: $trail-height;
304 | opacity: 0;
305 | }
306 | 100% {
307 | height: 0;
308 | opacity: 0;
309 | }
310 | }
311 |
312 | @keyframes wakeUp {
313 | 60% {
314 | transform: scaleY(0);
315 | }
316 | 100% {
317 | transform: scaleY(1);
318 | }
319 | }
320 |
321 | @keyframes blink {
322 | 0% {
323 | transform: scaleY(1);
324 | }
325 | 18% {
326 | transform: scaleY(1);
327 | }
328 | 20% {
329 | transform: scaleY(0);
330 | }
331 | 25% {
332 | transform: scaleY(1);
333 | }
334 | 38% {
335 | transform: scaleY(1);
336 | }
337 | 40% {
338 | transform: scaleY(0);
339 | }
340 | 45% {
341 | transform: scaleY(1);
342 | }
343 | 80% {
344 | transform: scaleY(1);
345 | }
346 | 100% {
347 | transform: scaleY(1);
348 | }
349 | }
350 | @keyframes moveCloud {
351 | 100% {
352 | left: 150%;
353 | }
354 | }
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/dist/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #48befe;
3 | font-family: 'Josefin Sans', sans-serif;
4 | font-size: 12px;
5 | }
6 |
7 | .container {
8 | position: absolute;
9 | white-space: nowrap;
10 | left: 50%;
11 | top: 50%;
12 | transform: translate(-50%, -50%);
13 | }
14 |
15 | ul {
16 | margin: 0;
17 | padding: 0;
18 | }
19 | ul li {
20 | list-style: none;
21 | }
22 |
23 | .egg {
24 | width: 175px;
25 | height: 220px;
26 | border-radius: 100px 100px 0px 0px;
27 | background: #fdfeff;
28 | position: relative;
29 | display: inline-block;
30 | animation: floating 5s ease-out infinite;
31 | left: -5%;
32 | }
33 | .egg .face {
34 | width: 130px;
35 | height: 130px;
36 | background: #ffdb10;
37 | position: absolute;
38 | margin: 15% 15%;
39 | border-radius: 100%;
40 | box-shadow: inset -10px 1px 0 #ffcc24;
41 | }
42 | .egg .face .eyes {
43 | width: 15px;
44 | height: 15px;
45 | background: #000;
46 | border-radius: 100%;
47 | position: relative;
48 | top: 55px;
49 | left: 38px;
50 | animation: blink 3s infinite 2s;
51 | }
52 | .egg .face .eyes::after {
53 | content: "";
54 | width: 15px;
55 | height: 15px;
56 | position: absolute;
57 | background: #000;
58 | border-radius: 100%;
59 | left: 50px;
60 | }
61 | .egg .face .smile {
62 | position: relative;
63 | border-bottom-left-radius: 90px;
64 | border-bottom-right-radius: 90px;
65 | width: 30px;
66 | height: 15px;
67 | background: #000;
68 | left: 55px;
69 | top: 60px;
70 | }
71 | .egg .face .smile::after {
72 | content: "";
73 | position: absolute;
74 | width: 10px;
75 | height: 5px;
76 | background: #ff7e7e;
77 | border-radius: 100%;
78 | left: 10px;
79 | top: 8px;
80 | }
81 | .egg .face .cheeks {
82 | position: relative;
83 | width: 12px;
84 | height: 12px;
85 | background: #ff7e7e;
86 | border-radius: 100%;
87 | opacity: 0.5;
88 | top: 40px;
89 | left: 30px;
90 | }
91 | .egg .face .cheeks::after {
92 | content: "";
93 | position: absolute;
94 | width: 12px;
95 | height: 12px;
96 | background: #ff7e7e;
97 | border-radius: 100%;
98 | left: 67px;
99 | }
100 | .egg .face .shine {
101 | position: relative;
102 | width: 8px;
103 | height: 20px;
104 | background: #fdfeff;
105 | border-radius: 200px;
106 | top: -10px;
107 | left: 12px;
108 | transform: rotate(20deg);
109 | }
110 | .egg .face .shine::after {
111 | position: absolute;
112 | content: "";
113 | width: 8px;
114 | height: 8px;
115 | background: #fdfeff;
116 | border-radius: 200px;
117 | top: -15px;
118 | left: 6px;
119 | }
120 | .egg ul {
121 | display: flex;
122 | }
123 | .egg li {
124 | position: relative;
125 | border-radius: 200px;
126 | }
127 | .egg li:nth-child(odd) {
128 | background: #fdfeff;
129 | }
130 | .egg li:nth-child(even) {
131 | background: #48befe;
132 | }
133 | .egg li:nth-child(1) {
134 | width: 30px;
135 | height: 60px;
136 | top: 175px;
137 | animation: anim1 1.5s ease-out infinite;
138 | }
139 | .egg li:nth-child(2) {
140 | width: 20px;
141 | height: 50px;
142 | top: 185px;
143 | animation: anim2 3s ease-out infinite;
144 | }
145 | .egg li:nth-child(3) {
146 | width: 28.5px;
147 | height: 60px;
148 | top: 195px;
149 | animation: anim3 1s ease-in-out infinite;
150 | }
151 | .egg li:nth-child(4) {
152 | width: 20px;
153 | height: 50px;
154 | top: 210px;
155 | animation: anim4 2.2s ease-out infinite;
156 | }
157 | .egg li:nth-child(5) {
158 | width: 28.5px;
159 | height: 60px;
160 | top: 190px;
161 | animation: anim3 1.5s ease-out infinite;
162 | }
163 | .egg li:nth-child(6) {
164 | width: 20px;
165 | height: 60px;
166 | top: 200px;
167 | animation: anim2 4s ease-out infinite;
168 | }
169 | .egg li:nth-child(7) {
170 | width: 28.5px;
171 | height: 60px;
172 | top: 190px;
173 | animation: anim1 1.5s ease-out infinite;
174 | }
175 |
176 | .ghost {
177 | width: 175px;
178 | height: 220px;
179 | border-radius: 100px 100px 0px 0px;
180 | background: #fdfeff;
181 | position: relative;
182 | display: inline-block;
183 | animation: floating 2s ease-out infinite;
184 | opacity: 0.75;
185 | left: 5%;
186 | }
187 | .ghost::before {
188 | content: "";
189 | width: 175px;
190 | height: 220px;
191 | border-radius: 100px 100px 0px 0px;
192 | background: #fdfeff;
193 | position: relative;
194 | display: inline-block;
195 | position: absolute;
196 | box-shadow: inset -15px 1px 0px #efefef;
197 | }
198 | .ghost .face {
199 | width: 130px;
200 | height: 130px;
201 | background: transparent;
202 | position: absolute;
203 | margin: -20% 10%;
204 | border-radius: 100%;
205 | }
206 | .ghost .face .eyes {
207 | opacity: 0.5;
208 | width: 15px;
209 | height: 15px;
210 | background: #000;
211 | border-radius: 100%;
212 | position: relative;
213 | top: 55px;
214 | left: 3px;
215 | animation: blink 5s infinite;
216 | }
217 | .ghost .face .eyes::after {
218 | content: "";
219 | width: 15px;
220 | height: 15px;
221 | position: absolute;
222 | background: #000;
223 | border-radius: 100%;
224 | left: 50px;
225 | }
226 | .ghost .face .smile {
227 | position: relative;
228 | opacity: 0.5;
229 | border-bottom-left-radius: 50px;
230 | border-bottom-right-radius: 50px;
231 | width: 10px;
232 | height: 6px;
233 | background: transparent;
234 | border: 5px solid #000;
235 | left: 25px;
236 | top: 55px;
237 | }
238 | .ghost .face .smile::before {
239 | background: #fdfeff;
240 | width: 30px;
241 | height: 7px;
242 | content: "";
243 | position: absolute;
244 | left: -10px;
245 | top: -5.5px;
246 | }
247 | .ghost .face .cheeks {
248 | position: relative;
249 | width: 12px;
250 | height: 12px;
251 | background: #ff7e7e;
252 | border-radius: 100%;
253 | opacity: 0.5;
254 | top: 43px;
255 | left: -4px;
256 | }
257 | .ghost .face .cheeks::after {
258 | content: "";
259 | position: absolute;
260 | width: 12px;
261 | height: 12px;
262 | background: #ff7e7e;
263 | border-radius: 100%;
264 | left: 67px;
265 | }
266 | .ghost ul {
267 | display: flex;
268 | }
269 | .ghost li {
270 | position: relative;
271 | border-radius: 200px;
272 | height: 60px;
273 | }
274 | .ghost li:nth-child(odd) {
275 | background: #fdfeff;
276 | width: 30px;
277 | top: 172px;
278 | z-index: -1;
279 | }
280 | .ghost li:nth-child(even) {
281 | background: #48befe;
282 | width: 7px;
283 | top: 215px;
284 | }
285 | .ghost li:nth-child(1) {
286 | animation: ghostani 3s ease-out infinite;
287 | }
288 | .ghost li:nth-child(3) {
289 | animation: ghostani 3s ease-out infinite 0.5s;
290 | }
291 | .ghost li:nth-child(5) {
292 | animation: ghostani 3s ease-out infinite 1.0s;
293 | }
294 | .ghost li:nth-child(7) {
295 | animation: ghostani 3s ease-out infinite 1.5s;
296 | }
297 | .ghost li:nth-child(9) {
298 | box-shadow: inset -15px 4px #efefef;
299 | animation: ghostani 3s ease-out infinite 2s;
300 | }
301 |
302 | .heart {
303 | position: absolute;
304 | display: inline-block;
305 | width: 30px;
306 | height: 30px;
307 | background: red;
308 | left: 45%;
309 | transform: rotate(45deg);
310 | animation: beat 0.7s linear infinite;
311 | }
312 | .heart::before, .heart::after {
313 | position: absolute;
314 | content: "";
315 | width: 30px;
316 | height: 30px;
317 | background: red;
318 | border-radius: 100%;
319 | top: -50%;
320 | animation: beat 0.7s linear infinite;
321 | }
322 | .heart::after {
323 | top: 0%;
324 | left: -50%;
325 | }
326 | .heart .light {
327 | width: 5px;
328 | height: 12px;
329 | background: white;
330 | position: absolute;
331 | border-radius: 200px;
332 | z-index: 3;
333 | left: -11px;
334 | top: 13px;
335 | transform: rotate(-10deg);
336 | animation: lightshift 0.7s linear infinite;
337 | }
338 | .heart .light::after {
339 | content: "";
340 | position: absolute;
341 | z-index: 3;
342 | width: 5px;
343 | height: 5px;
344 | background: white;
345 | border-radius: 200px;
346 | top: -5px;
347 | left: 1.5px;
348 | }
349 |
350 | .shadow {
351 | position: absolute;
352 | opacity: 0.2;
353 | width: 180px;
354 | height: 15px;
355 | background: #000;
356 | top: 275px;
357 | border-radius: 100%;
358 | }
359 |
360 | .shadow#egg-shadow {
361 | left: -20px;
362 | animation: shadow-ani 5s ease-out infinite;
363 | }
364 |
365 | .shadow#ghost-shadow {
366 | left: 195px;
367 | transform-origin: center;
368 | animation: shadow-ani 2s ease-out infinite;
369 | }
370 |
371 | @keyframes shadow-ani {
372 | 50% {
373 | width: 170px;
374 | height: 10px;
375 | }
376 | }
377 | @keyframes blink {
378 | 0% {
379 | transform: scaleY(1);
380 | }
381 | 18% {
382 | transform: scaleY(1);
383 | }
384 | 20% {
385 | transform: scaleY(0);
386 | }
387 | 25% {
388 | transform: scaleY(1);
389 | }
390 | 38% {
391 | transform: scaleY(1);
392 | }
393 | 40% {
394 | transform: scaleY(0);
395 | }
396 | 45% {
397 | transform: scaleY(1);
398 | }
399 | 80% {
400 | transform: scaleY(1);
401 | }
402 | }
403 | @keyframes beat {
404 | 20%,
405 | 40% {
406 | height: 40px;
407 | width: 40px;
408 | }
409 | }
410 | @keyframes lightshift {
411 | 20%,
412 | 40% {
413 | left: -15px;
414 | }
415 | }
416 | @keyframes floating {
417 | 0% {
418 | top: 0;
419 | }
420 | 50% {
421 | top: -10px;
422 | }
423 | 100% {
424 | top: 0;
425 | }
426 | }
427 | @keyframes anim1 {
428 | 50% {
429 | top: 180px;
430 | }
431 | }
432 | @keyframes anim2 {
433 | 50% {
434 | top: 178px;
435 | }
436 | }
437 | @keyframes anim3 {
438 | 50% {
439 | top: 205px;
440 | }
441 | }
442 | @keyframes anim4 {
443 | 50% {
444 | top: 205px;
445 | }
446 | }
447 | @keyframes ghostani {
448 | 50% {
449 | top: 180px;
450 | }
451 | }
--------------------------------------------------------------------------------
/day-4-eggstraterrestrial/dist/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #0f111d;
3 | }
4 |
5 | .container {
6 | position: absolute;
7 | left: 45%;
8 | top: 50%;
9 | transform: translate(-50%, -50%);
10 | animation: speed-up 3s ease-in-out infinite;
11 | }
12 |
13 | @keyframes speed-up {
14 | 50% {
15 | left: 65%;
16 | }
17 | }
18 | ul {
19 | margin: 0;
20 | padding: 0;
21 | }
22 | ul li {
23 | list-style: none;
24 | }
25 |
26 | .egg {
27 | width: 245px;
28 | height: 180px;
29 | border-radius: 0px 100px 100px 0px;
30 | background: #fff;
31 | position: relative;
32 | right: 20px;
33 | box-shadow: 0px 0px 20px #fff;
34 | }
35 | .egg .face {
36 | width: 140px;
37 | height: 140px;
38 | border-radius: 100%;
39 | background: #ffdb10;
40 | position: absolute;
41 | left: 35%;
42 | top: 11%;
43 | box-shadow: inset 10px 1px 0 #ffcc24;
44 | }
45 | .egg .face .eyes {
46 | position: relative;
47 | width: 15px;
48 | height: 15px;
49 | background: #000;
50 | border-radius: 100%;
51 | left: 35px;
52 | top: 58px;
53 | animation: eye-blink 2s infinite;
54 | }
55 | .egg .face .eyes::after {
56 | content: "";
57 | position: absolute;
58 | width: 15px;
59 | height: 15px;
60 | background: #000;
61 | border-radius: 100%;
62 | left: 60px;
63 | }
64 | .egg .face .smile {
65 | position: relative;
66 | border-bottom-left-radius: 50px;
67 | border-bottom-right-radius: 50px;
68 | width: 10px;
69 | height: 6px;
70 | background: transparent;
71 | border: 5px solid #000;
72 | left: 63px;
73 | top: 55px;
74 | }
75 | .egg .face .smile::before {
76 | background: #ffdb10;
77 | width: 30px;
78 | height: 7px;
79 | content: "";
80 | position: absolute;
81 | left: -10px;
82 | top: -5.5px;
83 | }
84 | .egg .face .cheeks {
85 | position: relative;
86 | width: 12px;
87 | height: 12px;
88 | border-radius: 100%;
89 | background: #ff7e7e;
90 | left: 25px;
91 | top: 42px;
92 | }
93 | .egg .face .cheeks::after {
94 | content: "";
95 | position: absolute;
96 | width: 12px;
97 | height: 12px;
98 | border-radius: 100%;
99 | background: #ff7e7e;
100 | left: 83px;
101 | }
102 | .egg .face .shine {
103 | position: relative;
104 | width: 8px;
105 | height: 20px;
106 | border-radius: 200px;
107 | background: #fff;
108 | left: 110px;
109 | top: -20px;
110 | transform: rotate(-35deg);
111 | }
112 | .egg .face .shine::before {
113 | content: "";
114 | position: absolute;
115 | width: 8px;
116 | height: 8px;
117 | background: #fff;
118 | border-radius: 100%;
119 | top: -12px;
120 | right: 2px;
121 | }
122 | .egg li {
123 | position: relative;
124 | border-radius: 200px;
125 | width: 80px;
126 | height: 25.7px;
127 | }
128 | .egg li:nth-child(odd) {
129 | background: #fff;
130 | }
131 | .egg li:nth-child(even) {
132 | background: #0f111d;
133 | }
134 | .egg li:nth-child(1) {
135 | right: 40px;
136 | animation: trail1 1s ease-out infinite;
137 | }
138 | .egg li:nth-child(1)::after {
139 | content: "";
140 | position: absolute;
141 | opacity: 0;
142 | width: 25.7px;
143 | height: 25.7px;
144 | background: #fff;
145 | box-shadow: 0px 0px 10px #fff;
146 | border-radius: 100%;
147 | animation: floating 1.5s ease infinite;
148 | }
149 | .egg li:nth-child(2) {
150 | right: 30px;
151 | animation: trail2 1s ease-out infinite;
152 | }
153 | .egg li:nth-child(3) {
154 | right: 70px;
155 | animation: trail2 2s ease-out infinite;
156 | }
157 | .egg li:nth-child(4) {
158 | right: 60px;
159 | animation: trail1 0.9s ease-out infinite;
160 | }
161 | .egg li:nth-child(5) {
162 | right: 40px;
163 | animation: trail1 0.9s ease-out infinite;
164 | }
165 | .egg li:nth-child(5)::after {
166 | content: "";
167 | position: absolute;
168 | opacity: 0;
169 | width: 25.7px;
170 | height: 25.7px;
171 | background: #fff;
172 | box-shadow: 0px 0px 10px #fff;
173 | border-radius: 100%;
174 | animation: floating2 1s ease infinite 2s;
175 | }
176 | .egg li:nth-child(6) {
177 | right: 20px;
178 | animation: trail2 1s ease-out infinite;
179 | }
180 | .egg li:nth-child(7) {
181 | right: 10px;
182 | animation: trail1 1s ease-out infinite;
183 | }
184 | .egg li:nth-child(7)::after {
185 | content: "";
186 | position: absolute;
187 | opacity: 0;
188 | width: 25.7px;
189 | height: 25.7px;
190 | background: #fff;
191 | box-shadow: 0px 0px 10px #fff;
192 | border-radius: 100%;
193 | animation: floating3 1s ease infinite 0.5s;
194 | }
195 |
196 | @keyframes eye-blink {
197 | 0% {
198 | transform: scaleY(1);
199 | }
200 | 18% {
201 | transform: scaleY(1);
202 | }
203 | 20% {
204 | transform: scaleY(0);
205 | }
206 | 25% {
207 | transform: scaleY(1);
208 | }
209 | 38% {
210 | transform: scaleY(1);
211 | }
212 | 40% {
213 | transform: scaleY(0);
214 | }
215 | 45% {
216 | transform: scaleY(1);
217 | }
218 | 80% {
219 | transform: scaleY(1);
220 | }
221 | }
222 | @keyframes trail1 {
223 | 50% {
224 | right: 50px;
225 | }
226 | }
227 | @keyframes trail2 {
228 | 50% {
229 | right: 10px;
230 | }
231 | }
232 | @keyframes trail3 {
233 | 50% {
234 | right: 80px;
235 | }
236 | }
237 | @keyframes trail4 {
238 | 50% {
239 | right: 50px;
240 | }
241 | }
242 | @keyframes trail5 {
243 | 50% {
244 | right: 20px;
245 | }
246 | }
247 | @keyframes trail6 {
248 | 50% {
249 | right: 70px;
250 | }
251 | }
252 | @keyframes floating {
253 | 0% {
254 | right: 50px;
255 | opacity: 0;
256 | }
257 | 50% {
258 | right: 160px;
259 | opacity: 1;
260 | }
261 | 70% {
262 | right: 160px;
263 | opacity: 0;
264 | }
265 | 100% {
266 | right: 50px;
267 | opacity: 0;
268 | }
269 | }
270 | @keyframes floating2 {
271 | 0% {
272 | right: 50px;
273 | opacity: 0;
274 | }
275 | 50% {
276 | right: 100px;
277 | opacity: 1;
278 | }
279 | 70% {
280 | right: 100px;
281 | opacity: 0;
282 | }
283 | 100% {
284 | right: 50px;
285 | opacity: 0;
286 | }
287 | }
288 | @keyframes floating3 {
289 | 0% {
290 | right: 0px;
291 | opacity: 0;
292 | }
293 | 50% {
294 | right: 150px;
295 | opacity: 1;
296 | }
297 | 70% {
298 | right: 150px;
299 | opacity: 0;
300 | }
301 | 100% {
302 | right: 0px;
303 | opacity: 0;
304 | }
305 | }
306 | .stars {
307 | width: 100%;
308 | height: 100%;
309 | background: transparent;
310 | }
311 | .stars .star {
312 | display: block;
313 | position: absolute;
314 | opacity: 0;
315 | z-index: -1;
316 | transform: all 0.5 ease infinite;
317 | animation: moving-star 2s ease infinite;
318 | }
319 | .stars .star:nth-child(1) {
320 | width: 20px;
321 | height: 20px;
322 | border-radius: 100%;
323 | top: 100px;
324 | animation-delay: 0;
325 | background: linear-gradient(to left, #48098b, #00baee);
326 | }
327 | .stars .star:nth-child(2) {
328 | width: 10px;
329 | height: 10px;
330 | border-radius: 100%;
331 | top: 160px;
332 | animation-delay: 0.8s;
333 | background: linear-gradient(to left, #48098b, #46fce4);
334 | }
335 | .stars .star:nth-child(3) {
336 | width: 10px;
337 | height: 10px;
338 | border-radius: 100%;
339 | top: 110px;
340 | animation-delay: 0.35s;
341 | background: linear-gradient(to left, #00baee 20%, transparent);
342 | }
343 | .stars .star:nth-child(4) {
344 | width: 5px;
345 | height: 5px;
346 | border-radius: 100%;
347 | top: 450px;
348 | animation-delay: 1.5s;
349 | background: linear-gradient(to left, #00baee 20%, #46fce4);
350 | }
351 | .stars .star:nth-child(8) {
352 | width: 1px;
353 | height: 1px;
354 | border-radius: 100%;
355 | top: 350px;
356 | animation-delay: 0.7s;
357 | background: linear-gradient(to left, #0071db 70%, #46fce4);
358 | }
359 | .stars .star:nth-child(9) {
360 | width: 10px;
361 | height: 10px;
362 | border-radius: 100%;
363 | top: 510px;
364 | animation-delay: 0.2s;
365 | background: linear-gradient(to left, #48098b, #46fce4);
366 | }
367 | .stars .star:nth-child(12) {
368 | width: 5px;
369 | height: 5px;
370 | border-radius: 100%;
371 | top: 205px;
372 | animation-delay: 0.11s;
373 | background: linear-gradient(to left, #0071db, #46fce4);
374 | }
375 | .stars .star:nth-child(13) {
376 | width: 1px;
377 | height: 1px;
378 | border-radius: 100%;
379 | top: 140px;
380 | animation-delay: 0;
381 | background: linear-gradient(to left, #0071db, #46fce4);
382 | animation: shooting-star 2s ease infinite 0.3s;
383 | }
384 | .stars .star:nth-child(14) {
385 | width: 0.5px;
386 | height: 0.5px;
387 | border-radius: 100%;
388 | top: 160px;
389 | animation-delay: 0;
390 | background: #00baee;
391 | animation: shooting-star 1.5s ease infinite 0.2s;
392 | }
393 | .stars .star:nth-child(15) {
394 | width: 0.5px;
395 | height: 0.5px;
396 | border-radius: 100%;
397 | top: 250px;
398 | animation-delay: 0;
399 | background: #0071db;
400 | animation: shooting-star 1s ease infinite 0.6s;
401 | }
402 | .stars .star:nth-child(20) {
403 | width: 5px;
404 | height: 5px;
405 | border-radius: 100%;
406 | top: 370px;
407 | animation-delay: 0.3s;
408 | background: linear-gradient(to left, #0071db, #46fce4);
409 | animation: shooting-star 2.5s ease infinite;
410 | }
411 |
412 | @keyframes moving-star {
413 | 0% {
414 | right: 0;
415 | opacity: 1;
416 | }
417 | 50% {
418 | right: 100%;
419 | opacity: 1;
420 | }
421 | 70% {
422 | right: 100%;
423 | opacity: 0;
424 | }
425 | 100% {
426 | right: 0;
427 | opacity: 0;
428 | }
429 | }
430 | @keyframes shooting-star {
431 | 0% {
432 | right: 0;
433 | opacity: 1;
434 | }
435 | 50% {
436 | right: 100%;
437 | opacity: 1;
438 | width: 300px;
439 | }
440 | 70% {
441 | right: 100%;
442 | opacity: 0;
443 | width: 0px;
444 | }
445 | 100% {
446 | right: 0;
447 | opacity: 0;
448 | }
449 | }
--------------------------------------------------------------------------------
/day-3-egg-head-in-love/src/style.scss:
--------------------------------------------------------------------------------
1 | $background: #48befe;
2 | $body: #fdfeff;
3 | $bodyWidth: 175px;
4 | $bodyHeight: 220px;
5 | $yolk: #ffdb10;
6 | $cheeks: #ff7e7e;
7 | $duration: 0.7s;
8 | $heartSize: 30px;
9 |
10 | @mixin characters {
11 | width: $bodyWidth;
12 | height: $bodyHeight;
13 | border-radius: 100px 100px 0px 0px;
14 | background: $body;
15 | position: relative;
16 | display: inline-block;
17 | }
18 |
19 | body {
20 | background: $background;
21 | font-family: 'Josefin Sans', sans-serif;
22 | font-size: 12px;
23 | }
24 |
25 | .container {
26 | position: absolute;
27 | white-space: nowrap;
28 | left: 50%;
29 | top: 50%;
30 | transform: translate(-50%, -50%);
31 | }
32 | ul {
33 | margin: 0;
34 | padding: 0;
35 | li {
36 | list-style: none;
37 | }
38 | }
39 |
40 | // Egg Yolk
41 | .egg {
42 | @include characters;
43 | animation: floating 5s ease-out infinite;
44 | left: -5%;
45 | .face {
46 | width: 130px;
47 | height: 130px;
48 | background: $yolk;
49 | position: absolute;
50 | margin: 15% 15%;
51 | border-radius: 100%;
52 | box-shadow: inset -10px 1px 0 #ffcc24;
53 | .eyes {
54 | width: 15px;
55 | height: 15px;
56 | background: #000;
57 | border-radius: 100%;
58 | position: relative;
59 | top: 55px;
60 | left: 38px;
61 | animation: blink 3s infinite 2s;
62 | &::after {
63 | content: "";
64 | width: 15px;
65 | height: 15px;
66 | position: absolute;
67 | background: #000;
68 | border-radius: 100%;
69 | left: 50px;
70 | }
71 | }
72 | .smile {
73 | position: relative;
74 | border-bottom-left-radius: 90px;
75 | border-bottom-right-radius: 90px;
76 | width: 30px;
77 | height: 15px;
78 | background: #000;
79 | left: 55px;
80 | top: 60px;
81 | &::after {
82 | content: "";
83 | position: absolute;
84 | width: 10px;
85 | height: 5px;
86 | background: $cheeks;
87 | border-radius: 100%;
88 | left: 10px;
89 | top: 8px;
90 | }
91 | }
92 | .cheeks {
93 | position: relative;
94 | width: 12px;
95 | height: 12px;
96 | background: $cheeks;
97 | border-radius: 100%;
98 | opacity: 0.5;
99 | top: 40px;
100 | left: 30px;
101 | &::after {
102 | content: "";
103 | position: absolute;
104 | width: 12px;
105 | height: 12px;
106 | background: $cheeks;
107 | border-radius: 100%;
108 | left: 67px;
109 | }
110 | }
111 | .shine {
112 | position: relative;
113 | width: 8px;
114 | height: 20px;
115 | background: $body;
116 | border-radius: 200px;
117 | top: -10px;
118 | left: 12px;
119 | transform: rotate(20deg);
120 | &::after {
121 | position: absolute;
122 | content: "";
123 | width: 8px;
124 | height: 8px;
125 | background: $body;
126 | border-radius: 200px;
127 | top: -15px;
128 | left: 6px;
129 | }
130 | }
131 | }
132 | ul {
133 | display: flex;
134 | }
135 | li {
136 | position: relative;
137 | border-radius: 200px;
138 | }
139 | li:nth-child(odd) {
140 | background: $body;
141 | }
142 | li:nth-child(even) {
143 | background: $background;
144 | }
145 | li:nth-child(1) {
146 | width: 30px;
147 | height: 60px;
148 | top: 175px;
149 | animation: anim1 1.5s ease-out infinite;
150 | }
151 | li:nth-child(2) {
152 | width: 20px;
153 | height: 50px;
154 | top: 185px;
155 | animation: anim2 3s ease-out infinite;
156 | }
157 | li:nth-child(3) {
158 | width: 28.5px;
159 | height: 60px;
160 | top: 195px;
161 | animation: anim3 1s ease-in-out infinite;
162 | }
163 | li:nth-child(4) {
164 | width: 20px;
165 | height: 50px;
166 | top: 210px;
167 | animation: anim4 2.2s ease-out infinite;
168 | }
169 | li:nth-child(5) {
170 | width: 28.5px;
171 | height: 60px;
172 | top: 190px;
173 | animation: anim3 1.5s ease-out infinite;
174 | }
175 | li:nth-child(6) {
176 | width: 20px;
177 | height: 60px;
178 | top: 200px;
179 | animation: anim2 4s ease-out infinite;
180 | }
181 | li:nth-child(7) {
182 | width: 28.5px;
183 | height: 60px;
184 | top: 190px;
185 | animation: anim1 1.5s ease-out infinite;
186 | }
187 | }
188 |
189 | // Ghost
190 | .ghost {
191 | @include characters;
192 | animation: floating 2s ease-out infinite;
193 | opacity: 0.75;
194 | left: 5%;
195 | &::before {
196 | content: "";
197 | @include characters;
198 | position: absolute;
199 | box-shadow: inset -15px 1px 0px #efefef;
200 | }
201 | .face {
202 | width: 130px;
203 | height: 130px;
204 | background: transparent;
205 | position: absolute;
206 | margin: -20% 10%;
207 | border-radius: 100%;
208 | .eyes {
209 | opacity: 0.5;
210 | width: 15px;
211 | height: 15px;
212 | background: #000;
213 | border-radius: 100%;
214 | position: relative;
215 | top: 55px;
216 | left: 3px;
217 | animation: blink 5s infinite;
218 | &::after {
219 | content: "";
220 | width: 15px;
221 | height: 15px;
222 | position: absolute;
223 | background: #000;
224 | border-radius: 100%;
225 | left: 50px;
226 | }
227 | }
228 | .smile {
229 | position: relative;
230 | opacity: 0.5;
231 | border-bottom-left-radius: 50px;
232 | border-bottom-right-radius: 50px;
233 | width: 10px;
234 | height: 6px;
235 | background: transparent;
236 | border: 5px solid #000;
237 | left: 25px;
238 | top: 55px;
239 | &::before {
240 | background: $body;
241 | width: 30px;
242 | height: 7px;
243 | content: "";
244 | position: absolute;
245 | left: -10px;
246 | top: -5.5px;
247 | }
248 | }
249 | .cheeks {
250 | position: relative;
251 | width: 12px;
252 | height: 12px;
253 | background: $cheeks;
254 | border-radius: 100%;
255 | opacity: 0.5;
256 | top: 43px;
257 | left: -4px;
258 | &::after {
259 | content: "";
260 | position: absolute;
261 | width: 12px;
262 | height: 12px;
263 | background: $cheeks;
264 | border-radius: 100%;
265 | left: 67px;
266 | }
267 | }
268 | }
269 | ul {
270 | display: flex;
271 | }
272 | li {
273 | position: relative;
274 | border-radius: 200px;
275 | height: 60px;
276 | }
277 | li:nth-child(odd) {
278 | background: $body;
279 | width: 30px;
280 | top: 172px;
281 | z-index: -1;
282 | }
283 | li:nth-child(even) {
284 | background: $background;
285 | width: 7px;
286 | top: 215px;
287 | }
288 | li:nth-child(1) {
289 | animation: ghostani 3s ease-out infinite;
290 | }
291 | li:nth-child(3) {
292 | animation: ghostani 3s ease-out infinite 0.5s;
293 | }
294 | li:nth-child(5) {
295 | animation: ghostani 3s ease-out infinite 1.0s;
296 | }
297 | li:nth-child(7) {
298 | animation: ghostani 3s ease-out infinite 1.5s;
299 | }
300 | li:nth-child(9) {
301 | box-shadow: inset -15px 4px #efefef;
302 | animation: ghostani 3s ease-out infinite 2s;
303 | }
304 | }
305 |
306 | .heart {
307 | position: absolute;
308 | display: inline-block;
309 | width: $heartSize;
310 | height: $heartSize;
311 | background: red;
312 | left: 45%;
313 | transform: rotate(45deg);
314 | animation: beat $duration linear infinite;
315 | &::before {
316 | position: absolute;
317 | content: "";
318 | width: $heartSize;
319 | height: $heartSize;
320 | background: red;
321 | border-radius: 100%;
322 | top: -50%;
323 | animation: beat $duration linear infinite;
324 | }
325 | &::after {
326 | @extend .heart::before;
327 | top: 0%;
328 | left: -50%;
329 | }
330 | .light {
331 | width: 5px;
332 | height: 12px;
333 | background: white;
334 | position: absolute;
335 | border-radius: 200px;
336 | z-index: 3;
337 | left: -11px;
338 | top: 13px;
339 | transform: rotate(-10deg);
340 | animation: lightshift $duration linear infinite;
341 | &::after {
342 | content: "";
343 | position: absolute;
344 | z-index: 3;
345 | width: 5px;
346 | height: 5px;
347 | background: white;
348 | border-radius: 200px;
349 | top: -5px;
350 | left: 1.5px;
351 | }
352 | }
353 | }
354 |
355 | .shadow {
356 | position: absolute;
357 | opacity: 0.2;
358 | width: 180px;
359 | height: 15px;
360 | background: #000;
361 | top: 275px;
362 | border-radius: 100%;
363 | }
364 | .shadow#egg-shadow {
365 | left: -20px;
366 | animation: shadow-ani 5s ease-out infinite;
367 | }
368 | .shadow#ghost-shadow {
369 | left: 195px;
370 | transform-origin: center;
371 | animation: shadow-ani 2s ease-out infinite;
372 | }
373 | @keyframes shadow-ani {
374 | 50% {
375 | width: 170px;
376 | height: 10px;
377 | }
378 | }
379 | @keyframes blink {
380 | 0%{
381 | transform:scaleY(1)
382 | }
383 | 18%{
384 | transform:scaleY(1)
385 | }
386 | 20%{
387 | transform:scaleY(0)
388 | }
389 | 25%{
390 | transform:scaleY(1)
391 | }
392 | 38%{
393 | transform:scaleY(1)
394 | }
395 | 40%{
396 | transform:scaleY(0)
397 | }
398 | 45%{
399 | transform:scaleY(1)
400 | }
401 | 80% {
402 | transform:scaleY(1)
403 | }
404 | }
405 | @keyframes beat {
406 | 20%,
407 | 40% {
408 | height: $heartSize + 10;
409 | width: $heartSize + 10;
410 | }
411 | }
412 | @keyframes lightshift {
413 | 20%,
414 | 40% {
415 | left: -15px;
416 | }
417 | }
418 | @keyframes floating {
419 | 0% {
420 | top: 0;
421 | }
422 | 50% {
423 | top: -10px;
424 | }
425 | 100% {
426 | top: 0;
427 | }
428 | }
429 |
430 | @keyframes anim1 {
431 | 50% {
432 | top: 180px;
433 | }
434 | }
435 |
436 | @keyframes anim2 {
437 | 50% {
438 | top: 178px;
439 | }
440 | }
441 |
442 | @keyframes anim3 {
443 | 50% {
444 | top: 205px;
445 | }
446 | }
447 |
448 | @keyframes anim4 {
449 | 50% {
450 | top: 205px;
451 | }
452 | }
453 |
454 | @keyframes ghostani {
455 | 50% {
456 | top: 180px;
457 | }
458 | }
--------------------------------------------------------------------------------
/day-13-14-super/src/style.scss:
--------------------------------------------------------------------------------
1 | $background: #fffaf0;
2 | $container-background: lighten(#c7166f, 5%);
3 |
4 | // trail animation vars
5 | $trail-color: lighten(#f89714, 10%);
6 | $trail-shine: lighten($trail-color, 20%);
7 | $trail-offset: 30px;
8 | $trail-height: 400px;
9 | $trail-fin: 600px;
10 | $trail-border-radius: 200px;
11 |
12 | // body vars
13 | $hair: #020916;
14 | $shirt: darken(#800064, 5%);
15 | // $shirt: darken(#6c16c7, 5%);
16 | $skin: #c74b16;
17 | $smile-height: 30;
18 | $smile-width: $smile-height * 2;
19 | $mouth: #6E171F;
20 |
21 | // animation vars
22 | $body-timing: .7s;
23 |
24 | @function randomNumber($min, $max) {
25 | $rand: random();
26 | $randomNum: $min + floor($rand * (($max - $min) + 1));
27 | @return $randomNum;
28 | }
29 |
30 | body {
31 | background: $background;
32 | }
33 |
34 | .trails {
35 | display: flex;
36 | justify-content: space-between;
37 | width: 90%;
38 | left: 0;
39 | position: absolute;
40 | li {
41 | background-color: $trail-color;
42 | list-style: none;
43 | position: relative;
44 | border-radius: $trail-border-radius;
45 | height: $trail-height;
46 | &:nth-child(1) {
47 | animation: flightTrail .22s linear infinite;
48 | width: 50px;
49 | &:after {
50 | content: '';
51 | background-color: $trail-shine;
52 | width: 15px;
53 | height: 350px;
54 | position: absolute;
55 | left: 15%;
56 | top: 5%;
57 | border-radius: $trail-border-radius;
58 | }
59 | }
60 | &:nth-child(2) {
61 | animation: flightTrail .28s .1s linear infinite;
62 | width: 75px;
63 | &:after {
64 | content: '';
65 | background-color: $trail-shine;
66 | width: 20px;
67 | height: 350px;
68 | position: absolute;
69 | left: 15%;
70 | top: 5%;
71 | border-radius: $trail-border-radius;
72 | }
73 | }
74 | &:nth-child(3) {
75 | animation: flightTrail .18s .03s linear infinite;
76 | width: 15px;
77 | }
78 | &:nth-child(4) {
79 | animation: flightTrail .25s .01s linear infinite;
80 | width: 65px;
81 | &:after {
82 | content: '';
83 | background-color: $trail-shine;
84 | width: 20px;
85 | height: 350px;
86 | position: absolute;
87 | left: 15%;
88 | top: 5%;
89 | border-radius: $trail-border-radius;
90 | }
91 | }
92 | &:nth-child(5) {
93 | animation: flightTrail .4s .01s linear infinite;
94 | width: 40px;
95 | &:after {
96 | background-color: $trail-shine;
97 | border-radius: $trail-border-radius;
98 | content: '';
99 | height: 350px;
100 | left: 15%;
101 | position: absolute;
102 | top: 5%;
103 | width: 20px;
104 | }
105 | }
106 | }
107 | }
108 |
109 | .container {
110 | background: $container-background;
111 | border-radius: 100%;
112 | height: 500px;
113 | left: 50%;
114 | overflow: hidden;
115 | position: absolute;
116 | top: 50%;
117 | transform: translate(-50%, -50%) scale(.85);
118 | width: 500px;
119 | }
120 |
121 | .super-girl {
122 | animation: easeUpBody $body-timing ease-in-out alternate infinite;
123 | height: 400px;
124 | left: calc(50% - 100px);
125 | position: absolute;
126 | top: calc(50% - 150px);
127 | width: 200px;
128 | }
129 |
130 | .head {
131 | animation: easeUpHead $body-timing ease-in-out alternate infinite;
132 | background-color: lighten($skin, 5%);
133 | border-radius: 100px;
134 | box-shadow: inset -5px -10px darken($skin, 5%);
135 | height: 210px;
136 | left: calc(50% - 80px);
137 | position: absolute;
138 | width: 160px;
139 | z-index: 4;
140 |
141 | .face {
142 | height: 150px;
143 | left: calc(50% - 75px);
144 | position: absolute;
145 | top: calc(50% - 75px);
146 | width: 150px;
147 |
148 | .eyes {
149 | animation: easeUpFace $body-timing ease-in-out alternate infinite;
150 | display: flex;
151 | justify-content: space-between;
152 | left: 6%;
153 | position: absolute;
154 | top: 60px;
155 | &::before,
156 | &::after {
157 | border-radius: 200px;
158 | box-shadow: inset 0px 10px $hair;
159 | content: '';
160 | height: 45px;
161 | margin: 0 10px;
162 | width: 45px;
163 | }
164 | }
165 |
166 | .smile {
167 | background-color: $background;
168 | border-bottom-left-radius: 50px;
169 | border-bottom-right-radius: 50px;
170 | height: $smile-height + px;
171 | left: calc(50% - 30px);
172 | overflow: hidden;
173 | position: absolute;
174 | top: 80%;
175 | width: $smile-width + px;
176 | }
177 | }
178 | }
179 |
180 | .hair {
181 | background-color: $hair;
182 | border-radius: 100%;
183 | box-shadow: inset 15px 0px lighten($hair, 15%);
184 | height: 220px;
185 | left: calc(50% - 110px);
186 | position: absolute;
187 | top: -12%;
188 | width: 220px;
189 |
190 | &::after {
191 | animation: easeUpHair $body-timing ease-in-out alternate infinite;
192 | background-color: $hair;
193 | border-radius: 0px 300px 0px 300px;
194 | content: '';
195 | height: 110px;
196 | left: 63px;
197 | position: absolute;
198 | top: 25px;
199 | transform: rotate(-5deg);
200 | width: 130px;
201 | z-index: 5;
202 | }
203 | }
204 |
205 | .neck {
206 | background-color: $skin;
207 | border-bottom-left-radius: 100%;
208 | border-bottom-right-radius: 100%;
209 | height: 70px;
210 | left: calc(50% - 30px);
211 | position: absolute;
212 | top: 45%;
213 | width: 60px;
214 | z-index: 4;
215 |
216 | &::after {
217 | background-color: darken($skin, 7%);
218 | border-bottom-left-radius: 100%;
219 | border-bottom-right-radius: 100%;
220 | content: '';
221 | height: 40px;
222 | position: absolute;
223 | width: 100%;
224 | }
225 | }
226 |
227 | .body {
228 | background-color: $shirt;
229 | border-top-left-radius: 200px;
230 | border-top-right-radius: 200px;
231 | height: 300px;
232 | left: calc(50% - 80px);
233 | position: absolute;
234 | top: 50%;
235 | width: 160px;
236 | }
237 |
238 | .ponytail {
239 | background-color: $hair;
240 | border-radius: 200px;
241 | box-shadow: inset 15px 0px lighten($hair, 20%);
242 | height: 200px;
243 | left: -20px;
244 | position: absolute;
245 | top: 30%;
246 | width: 120px;
247 |
248 | &:after {
249 | background: $hair;
250 | border-radius: 0 0 400px 400px;
251 | box-shadow: inset 15px 0px lighten($hair, 20%);
252 | content: '';
253 | height: 100px;
254 | left: -34%;
255 | position: absolute;
256 | width: 160px;
257 | top: 60%;
258 | }
259 | }
260 |
261 | .arm-left {
262 | animation: rotateLeft $body-timing ease-in-out alternate infinite;
263 | background-color: $shirt;
264 | border-top-left-radius: 200px;
265 | border-bottom-left-radius: 200px;
266 | height: 60px;
267 | left: 10%;
268 | position: absolute;
269 | top: 70%;
270 | transform: rotate(35deg);
271 | transform-origin: 80% 15%;
272 | width: 200px;
273 | z-index: 2;
274 |
275 | .hand {
276 | background-color: lighten($skin, 5%);
277 | border-top-left-radius: 200px;
278 | border-bottom-left-radius: 200px;
279 | height: 60px;
280 | width: 60px;
281 | }
282 | }
283 |
284 | .arm-right {
285 | animation: rotateRight $body-timing ease-in-out alternate infinite;
286 | background-color: $shirt;
287 | border-top-left-radius: 200px;
288 | border-bottom-left-radius: 200px;
289 | height: 60px;
290 | left: 33%;
291 | position: absolute;
292 | top: 75%;
293 | transform: rotate(145deg);
294 | transform-origin: 80% 15%;
295 | width: 200px;
296 |
297 | .hand {
298 | background-color: lighten($skin, 5%);
299 | border-top-left-radius: 200px;
300 | border-bottom-left-radius: 200px;
301 | height: 60px;
302 | width: 50px;
303 | }
304 | }
305 |
306 | .fingers {
307 | // display: flex;
308 | // flex-direction: column;
309 | left: -23%;
310 | list-style: none;
311 | position: absolute;
312 | top: -38%;
313 | // top: %;
314 | li {
315 | background-color: lighten($skin, 4%);
316 | box-shadow: inset -4px 4px darken($skin, 10%);
317 | position: relative;
318 | border-radius: $trail-border-radius;
319 | margin: auto -1%;
320 | height: 19px;
321 | width: 45px;
322 | &:nth-child(1),
323 | &:nth-child(4) {
324 | left: 20%;
325 | }
326 | }
327 | }
328 | .thumb {
329 | background-color: darken($skin, 5%);
330 | border-radius: 100%;
331 | height: 25px;
332 | left: 12%;
333 | position: absolute;
334 | top: -5%;
335 | width: 25px;
336 |
337 | &::after {
338 | background-color: $skin;
339 | border-radius: $trail-border-radius;
340 | box-shadow: inset -4px 4px darken($skin, 10%);
341 | content: '';
342 | height: 35px;
343 | position: absolute;
344 | width: 18px;
345 | }
346 | }
347 | @keyframes flightTrail {
348 | 0% {
349 | transform: translate(0, -$trail-height);
350 | }
351 | 100% {
352 | transform: translate(0, $trail-fin);
353 | }
354 | }
355 |
356 | @keyframes rotateLeft {
357 | from {
358 | transform: rotate(35deg);
359 | }
360 | to {
361 | transform: rotate(50deg);
362 | }
363 | }
364 |
365 | @keyframes rotateRight {
366 | from {
367 | transform: rotate(145deg);
368 | }
369 | to {
370 | transform: rotate(125deg);
371 | }
372 | }
373 |
374 | @keyframes easeUpBody {
375 | from {
376 | transform: translateY(2%);
377 | }
378 | to {
379 | transform: translateY(5%);
380 | }
381 | }
382 |
383 |
384 | @keyframes easeUpHead {
385 | from {
386 | transform: translateY(0%);
387 | }
388 | to {
389 | transform: translateY(1.5%);
390 | }
391 | }
392 |
393 | @keyframes easeUpHair {
394 | from {
395 | transform: translateY(0%);
396 | }
397 | to {
398 | transform: translateY(1.5%);
399 | }
400 | }
401 |
402 | @keyframes easeUpFace {
403 | from {
404 | transform: translateY(0%);
405 | }
406 | to {
407 | transform: scaleY(.9);
408 | }
409 | }
--------------------------------------------------------------------------------