From 756c948ce3ee68a078cfc760dbdfba596131f81b Mon Sep 17 00:00:00 2001 From: Micah Godbolt Date: Wed, 20 Feb 2019 22:36:08 -0800 Subject: [PATCH] html cleanup --- {step1-00/assets => assets}/fabric.jpg | Bin assets/todo_screenshot.jpg | Bin 0 -> 38943 bytes docs/step1-00/css-demo/css-demo-finished.html | 2 +- docs/step1-00/css-demo/css-demo.html | 2 +- docs/step1-00/js-demo/js-demo.html | 2 +- index.html | 10 +- package-lock.json | 12 +- step1-00/index.html | 17 --- {step1-00 => step1-01}/README.md | 0 {step1-00 => step1-01}/css-demo/README.md | 3 +- .../css-demo/css-demo-finished.css | 7 +- step1-01/css-demo/css-demo-finished.html | 29 +++++ step1-01/css-demo/css-demo.css | 63 ++++++++++ {step1-00 => step1-01}/css-demo/css-demo.html | 2 +- {step1-00 => step1-01}/html-demo/README.md | 0 .../html-demo/html-demo.html | 2 +- {step1-00 => step1-01}/html-demo/style.css | 0 step1-01/index.html | 37 +++--- step1-01/js-demo/README.md | 116 ++++++++++++++++++ .../js-demo/js-demo-finished.html | 14 ++- step1-01/js-demo/js-demo.html | 30 +++++ step1-02/README.md | 9 ++ step1-02/finished/index.html | 34 +++++ step1-02/{ => finished}/style.css | 17 +-- step1-02/index.html | 28 ----- step1-03/index.html | 48 ++++---- step1-03/style.css | 21 ++-- step1-05/src/components/TodoFooter.tsx | 5 +- step1-05/src/components/TodoHeader.tsx | 14 ++- step1-05/src/style.css | 21 ++-- step1-06/src/components/TodoFooter.tsx | 2 +- step1-06/src/components/TodoHeader.tsx | 15 ++- step1-06/src/style.css | 21 ++-- step1-07/src/components/TodoFooter.tsx | 2 +- step1-07/src/components/TodoHeader.tsx | 18 +-- step1-07/src/style.css | 21 ++-- 36 files changed, 428 insertions(+), 196 deletions(-) rename {step1-00/assets => assets}/fabric.jpg (100%) create mode 100644 assets/todo_screenshot.jpg delete mode 100644 step1-00/index.html rename {step1-00 => step1-01}/README.md (100%) rename {step1-00 => step1-01}/css-demo/README.md (93%) rename step1-00/css-demo/css-demo.css => step1-01/css-demo/css-demo-finished.css (92%) create mode 100644 step1-01/css-demo/css-demo-finished.html create mode 100644 step1-01/css-demo/css-demo.css rename {step1-00 => step1-01}/css-demo/css-demo.html (89%) rename {step1-00 => step1-01}/html-demo/README.md (100%) rename {step1-00 => step1-01}/html-demo/html-demo.html (99%) rename {step1-00 => step1-01}/html-demo/style.css (100%) create mode 100644 step1-01/js-demo/README.md rename step1-00/js-demo/js-demo.html => step1-01/js-demo/js-demo-finished.html (65%) create mode 100644 step1-01/js-demo/js-demo.html create mode 100644 step1-02/README.md create mode 100644 step1-02/finished/index.html rename step1-02/{ => finished}/style.css (73%) diff --git a/step1-00/assets/fabric.jpg b/assets/fabric.jpg similarity index 100% rename from step1-00/assets/fabric.jpg rename to assets/fabric.jpg diff --git a/assets/todo_screenshot.jpg b/assets/todo_screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf85ea5531417cffc1f603ef73f9aa9d61c2bc7e GIT binary patch literal 38943 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 literal 0 HcmV?d00001 diff --git a/docs/step1-00/css-demo/css-demo-finished.html b/docs/step1-00/css-demo/css-demo-finished.html index ff34678..9f18134 100644 --- a/docs/step1-00/css-demo/css-demo-finished.html +++ b/docs/step1-00/css-demo/css-demo-finished.html @@ -14,7 +14,7 @@

Our Logo

- fabric logo + fabric logo

Contact Us

diff --git a/docs/step1-00/css-demo/css-demo.html b/docs/step1-00/css-demo/css-demo.html index 295440c..f1ea2c9 100644 --- a/docs/step1-00/css-demo/css-demo.html +++ b/docs/step1-00/css-demo/css-demo.html @@ -14,7 +14,7 @@

Our Logo

- fabric logo + fabric logo

Contact Us

