From cfce85f0e55210da53998097478dc6119131f79b Mon Sep 17 00:00:00 2001 From: Jannaee Date: Sun, 2 Sep 2018 01:36:35 -0400 Subject: [PATCH 01/14] JS practice everyday --- 01 - JavaScript Drum Kit/index-START.html | 64 ++++++++++++++++------- 01 - JavaScript Drum Kit/style.css | 4 +- 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/01 - JavaScript Drum Kit/index-START.html b/01 - JavaScript Drum Kit/index-START.html index 4070d32767..816d08f0ab 100644 --- a/01 - JavaScript Drum Kit/index-START.html +++ b/01 - JavaScript Drum Kit/index-START.html @@ -4,60 +4,88 @@ JS Drum Kit +
-
+
A clap
-
+
S hihat
-
+
D kick
-
+
F openhat
-
+
G boom
-
+
H ride
-
+
J snare
-
+
K tom
-
+
L tink
- - - - - - - - - + + + + + + + + + ddfhdfg diff --git a/01 - JavaScript Drum Kit/style.css b/01 - JavaScript Drum Kit/style.css index 075578c930..e60dd65864 100644 --- a/01 - JavaScript Drum Kit/style.css +++ b/01 - JavaScript Drum Kit/style.css @@ -23,7 +23,7 @@ body,html { margin: 1rem; font-size: 1.5rem; padding: 1rem .5rem; - transition: all .07s ease; + transition: all 1.07s ease; width: 10rem; text-align: center; color: white; @@ -32,7 +32,7 @@ body,html { } .playing { - transform: scale(1.1); + transform: scale(1.2); border-color: #ffc600; box-shadow: 0 0 1rem #ffc600; } From cd8e6eb10337609a683d7e13b1878635eeaca07c Mon Sep 17 00:00:00 2001 From: Jannaee Date: Fri, 7 Sep 2018 11:38:43 -0400 Subject: [PATCH 02/14] updating code --- 01 - JavaScript Drum Kit/index-START.html | 17 +++++++---- 01 - JavaScript Drum Kit/style.css | 4 +-- 31 - Full Page Preloader/index.html | 36 +++++++++++++++++++++++ 31 - Full Page Preloader/main.css | 22 ++++++++++++++ 4 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 31 - Full Page Preloader/index.html create mode 100644 31 - Full Page Preloader/main.css diff --git a/01 - JavaScript Drum Kit/index-START.html b/01 - JavaScript Drum Kit/index-START.html index 816d08f0ab..6a18246e72 100644 --- a/01 - JavaScript Drum Kit/index-START.html +++ b/01 - JavaScript Drum Kit/index-START.html @@ -4,7 +4,6 @@ JS Drum Kit - @@ -56,8 +55,7 @@ - ddfhdfg - + + + + +
+
+

+

Loaded...

+
+
+ + + + \ No newline at end of file diff --git a/31 - Full Page Preloader/main.css b/31 - Full Page Preloader/main.css new file mode 100644 index 0000000000..554311e320 --- /dev/null +++ b/31 - Full Page Preloader/main.css @@ -0,0 +1,22 @@ +body { + background-color: red; + width: 100vw; + height: 100vh; + overflow: hidden; + +} + +.loading-page { + background-color: pink; + width: 100vw; + height: 100vh; +} + +.counter h1 { + top: 50%; + left: 50%; + transform: translate(-50% -50%); + font-size: 300px; + font-weight: bold; + margin: -10px; +} \ No newline at end of file From e96bd71bd4cd46acb43eb4e0cabe06569b0a4373 Mon Sep 17 00:00:00 2001 From: Jannaee Sick Date: Fri, 7 Sep 2018 11:41:36 -0400 Subject: [PATCH 03/14] Denote where my updates live --- readme.md | 42 ++---------------------------------------- 1 file changed, 2 insertions(+), 40 deletions(-) diff --git a/readme.md b/readme.md index 392a400128..a266ef5079 100644 --- a/readme.md +++ b/readme.md @@ -2,48 +2,10 @@ # JavaScript30 -Starter Files + Completed solutions for the JavaScript 30 Day Challenge. +My modifications to the code are located in the starter files within each directory. The original files are the ones denoted as finished. -Grab the course at [https://JavaScript30.com](https://JavaScript30.com) - -## Community #JavaScript30 Content - -Feel free to submit a PR adding a link to your own recaps, guides or reviews! - -* [Arjun Khode’s blog](http://thesagittariusme.blogspot.com/search/label/JS30) about summaries for each day, including fixed glitches, bugs and extra features -* [Nitish Dayal's Text Guides](https://github.com/nitishdayal/JavaScript30) are great for those who like reading over watching -* [Meredith Underell's](http://meredithunderell.com/tag/javascript30/) Quick Lessons Learned -* [Rowan Weismiller's](http://rowanweismiller.com/blog/javascript-30/) Recaps + Lessons Learned -* [Thorsten Frommen](https://tfrommen.de/tag/javascript-30/) shares how he solved the exercises before viewing the answers -* [Soyaine 写的中文指南](https://github.com/soyaine/JavaScript30)包含了过程记录和难点解释 -* [Ayo Isaiah's](https://freshman.tech/archive/#javascript30) Recaps and Lessons Learned -* [Adriana Rios](https://stpcollabr8nlstn.github.io/JavaScript30/) shares her alternative solutions -* [Michael Einsohn](http://30daysofjs.michaeleinsohn.com) publishes each challenge after watching the video once -* [Mike Ekkel](https://medium.com/@mike_ekkel/javascript-30-a-30-day-vanilla-js-challenge-6a733fc9f62c#.9frjtaje9) -* [Akinjide Bankole](https://github.com/akinjide/JS30days) used Node.js with [Jade](http://jadelang.net) to solve the exercises -* [Yusef Habib](https://github.com/yhabib/JavaScript30) lessons and tricks learned, and a [gh-page](https://yhabib.github.io/JavaScript30/) to see working all the mini-projects. -* [Amelie Yeh](https://github.com/amelieyeh/JS30) 30 lessons notes with things I've learned, and those important recaps. and directly view my demos [here](https://amelieyeh.github.io/JS30/) 🇹🇼😄 -* [Winar](https://github.com/winar-jin/JavaScript30-Challenge)的JavaScript30天挑战,记录练习过程,重难点和其他的解决方案。🎨 -* [Rayhatron](https://rayhatron.github.io/blog/) - walkthroughs, recaps and lessons learned. -* [Andrei Dobra](https://github.com/andreidbr/JS30) Full repo with lessons learned and a [gh-page](https://andreidbr.github.io/JS30/) with all the exercises. -* [从零到壹全栈部落](https://github.com/liyuechun/JavaScript30-liyuechun),春哥发起的从零到壹全栈部落,旨在带领大家一起学习,一起输出,文档化,代码化,中文视频化,全栈部落口号:输出是最好的学习方式。 -* [Usmaan Ali's](https://github.com/usyyy/javascript/blob/master/JavaScript30/analysis.md) summary of the technical skills learned from each project. He's also posting them as separate blog posts [here](https://medium.com/@usyyy) -* [Axel](https://github.com/afuh/js30)'s lessons learned and a [showcase](https://afuh.github.io/js30/) with the projects. -* [Chris](https://github.com/dwatow/JavaScript30) 中文實戰,目標描述、過程紀錄。 -* [Muhammad D. Ramadhan's](https://miayam.github.io) blog. He shamlesly mixed his personal life with 30 day JavaScript challenge so as to increase his learning retention. He also summarised the challenge on [one single page](https://miayam.github.io/js30). Do not read his blog! -* [Lee Keitel's Blog](https://blog.keitel.xyz/categories/javascript30/) includes summaries of each lesson, what I learned from each one, and my thoughts about the topic taught and using them in the future. -* [Dustin Hsiao](https://github.com/dustinhsiao21/Javascript30-dustin) 包含了各篇介紹、 效果Demo、各篇詳解及記錄過程,附上部分延伸閱讀及[gh-page](https://dustinhsiao21.github.io/Javascript30-dustin/)。 -* [GuaHsu](https://github.com/guahsu/JavaScript30) - 紀錄各篇練習過程與心得,並嘗試擴充部分練習,也做了一個包含全部練習的[介紹站](http://guahsu.io/JavaScript30/)🇹🇼 -* [Daniela](https://github.com/misslild)'s completed challenges on [GitHub Pages](https://misslild.github.io/WesBos-30day-Coding-challenge/) and [Codepen](https://codepen.io/collection/DapZeP/) :raised_hands: :muscle: :+1: -* [Dmitrii Pashutskii's](https://github.com/guar47) code of all challenges on [GitHub with Pages](https://github.com/guar47/javascript30Summary) and review [blog posts](https://blog.dpashutskii.com/tag/javascript30/) -* [Abid Hasan's](https://github.com/sabidhasan/javascript-30) completion of all challenges. This was awesome!! Learned so much! :+1: -* [Yusong Notes](https://sky172839465.github.io/course/js30) Records Yusong JS 30 days note and demo :star2: -* [Herminio Torres](https://github.com/herminiotorres/JavaScript30) lessons and tricks learned, and a [gh-page](https://herminiotorres.github.io/JavaScript30/) to see working all the mini-projects. +You can grab a version of the course at [https://JavaScript30.com](https://JavaScript30.com) ## A note on Pull Requests These are meant to be 1:1 copies of what is done in the video. If you found a better / different way to do things, great, but I will be keeping them the same as the videos. - -The starter files + solutions will be updated if/when the videos are updated. - -Thanks! From f9913c8216c195673d53c8ab9ba3efee4b2882a3 Mon Sep 17 00:00:00 2001 From: Jannaee Sick Date: Fri, 7 Sep 2018 11:42:47 -0400 Subject: [PATCH 04/14] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index a266ef5079..0c9070922a 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,3 @@ -![](https://javascript30.com/images/JS3-social-share.png) - # JavaScript30 My modifications to the code are located in the starter files within each directory. The original files are the ones denoted as finished. @@ -9,3 +7,5 @@ You can grab a version of the course at [https://JavaScript30.com](https://JavaS ## A note on Pull Requests These are meant to be 1:1 copies of what is done in the video. If you found a better / different way to do things, great, but I will be keeping them the same as the videos. + +![](https://javascript30.com/images/JS3-social-share.png) From 773e6d1b5935588d3770a8e3f2d389fb99cdcb2e Mon Sep 17 00:00:00 2001 From: Jannaee Date: Sat, 8 Sep 2018 13:53:28 -0400 Subject: [PATCH 05/14] creating a clock powered by js --- 01 - JavaScript Drum Kit/index-START.html | 4 +-- 01 - JavaScript Drum Kit/style.css | 4 +-- 02 - JS and CSS Clock/index-START.html | 30 +++++++++++++++++++ 31 - Full Page Preloader/index.html | 36 ----------------------- 31 - Full Page Preloader/main.css | 22 -------------- 5 files changed, 34 insertions(+), 62 deletions(-) delete mode 100644 31 - Full Page Preloader/index.html delete mode 100644 31 - Full Page Preloader/main.css diff --git a/01 - JavaScript Drum Kit/index-START.html b/01 - JavaScript Drum Kit/index-START.html index 6a18246e72..e38bcdaaca 100644 --- a/01 - JavaScript Drum Kit/index-START.html +++ b/01 - JavaScript Drum Kit/index-START.html @@ -78,7 +78,7 @@ function removeTransistion(e){//this does not refer to the removeTransition function, but where the function was called, or in the addEventListener. Additionally, this will refer to the if(e.propertyName !== 'transform') return; //in other words skip it if it's not transform - + this.classList.remove('playing'); console.log(this); //this is equal to the key because, this refers to the value of the function that called it. removeTransistion is not being called here } @@ -86,7 +86,7 @@ keys.forEach( function (key){ key.addEventListener('transitionend', removeTransistion)//this refers to this 'key' because this is where the function removeTransistion is being executed. And the value of this is the object that was called against it aka 'key' - + });//when you have an array of elements you can't listen to each of them unless you loop over every single element diff --git a/01 - JavaScript Drum Kit/style.css b/01 - JavaScript Drum Kit/style.css index 556f67534e..ec7d19e486 100644 --- a/01 - JavaScript Drum Kit/style.css +++ b/01 - JavaScript Drum Kit/style.css @@ -23,7 +23,7 @@ body,html { margin: 1rem; font-size: 1.5rem; padding: 1rem .5rem; - transition: all 07s ease; + transition: all 0.07s; width: 10rem; text-align: center; color: white; @@ -32,7 +32,7 @@ body,html { } .playing { - transform: scale(0.7); + transform: scale(1.2); border-color: #ffc600; box-shadow: 0 0 1rem #ffc600; } diff --git a/02 - JS and CSS Clock/index-START.html b/02 - JS and CSS Clock/index-START.html index ee7eaefb1f..d33e297138 100644 --- a/02 - JS and CSS Clock/index-START.html +++ b/02 - JS and CSS Clock/index-START.html @@ -62,11 +62,41 @@ background:black; position: absolute; top:50%; + transform-origin: 100%; /*this transform on the x-axis */ + transform: rotate(90deg);/*sets the hands to 12:00 position*/ + transition: all 0.05s; /*allows a transition with each movement */ + transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);/*Cool as balls transition control with beziers! */ } diff --git a/31 - Full Page Preloader/index.html b/31 - Full Page Preloader/index.html deleted file mode 100644 index 897cd29e3f..0000000000 --- a/31 - Full Page Preloader/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - Full Page Loader - - - - - - - -
-
-

-

Loaded...

-
-
- - - - \ No newline at end of file diff --git a/31 - Full Page Preloader/main.css b/31 - Full Page Preloader/main.css deleted file mode 100644 index 554311e320..0000000000 --- a/31 - Full Page Preloader/main.css +++ /dev/null @@ -1,22 +0,0 @@ -body { - background-color: red; - width: 100vw; - height: 100vh; - overflow: hidden; - -} - -.loading-page { - background-color: pink; - width: 100vw; - height: 100vh; -} - -.counter h1 { - top: 50%; - left: 50%; - transform: translate(-50% -50%); - font-size: 300px; - font-weight: bold; - margin: -10px; -} \ No newline at end of file From 2397a0d0e7194002e5dddfa3a9fd4535a9841fc1 Mon Sep 17 00:00:00 2001 From: Jannaee Date: Sat, 8 Sep 2018 14:45:11 -0400 Subject: [PATCH 06/14] completed the building of a clock --- 02 - JS and CSS Clock/index-START.html | 29 ++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/02 - JS and CSS Clock/index-START.html b/02 - JS and CSS Clock/index-START.html index d33e297138..45b123a96f 100644 --- a/02 - JS and CSS Clock/index-START.html +++ b/02 - JS and CSS Clock/index-START.html @@ -18,7 +18,7 @@ From 0a5715b46189892e95dcb22bccfc424d070948c0 Mon Sep 17 00:00:00 2001 From: Jannaee Sick Date: Mon, 12 Nov 2018 22:52:49 -0500 Subject: [PATCH 14/14] Updating laptop files --- .../.vs/02 - JS and CSS Clock/v15/.suo | Bin 0 -> 27648 bytes 02 - JS and CSS Clock/.vs/ProjectSettings.json | 3 +++ 02 - JS and CSS Clock/.vs/VSWorkspaceState.json | 6 ++++++ 02 - JS and CSS Clock/.vs/slnx.sqlite | Bin 0 -> 77824 bytes 4 files changed, 9 insertions(+) create mode 100644 02 - JS and CSS Clock/.vs/02 - JS and CSS Clock/v15/.suo create mode 100644 02 - JS and CSS Clock/.vs/ProjectSettings.json create mode 100644 02 - JS and CSS Clock/.vs/VSWorkspaceState.json create mode 100644 02 - JS and CSS Clock/.vs/slnx.sqlite diff --git a/02 - JS and CSS Clock/.vs/02 - JS and CSS Clock/v15/.suo b/02 - JS and CSS Clock/.vs/02 - JS and CSS Clock/v15/.suo new file mode 100644 index 0000000000000000000000000000000000000000..aa9fd4cd476d66d8f7b276de811f88045b0212fc GIT binary patch literal 27648 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 literal 0 HcmV?d00001 diff --git a/02 - JS and CSS Clock/.vs/ProjectSettings.json b/02 - JS and CSS Clock/.vs/ProjectSettings.json new file mode 100644 index 0000000000..f8b4888565 --- /dev/null +++ b/02 - JS and CSS Clock/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/02 - JS and CSS Clock/.vs/VSWorkspaceState.json b/02 - JS and CSS Clock/.vs/VSWorkspaceState.json new file mode 100644 index 0000000000..6b6114114f --- /dev/null +++ b/02 - JS and CSS Clock/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/02 - JS and CSS Clock/.vs/slnx.sqlite b/02 - JS and CSS Clock/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..1912dc81a6902dc5bf4a2867de801974d96004af GIT binary patch literal 77824 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