diff --git a/docs/step1-00/js-demo/js-demo.html b/docs/step1-00/js-demo/js-demo.html index ce350c2..18b059f 100644 --- a/docs/step1-00/js-demo/js-demo.html +++ b/docs/step1-00/js-demo/js-demo.html @@ -12,7 +12,7 @@

Our Logo

- fabric logo + fabric logo

Our Logo

- fabric logo + fabric logo

Contact Us

diff --git a/step1-00/html-demo/README.md b/step1-01/html-demo/README.md similarity index 100% rename from step1-00/html-demo/README.md rename to step1-01/html-demo/README.md diff --git a/step1-00/html-demo/html-demo.html b/step1-01/html-demo/html-demo.html similarity index 99% rename from step1-00/html-demo/html-demo.html rename to step1-01/html-demo/html-demo.html index a337da9..27784d8 100644 --- a/step1-00/html-demo/html-demo.html +++ b/step1-01/html-demo/html-demo.html @@ -128,7 +128,7 @@

b tag em tag i tag sub tag sup tab code tag

- +

diff --git a/step1-00/html-demo/style.css b/step1-01/html-demo/style.css similarity index 100% rename from step1-00/html-demo/style.css rename to step1-01/html-demo/style.css diff --git a/step1-01/index.html b/step1-01/index.html index 8e4c512..4512b34 100644 --- a/step1-01/index.html +++ b/step1-01/index.html @@ -1,27 +1,18 @@ - - -

todos

-
-
- - - + + + + + + + -
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
4 items left
diff --git a/step1-01/js-demo/README.md b/step1-01/js-demo/README.md new file mode 100644 index 0000000..509dd40 --- /dev/null +++ b/step1-01/js-demo/README.md @@ -0,0 +1,116 @@ +## JavaScript Demo + +It's entirely possible to create a website with nothing but HTML and CSS, but as soon as you want user interaction other than links and forms, you'll need to reach for JavaScript, the scripting language of the web. Fortunately, JavaScript has grown up quite a bit since it was introduced in the 90s, and now runs just about everything: web applications, mobile applications, native applications, servers, robots and rocket ships. + +In this demo we are going to cover a few of the core basics of the language that will help us when we start writing our TODO app. At the end of this demo we will be able to display the number of the letter 'a's in our email input. + +We'll be covering: + +- Variables +- Functions +- Conditionals +- Loops +- Interacting with the DOM (Document Object Model) + +### Variables + +Javascript is a loosly typed language. We can create a new variable with the keywords `var, let, const` and use them within our application. These variables can contain one of the following types of values: + +1. boolean +2. number +3. string +4. array +5. object + +Because they are not strongly typed, we can switch a varible from a number, to a string, to an array anytime we want to. In practice, this is a bit of an anti-pattern, as it makes debugging and refactoring extremely difficult. This is why we write just about every project in [Typescript](https://www.typescriptlang.org/). + +Lets start off our demo by adding some variables to our [script tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script) + +```js +const match = 'a'; +let matches = 0; +``` + +### Functions + +Functions are resuable pieces of functionality. Functions can take inputs (parameters), and return values. Functions can be called from within your program, from within other functions, or invoked from within the DOM itself. + +In our example we'll create a function called displayMatches (camelCase is typical for functions) and we'll invoke this function anytime that our submit button is clicked. For now we'll simply call a console log (a function that prints values to the browser console); + +```html + +``` + +```js +function displayMatches() { + console.log("I'm Clicked"); +} +``` + +### Iteration + +Next up we are going to iterate through a string of text, and find all of the 'a' characters in the list. We don't yet have that string, so we'll use a fill in for now. Once we have our `email` variable we can loop over it with the [`for of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) loop syntax. + +```js +function displayMatches() { + const text = 'abcda'; + for (let letter of text) { + console.log(letter); + } +} +``` + +### Conditionals + +Next we want to compare each `letter` with our `match` value, and if they are the same, we will increment our matches variable. Notice that `match` is a const and `matches` is a let because we expected `matches` to change over time. Remember that `letter = match` would set the `letter` variable to the value in `match`, so we use `==`, equality operator, and `===` strict equality operator, to make these comparisons. + +> ("1" == 1) is true whereas ("1" === 1) would be false + +```js +function displayMatches() { + const text = 'abcda'; + for (let letter of text) { + if (letter === match) { + matches++; + } + } + console.log(matches); +} +``` + +### Interacting with the DOM + +Now that we have a function performing all of our logic, it's time to connect this to our DOM by using some of the browsers built in functions. + +First we need to get a reference to the email field in our app. To do this, I've added an `id` to the input, and we will call one of JavaScripts oldest methods (IE 5.5), getElementyId, which we find on the browser provided `document` global variable. This function will return a reference to that input, and we can store it in the `email` variable. + +```js +const email = document.getElementById('email'); +console.log(email); +``` + +And since what we're actually after is the "value" of the input field, we can set our `text` variable to the string assigned to the "value" key. To see this in action. Right click on the console message created by the code above, choose "save as variable" and then type `variableName.value`. + +```js +const text = email.value; +``` + +#### Returning the values to the DOM + +Now that we've read values from the DOM, and fed that into our matching logic, we are ready to return that number to our app. To do this we first need to grab a reference to our submit button, and since this button has no `id` we are going to use the more modern (IE8) `querySelector` to get it. This function takes any valid CSS selector and returns the first found match. + +```js +const submit = document.querySelector('.submit'); +``` + +Now that we have a reference to the submit input, we can set its value to a new value. + +```js +submit.value = matches + ' matches'; +``` + +If you are curious, we could have done this in a single line by chaining these methods and keys together: + +```js +document.querySelector('.submit').value = matches + ' matches'; +``` diff --git a/step1-00/js-demo/js-demo.html b/step1-01/js-demo/js-demo-finished.html similarity index 65% rename from step1-00/js-demo/js-demo.html rename to step1-01/js-demo/js-demo-finished.html index ce350c2..eb4eb17 100644 --- a/step1-00/js-demo/js-demo.html +++ b/step1-01/js-demo/js-demo-finished.html @@ -1,5 +1,7 @@ - + + +

This is my Title

@@ -12,12 +14,12 @@

Our Logo

- fabric logo + fabric logo

Contact Us

- +
@@ -29,13 +31,15 @@ let matches = 0; function displayMatches() { - const text = document.querySelector('.email').value; + const email = document.getElementById('email'); + const text = email.value; for (let letter of text) { if (letter === match) { matches++; } } - document.querySelector('.submit').value = matches + ' matches'; + const submit = document.querySelector('.submit'); + submit.value = matches + ' matches'; } diff --git a/step1-01/js-demo/js-demo.html b/step1-01/js-demo/js-demo.html new file mode 100644 index 0000000..3080f1c --- /dev/null +++ b/step1-01/js-demo/js-demo.html @@ -0,0 +1,30 @@ + + + + + +
+

This is my Title

+
+ +
+

Our Logo

+ fabric logo +
+
+

Contact Us

+
+ + +
+
+
+
+ + + diff --git a/step1-02/README.md b/step1-02/README.md new file mode 100644 index 0000000..0106361 --- /dev/null +++ b/step1-02/README.md @@ -0,0 +1,9 @@ +## HTML and CSS + +## Exercise + +1. Add an unordered list of class 'todos' after the filters +2. Add four todos. +3. Center the "TODO" header +4. Style all elements with button class to have no border and 5px padding top/bottom and 10px left/right +5. Set the active button style to have a 2px solid blue bottom border diff --git a/step1-02/finished/index.html b/step1-02/finished/index.html new file mode 100644 index 0000000..3f93472 --- /dev/null +++ b/step1-02/finished/index.html @@ -0,0 +1,34 @@ + + + + + + +
+

todos

+
+ +
+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+
4 items left
+ + diff --git a/step1-02/style.css b/step1-02/finished/style.css similarity index 73% rename from step1-02/style.css rename to step1-02/finished/style.css index 15642d5..4163a3a 100644 --- a/step1-02/style.css +++ b/step1-02/finished/style.css @@ -1,21 +1,23 @@ body { - font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; width: 400px; margin: 20px auto; } + h1 { text-align: center; } +.addTodo { + display: flex; +} + .textfield { - width: 80%; + flex-grow: 1; + margin-right: 10px; } -.add { - margin-left: 5%; -} - -.button { +.submit { border: none; padding: 5px 10px; } @@ -28,6 +30,7 @@ h1 { background: transparent; border: none; } + .filter .active { border-bottom: 2px solid blue; } diff --git a/step1-02/index.html b/step1-02/index.html index 7c9d40d..e69de29 100644 --- a/step1-02/index.html +++ b/step1-02/index.html @@ -1,28 +0,0 @@ - - - - -

todos

- -
- - - -
-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
4 items left
- - diff --git a/step1-03/index.html b/step1-03/index.html index c9278ac..8e850ae 100644 --- a/step1-03/index.html +++ b/step1-03/index.html @@ -1,29 +1,34 @@ - + + + -

todos

- - -
- - - -
+
+

todos

+
+ + +
+ +
+
  • - +
  • - +
  • - +
  • - +
@@ -33,13 +38,12 @@

Contact Us

diff --git a/index.html b/index.html index 1e5cb66..9f3e489 100644 --- a/index.html +++ b/index.html @@ -16,22 +16,16 @@

Day 1

Setup, HTML, CSS, Javascript and Intro to React -
  • - - Step 0
    - HTML/CSS/JS -
    -
  • Step 1
    - Todo HTML + HTML/CSS/JS
  • Step 2
    - Todo CSS + Todo HTML & CSS
  • diff --git a/package-lock.json b/package-lock.json index 2136b74..1accc3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3825,7 +3825,6 @@ "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3844,7 +3843,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3938,7 +3936,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -4024,8 +4021,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -4125,14 +4121,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/step1-00/index.html b/step1-00/index.html deleted file mode 100644 index 8e0bfb1..0000000 --- a/step1-00/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/step1-00/README.md b/step1-01/README.md similarity index 100% rename from step1-00/README.md rename to step1-01/README.md diff --git a/step1-00/css-demo/README.md b/step1-01/css-demo/README.md similarity index 93% rename from step1-00/css-demo/README.md rename to step1-01/css-demo/README.md index 920b06e..3974435 100644 --- a/step1-00/css-demo/README.md +++ b/step1-01/css-demo/README.md @@ -30,9 +30,10 @@ CSS can be applied to HTML tags in three different ways. ### Targeting specific HTML tags -Inline styles are always applied directly to the element you place them on, style tags and external CSS files need a method for matching HTML elements with their prospective style sets. We call these "selectors", and they are just as important to learn as the properties/values themselves. +Inline styles are always applied directly to the element you place them on, style tags and external CSS files need a method for matching HTML elements with their prospective style sets. We call these "selectors", and they are just as important to learn as the properties/values themselves. Below are a series of selectors and property/value combinations that we'll apply to our CSS Demo page ```css +/* Targeting the entire page */ body { font: 1.2em sans-serif; } diff --git a/step1-00/css-demo/css-demo.css b/step1-01/css-demo/css-demo-finished.css similarity index 92% rename from step1-00/css-demo/css-demo.css rename to step1-01/css-demo/css-demo-finished.css index 6d769bd..fa9c4ee 100644 --- a/step1-00/css-demo/css-demo.css +++ b/step1-01/css-demo/css-demo-finished.css @@ -1,11 +1,14 @@ -/* https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Combinators_and_multiple_selectors */ - +/* Targeting an HTML tag */ body { font: 1.2em sans-serif; } +/* Targeting an HTML tag */ h1 { + /* Color name */ color: black; + + /* 6 digit hex */ background: #ababab; /* Margin: property for each side */ diff --git a/step1-01/css-demo/css-demo-finished.html b/step1-01/css-demo/css-demo-finished.html new file mode 100644 index 0000000..9f18134 --- /dev/null +++ b/step1-01/css-demo/css-demo-finished.html @@ -0,0 +1,29 @@ + + + + + +
    +

    This is my Title

    +
    + +
    +

    Our Logo

    + fabric logo +
    +
    +

    Contact Us

    +
    + + +
    +
    +
    +
    + + diff --git a/step1-01/css-demo/css-demo.css b/step1-01/css-demo/css-demo.css new file mode 100644 index 0000000..c58234f --- /dev/null +++ b/step1-01/css-demo/css-demo.css @@ -0,0 +1,63 @@ +/* https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Combinators_and_multiple_selectors */ + +/* body { + font: 1.2em sans-serif; +} */ + +/* h1 { + color: black; + background: #ababab; + margin-bottom: 15px; + margin-top: 15px; + padding: 10px; + border: 1px solid #ddd; +} */ + +/* span { + color: #004578; +} */ + +/* .tiles { + display: flex; +} */ + +/* .tiles img { + width: 100%; +} */ + +/* .tiles > div { + background: rgb(10, 10, 10); + color: white; + flex-basis: 100%; + padding: 10px 20px 15px; + margin: 10px 20px 10px 0; +} */ + +/* div.links { + background: #004578; +} */ + +/* a { + color: white; +} */ + +/* a:hover { + color: #ccc; +} */ + +/* a ~ a { + display: block; +} */ + +/* .tiles > div:last-child { + margin-right: 0; +} */ + +/* #contact-form { + display: flex; + flex-direction: column; +} */ + +/* input[type='submit'] { + margin-top: 10px; +} */ diff --git a/step1-00/css-demo/css-demo.html b/step1-01/css-demo/css-demo.html similarity index 89% rename from step1-00/css-demo/css-demo.html rename to step1-01/css-demo/css-demo.html index 6aed91a..f1ea2c9 100644 --- a/step1-00/css-demo/css-demo.html +++ b/step1-01/css-demo/css-demo.html @@ -14,7 +14,7 @@