From 0e88bd40103bf6f26f8a6a1af2a8fda40e6757be Mon Sep 17 00:00:00 2001 From: thatblindgeye Date: Sat, 28 Aug 2021 18:25:48 -0400 Subject: [PATCH 1/9] Add exercise instructions for css foundations --- foundations/01-css-methods/README.md | 16 ++++++++++++++++ foundations/02-class-id-selectors/README.md | 14 ++++++++++++++ foundations/03-grouping-selectors/README.md | 15 +++++++++++++++ foundations/04-chaining-selectors/README.md | 10 ++++++++++ foundations/05-descendant-combinator/README.md | 13 +++++++++++++ foundations/06-cascade-fix/README.md | 15 +++++++++++++++ 6 files changed, 83 insertions(+) create mode 100644 foundations/01-css-methods/README.md create mode 100644 foundations/02-class-id-selectors/README.md create mode 100644 foundations/03-grouping-selectors/README.md create mode 100644 foundations/04-chaining-selectors/README.md create mode 100644 foundations/05-descendant-combinator/README.md create mode 100644 foundations/06-cascade-fix/README.md diff --git a/foundations/01-css-methods/README.md b/foundations/01-css-methods/README.md new file mode 100644 index 0000000..8cc79c1 --- /dev/null +++ b/foundations/01-css-methods/README.md @@ -0,0 +1,16 @@ +# Methods for Adding CSS +In this exerrcise, you're going to practice adding CSS to an HTML file using all three methods: external CSS, internal CSS, and inline CSS. + +There are three elements for you to add styles to, each of which uses a different method of adding CSS to it, as noted in the outcome image below. All other exercises in this section will have a CSS file provided and linked for you, but for this exercise you will have to create the file and link it in the HTML file yourself. + +You should only be using type selectors for this exercise when adding styles via the external and internal methods. + +## Desired Outcome + + +### Self Check +- Did you use all three methods of adding CSS to an HTML file? +- Did you properly link the external CSS file in the HTML file? +- Does the `div` element have CSS added via the external method? +- Does the `p` element have CSS added via the internal method? +- Does the `button` element have CSS added via the inline method? \ No newline at end of file diff --git a/foundations/02-class-id-selectors/README.md b/foundations/02-class-id-selectors/README.md new file mode 100644 index 0000000..09219ec --- /dev/null +++ b/foundations/02-class-id-selectors/README.md @@ -0,0 +1,14 @@ +# Class and ID Selectors +Knowing how to add class and ID attributes to HTML elements, as well as use their respective selectors, is invaluable, and it's important to practice using them. + +There are several elements in the HTMl file provided, which you will have to add either class or ID attributes to as noted in the outcome image below. You will then have to add rules in the CSS file provided using the correct selector syntax. Look over the outcome image carefully, and try to keep in mind what elements look similarly styled (classes), which ones may be completely unique from the rest (ID), and which ones have slight variations from others (multiple classes). + +It isn't entirely important what class or ID values you use, as the focus here is being able to add the attributes and use the correct selector syntax to style elements. + +## Desired Outcome + + +### Self Check +- Do the odd numbered `div` elements share a class? +- Do the even numbered `div` elements have unique ID's? +- Does the 3rd `div` element have multiple classes? \ No newline at end of file diff --git a/foundations/03-grouping-selectors/README.md b/foundations/03-grouping-selectors/README.md new file mode 100644 index 0000000..a99286f --- /dev/null +++ b/foundations/03-grouping-selectors/README.md @@ -0,0 +1,15 @@ +# Grouping Selectors + +Let's build a little off the previous exercise, where you (hopefully) added multiple classes to a single element in order to apply two different rules to it. + +Instead of having a single element with two different rules applied, though, we're instead going to give two elements each a unique class name, then add rules for styles that both elements share as well as their own unique styles. Make sure you take a good look at the outcome image below to see exactly what is unique about each element, and what both elements have in common. + +This will help you further practice adding classes and using class selectors, so be sure you add the class attribute in the HTML file. + +## Desired Outcome + + +### Self Check +- Does each element have a unique class name? +- Did you use the grouping selector for styles that both elements share? +- Did you make separate rules for the styles unique to each element? \ No newline at end of file diff --git a/foundations/04-chaining-selectors/README.md b/foundations/04-chaining-selectors/README.md new file mode 100644 index 0000000..a278489 --- /dev/null +++ b/foundations/04-chaining-selectors/README.md @@ -0,0 +1,10 @@ +# Chaining Selectors +With this exercise we've provided you a completed HTML file, so you will only have to edit the CSS file. It's more important to understanding how chaining different selectors works for this exercise than actually adding the attributes. + +We have two different elements for you to style, each with two class names where one of the class names is shared. The goal here is to chain the selectors for both elements so that each have a unique style applied despite using a shared class selector. In other words, you want an element that has both X and Y to have one set of styles, while an element with X and Z has a completely different set of styles. + +## Desired Outcome + + +### Self Check +- Did you properly chain class selectors for each rule? \ No newline at end of file diff --git a/foundations/05-descendant-combinator/README.md b/foundations/05-descendant-combinator/README.md new file mode 100644 index 0000000..a6962c7 --- /dev/null +++ b/foundations/05-descendant-combinator/README.md @@ -0,0 +1,13 @@ +# Descendant Combinator +Understanding how combinators work can become a lot easier when you start playing around with them and seeing what exactly is affected by them versus what isn't. + +The goal of this exercise is to apply styles to elements that are descendants of another element, while leaving elements that *aren't* descendants of that element unstyled. + +You can use either type or class selectors for this exercise, whichever you may feel you want to practice with more. The HTML file is setup (so no need to edit anything on your part in it) where any combination of selectors will work, so if you're feeling adventurous you can even try combining a type *and* class selector for the descendant combinator. + +## Desired Outcome + + +### Self Check +- Do the elements that contain the text "This should be styled" have the correct styles applied? +- Do the elements that contain the text "This should be unstyled" have no styles applied? \ No newline at end of file diff --git a/foundations/06-cascade-fix/README.md b/foundations/06-cascade-fix/README.md new file mode 100644 index 0000000..9646cac --- /dev/null +++ b/foundations/06-cascade-fix/README.md @@ -0,0 +1,15 @@ +# CSS Methods +This final exercise for CSS Foundations is going to get you a little more comfortable with the cascade, specificity and rule order in particular. Both the HTMl and CSS files are filled out for you, so instead of adding rules yourself you will simply be editing what is provided. + +There are several elements that have some sort of specificity or rule order issue in the provided CSS file. Each element that you must fix will contain text that tells you how to fix the issue, either "Fix specificity" or "Fix rule order". + +Specificity issues will require you to either add or remove a selector from an already existing rule, while rule order issues will require you to remove an entire rule from its current position and place it at the end of the CSS file in a particular order. + +Issues with the cascade can be the bane for many when it comes to CSS, so once you complete this exercise you'll be one step ahead of the curve and on your way to loving CSS (or at the very least being friendly acquaintances with it). + +## Desired Outcome + + +### Self Check +- Do all rules for elements labeled "Fix specificity" have the correct selector added or removed? +- Are all rules for elements labeled "Fix rule order" placed at the end of the CSS file and in the correct order? \ No newline at end of file From 2d28ef122a70f2e1cbb4e0564ccede2bff610177 Mon Sep 17 00:00:00 2001 From: thatblindgeye Date: Sun, 29 Aug 2021 19:22:54 -0400 Subject: [PATCH 2/9] Add solutions and templates --- foundations/01-css-methods/README.md | 10 +++++--- foundations/01-css-methods/index.html | 14 +++++++++++ .../01-css-methods/solution/solution.css | 7 ++++++ .../01-css-methods/solution/solution.html | 23 ++++++++++++++++++ foundations/02-class-id-selectors/README.md | 9 ++++++- foundations/02-class-id-selectors/index.html | 17 +++++++++++++ .../solution/solution.css | 19 +++++++++++++++ .../solution/solution.html | 17 +++++++++++++ foundations/02-class-id-selectors/style.css | 0 foundations/03-grouping-selectors/README.md | 8 ++++-- foundations/03-grouping-selectors/index.html | 14 +++++++++++ .../solution/solution.css | 14 +++++++++++ .../solution/solution.html | 14 +++++++++++ foundations/03-grouping-selectors/style.css | 0 foundations/04-chaining-selectors/README.md | 14 +++++++++-- foundations/04-chaining-selectors/index.html | 22 +++++++++++++++++ .../pexels-andrea-piacquadio-3777931.jpg | Bin 0 -> 20145 bytes .../pexels-katho-mutodo-8434791.jpg | Bin 0 -> 32281 bytes .../solution/solution.css | 9 +++++++ .../solution/solution.html | 20 +++++++++++++++ foundations/04-chaining-selectors/style.css | 0 .../05-descendant-combinator/README.md | 6 ++++- .../05-descendant-combinator/index.html | 21 ++++++++++++++++ .../solution/solution.css | 6 +++++ .../solution/solution.html | 21 ++++++++++++++++ .../05-descendant-combinator/style.css | 0 26 files changed, 276 insertions(+), 9 deletions(-) create mode 100644 foundations/01-css-methods/index.html create mode 100644 foundations/01-css-methods/solution/solution.css create mode 100644 foundations/01-css-methods/solution/solution.html create mode 100644 foundations/02-class-id-selectors/index.html create mode 100644 foundations/02-class-id-selectors/solution/solution.css create mode 100644 foundations/02-class-id-selectors/solution/solution.html create mode 100644 foundations/02-class-id-selectors/style.css create mode 100644 foundations/03-grouping-selectors/index.html create mode 100644 foundations/03-grouping-selectors/solution/solution.css create mode 100644 foundations/03-grouping-selectors/solution/solution.html create mode 100644 foundations/03-grouping-selectors/style.css create mode 100644 foundations/04-chaining-selectors/index.html create mode 100644 foundations/04-chaining-selectors/pexels-andrea-piacquadio-3777931.jpg create mode 100644 foundations/04-chaining-selectors/pexels-katho-mutodo-8434791.jpg create mode 100644 foundations/04-chaining-selectors/solution/solution.css create mode 100644 foundations/04-chaining-selectors/solution/solution.html create mode 100644 foundations/04-chaining-selectors/style.css create mode 100644 foundations/05-descendant-combinator/index.html create mode 100644 foundations/05-descendant-combinator/solution/solution.css create mode 100644 foundations/05-descendant-combinator/solution/solution.html create mode 100644 foundations/05-descendant-combinator/style.css diff --git a/foundations/01-css-methods/README.md b/foundations/01-css-methods/README.md index 8cc79c1..c34458f 100644 --- a/foundations/01-css-methods/README.md +++ b/foundations/01-css-methods/README.md @@ -1,9 +1,13 @@ # Methods for Adding CSS -In this exerrcise, you're going to practice adding CSS to an HTML file using all three methods: external CSS, internal CSS, and inline CSS. +In this exerrcise, you're going to practice adding CSS to an HTML file using all three methods: external CSS, internal CSS, and inline CSS. You should only be using type selectors for this exercise when adding styles via the external and internal methods. You should also use keywords for colors (e.g. "blue" instead of using RGB or HEX values). -There are three elements for you to add styles to, each of which uses a different method of adding CSS to it, as noted in the outcome image below. All other exercises in this section will have a CSS file provided and linked for you, but for this exercise you will have to create the file and link it in the HTML file yourself. +There are three elements for you to add styles to, each of which uses a different method of adding CSS to it, as noted in the outcome image below. All other exercises in this section will have a CSS file provided and linked for you, but for this exercise you will have to create the file and link it in the HTML file yourself. This is all about practicing using these different methods and getting the syntax right. -You should only be using type selectors for this exercise when adding styles via the external and internal methods. +The properties you need to add to each element are: + +* `div`: a red background, white text, a font size of 32px, center aligned, and bold +* `p`: a green background, white text, and a font size of 18px +* `button`: an orange background and a font size of 18px ## Desired Outcome diff --git a/foundations/01-css-methods/index.html b/foundations/01-css-methods/index.html new file mode 100644 index 0000000..9256151 --- /dev/null +++ b/foundations/01-css-methods/index.html @@ -0,0 +1,14 @@ + + + + + + + Methods for Adding CSS + + +
Style me via the external method!
+

I would like to be styled with the internal method, please.

+ + + \ No newline at end of file diff --git a/foundations/01-css-methods/solution/solution.css b/foundations/01-css-methods/solution/solution.css new file mode 100644 index 0000000..2ae67ef --- /dev/null +++ b/foundations/01-css-methods/solution/solution.css @@ -0,0 +1,7 @@ +div { + text-align: center; + background-color: red; + color: white; + font-size: 32px; + font-weight: bold; +} \ No newline at end of file diff --git a/foundations/01-css-methods/solution/solution.html b/foundations/01-css-methods/solution/solution.html new file mode 100644 index 0000000..d9ceb3b --- /dev/null +++ b/foundations/01-css-methods/solution/solution.html @@ -0,0 +1,23 @@ + + + + + + + Methods for Adding CSS + + + + + +
Style me via the external method!
+

I would like to be styled with the internal method, please.

+ + + \ No newline at end of file diff --git a/foundations/02-class-id-selectors/README.md b/foundations/02-class-id-selectors/README.md index 09219ec..32880ed 100644 --- a/foundations/02-class-id-selectors/README.md +++ b/foundations/02-class-id-selectors/README.md @@ -3,7 +3,14 @@ Knowing how to add class and ID attributes to HTML elements, as well as use thei There are several elements in the HTMl file provided, which you will have to add either class or ID attributes to as noted in the outcome image below. You will then have to add rules in the CSS file provided using the correct selector syntax. Look over the outcome image carefully, and try to keep in mind what elements look similarly styled (classes), which ones may be completely unique from the rest (ID), and which ones have slight variations from others (multiple classes). -It isn't entirely important what class or ID values you use, as the focus here is being able to add the attributes and use the correct selector syntax to style elements. +It isn't entirely important what class or ID values you use, as the focus here is being able to add the attributes and use the correct selector syntax to style elements. For the colors in this exercise, try using a non-keyword value (RGB, HEX, or HSL). The properties you need to add to each element are: + +* **All odd numbered elements**: a light red/pink background, and a list of fonts containing `Verdana` as the first option and `sans-serif` as a fallback +* **The second element**: blue text and a font size of 36px +* **The third element**: in addition to the styles for all odd numbered elements, add a font size of 24px +* **The fourth element**: a light green background, a font size of 24px, and bold + +Quick tip: in VS Code, you can change which format colors are displayed in (RGB, HEX, or HSL) by hovering over the color value in the CSS and clicking the top of the popup that appears! ## Desired Outcome diff --git a/foundations/02-class-id-selectors/index.html b/foundations/02-class-id-selectors/index.html new file mode 100644 index 0000000..118fa66 --- /dev/null +++ b/foundations/02-class-id-selectors/index.html @@ -0,0 +1,17 @@ + + + + + + + Class and ID Selectors + + + +

Number 1 - I'm a class!

+
Number 2 - I'm one ID.
+

Number 3 - I'm a class, but cooler!

+
Number 4 - I'm another ID.
+

Number 5 - I'm a class!

+ + \ No newline at end of file diff --git a/foundations/02-class-id-selectors/solution/solution.css b/foundations/02-class-id-selectors/solution/solution.css new file mode 100644 index 0000000..3cd7120 --- /dev/null +++ b/foundations/02-class-id-selectors/solution/solution.css @@ -0,0 +1,19 @@ +.odd { + background-color: rgb(255, 167, 167); + font-family: Verdana, sans-serif; +} + +.oddly-cool { + font-size: 24px; +} + +#two { + color: #0000ff; + font-size: 36px; +} + +#four { + background-color: hsl(120, 100%, 75%); + font-size: 24px; + font-weight: bold; +} \ No newline at end of file diff --git a/foundations/02-class-id-selectors/solution/solution.html b/foundations/02-class-id-selectors/solution/solution.html new file mode 100644 index 0000000..d7c955e --- /dev/null +++ b/foundations/02-class-id-selectors/solution/solution.html @@ -0,0 +1,17 @@ + + + + + + + Class and ID Selectors + + + +

Number 1 - I'm a class!

+
Number 2 - I'm one ID.
+

Number 3 - I'm a class, but cooler!

+
Number 4 - I'm another ID.
+

Number 5 - I'm a class!

+ + \ No newline at end of file diff --git a/foundations/02-class-id-selectors/style.css b/foundations/02-class-id-selectors/style.css new file mode 100644 index 0000000..e69de29 diff --git a/foundations/03-grouping-selectors/README.md b/foundations/03-grouping-selectors/README.md index a99286f..12e02f4 100644 --- a/foundations/03-grouping-selectors/README.md +++ b/foundations/03-grouping-selectors/README.md @@ -2,9 +2,13 @@ Let's build a little off the previous exercise, where you (hopefully) added multiple classes to a single element in order to apply two different rules to it. -Instead of having a single element with two different rules applied, though, we're instead going to give two elements each a unique class name, then add rules for styles that both elements share as well as their own unique styles. Make sure you take a good look at the outcome image below to see exactly what is unique about each element, and what both elements have in common. +Instead of having a single element with two different rules applied, though, you're instead going to give two elements each a unique class name, then add rules for styles that both elements share as well as their own unique styles. Make sure you take a good look at the outcome image below to see exactly what is unique about each element, and what both elements have in common. -This will help you further practice adding classes and using class selectors, so be sure you add the class attribute in the HTML file. +This will help you further practice adding classes and using class selectors, so be sure you add the class attribute in the HTML file. For the remainder of these exercises, the format of any colors is entirely up to you, we trust you'll practice using the different values! The properties you need to add to each element are: + +* **The first element**: a black background and white text +* **The second element**: a yellow background +* **Both elements**: a font size of 28px and a list of fonts containing `Helvetica` and `Times New Roman`, with `sans-serif` as a fallback ## Desired Outcome diff --git a/foundations/03-grouping-selectors/index.html b/foundations/03-grouping-selectors/index.html new file mode 100644 index 0000000..de0314e --- /dev/null +++ b/foundations/03-grouping-selectors/index.html @@ -0,0 +1,14 @@ + + + + + + + Grouping Selectors + + + + + + + \ No newline at end of file diff --git a/foundations/03-grouping-selectors/solution/solution.css b/foundations/03-grouping-selectors/solution/solution.css new file mode 100644 index 0000000..16e6760 --- /dev/null +++ b/foundations/03-grouping-selectors/solution/solution.css @@ -0,0 +1,14 @@ +.inverted, +.fancy { + font-family: Helvetica, "Times New Roman", sans-serif; + font-size: 28px; +} + +.inverted { + background-color: black; + color: white; +} + +.fancy { + background-color: yellow; +} \ No newline at end of file diff --git a/foundations/03-grouping-selectors/solution/solution.html b/foundations/03-grouping-selectors/solution/solution.html new file mode 100644 index 0000000..ec07ad0 --- /dev/null +++ b/foundations/03-grouping-selectors/solution/solution.html @@ -0,0 +1,14 @@ + + + + + + + Grouping Selectors + + + + + + + \ No newline at end of file diff --git a/foundations/03-grouping-selectors/style.css b/foundations/03-grouping-selectors/style.css new file mode 100644 index 0000000..e69de29 diff --git a/foundations/04-chaining-selectors/README.md b/foundations/04-chaining-selectors/README.md index a278489..d77fe1f 100644 --- a/foundations/04-chaining-selectors/README.md +++ b/foundations/04-chaining-selectors/README.md @@ -1,10 +1,20 @@ # Chaining Selectors + +Credits for the images in this exercise go to [Katho Mutodo](https://www.pexels.com/@photobykatho?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels) and [Andrea Piacquadio](https://www.pexels.com/@olly?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels). + With this exercise we've provided you a completed HTML file, so you will only have to edit the CSS file. It's more important to understanding how chaining different selectors works for this exercise than actually adding the attributes. -We have two different elements for you to style, each with two class names where one of the class names is shared. The goal here is to chain the selectors for both elements so that each have a unique style applied despite using a shared class selector. In other words, you want an element that has both X and Y to have one set of styles, while an element with X and Z has a completely different set of styles. +We have two images for you to style, each with two class names where one of the class names is shared. The goal here is to chain the selectors for both elements so that each have a unique style applied despite using a shared class selector. In other words, you want an element that has both X and Y to have one set of styles, while an element with X and Z has a completely different set of styles. We included the original images as well so that you can see how the styles you will be adding look in comparison, so do not add any styles to them. + +The properties you need to add to each element are: + +* Make the element with both the `avatar` and `proportioned` classes 300 pixels wide, then give it a height so that it retains its original square proportions (don't hardcode in a pixel value for the height!) +* Make the element with both the `avatar` and `distorted` classes 200 pixels wide, then make its height twice as big as its width (here you should hardcode in a pixel value) ## Desired Outcome ### Self Check -- Did you properly chain class selectors for each rule? \ No newline at end of file +- Did you properly chain class selectors for each rule? +- Does the `proportioned` image retain its original square proportions? +- Does the `distorted` image end up looking squished and, well, distorted? \ No newline at end of file diff --git a/foundations/04-chaining-selectors/index.html b/foundations/04-chaining-selectors/index.html new file mode 100644 index 0000000..2877008 --- /dev/null +++ b/foundations/04-chaining-selectors/index.html @@ -0,0 +1,22 @@ + + + + + + + Chaining Selectors + + + + +
+ + +
+ +
+ + +
+ + \ No newline at end of file diff --git a/foundations/04-chaining-selectors/pexels-andrea-piacquadio-3777931.jpg b/foundations/04-chaining-selectors/pexels-andrea-piacquadio-3777931.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f7652cf6006f6b31f22fff59a951d0134aadeab GIT binary patch literal 20145 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

k}~TrYK;@~y`w}QW@2K)v6&#zz?vx~ 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 + + + + + + Chaining Selectors + + + +

+
+ + +
+ + \ No newline at end of file diff --git a/foundations/04-chaining-selectors/style.css b/foundations/04-chaining-selectors/style.css new file mode 100644 index 0000000..e69de29 diff --git a/foundations/05-descendant-combinator/README.md b/foundations/05-descendant-combinator/README.md index a6962c7..6c3e18f 100644 --- a/foundations/05-descendant-combinator/README.md +++ b/foundations/05-descendant-combinator/README.md @@ -3,7 +3,11 @@ Understanding how combinators work can become a lot easier when you start playin The goal of this exercise is to apply styles to elements that are descendants of another element, while leaving elements that *aren't* descendants of that element unstyled. -You can use either type or class selectors for this exercise, whichever you may feel you want to practice with more. The HTML file is setup (so no need to edit anything on your part in it) where any combination of selectors will work, so if you're feeling adventurous you can even try combining a type *and* class selector for the descendant combinator. +You can use either type or class selectors for this exercise, whichever you may feel you want to practice with more. The HTML file is setup (so no need to edit anything in it) where any combination of selectors will work, so if you're feeling adventurous you can even try combining a type *and* class selector for the descendant combinator. + +The properties you need to add are: + +* Only the `p` elements that are descendants of the `div` element should have a yellow background, red text, a font size of 20px, and center aligned ## Desired Outcome diff --git a/foundations/05-descendant-combinator/index.html b/foundations/05-descendant-combinator/index.html new file mode 100644 index 0000000..9771a2a --- /dev/null +++ b/foundations/05-descendant-combinator/index.html @@ -0,0 +1,21 @@ + + + + + + + Descendant Combinator + + + +
+

This should be styled.

+
+

This should be unstyled.

+

This should be unstyled.

+
+

This should be styled.

+

This should be styled.

+
+ + \ No newline at end of file diff --git a/foundations/05-descendant-combinator/solution/solution.css b/foundations/05-descendant-combinator/solution/solution.css new file mode 100644 index 0000000..a4cd654 --- /dev/null +++ b/foundations/05-descendant-combinator/solution/solution.css @@ -0,0 +1,6 @@ +.container .text { + background-color: yellow; + color: red; + font-size: 20px; + text-align: center; +} \ No newline at end of file diff --git a/foundations/05-descendant-combinator/solution/solution.html b/foundations/05-descendant-combinator/solution/solution.html new file mode 100644 index 0000000..efcb155 --- /dev/null +++ b/foundations/05-descendant-combinator/solution/solution.html @@ -0,0 +1,21 @@ + + + + + + + Descendant Combinator + + + +
+

This should be styled.

+
+

This should be unstyled.

+

This should be unstyled.

+
+

This should be styled.

+

This should be styled.

+
+ + \ No newline at end of file diff --git a/foundations/05-descendant-combinator/style.css b/foundations/05-descendant-combinator/style.css new file mode 100644 index 0000000..e69de29 From 8bde6984358b377d74b52a117218ad0e122fb65a Mon Sep 17 00:00:00 2001 From: Eric <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 29 Aug 2021 19:31:45 -0400 Subject: [PATCH 3/9] Add outcome image --- foundations/01-css-methods/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/foundations/01-css-methods/README.md b/foundations/01-css-methods/README.md index c34458f..ce52b50 100644 --- a/foundations/01-css-methods/README.md +++ b/foundations/01-css-methods/README.md @@ -10,11 +10,12 @@ The properties you need to add to each element are: * `button`: an orange background and a font size of 18px ## Desired Outcome - +![outcome](https://user-images.githubusercontent.com/70952936/131268832-f3a3bbde-c9e6-4e73-9b99-79ffa3d2144a.png) + ### Self Check - Did you use all three methods of adding CSS to an HTML file? - Did you properly link the external CSS file in the HTML file? - Does the `div` element have CSS added via the external method? - Does the `p` element have CSS added via the internal method? -- Does the `button` element have CSS added via the inline method? \ No newline at end of file +- Does the `button` element have CSS added via the inline method? From 83952eed974ea21d81c2fc1d05261c58fc9a5445 Mon Sep 17 00:00:00 2001 From: Eric <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 29 Aug 2021 19:32:38 -0400 Subject: [PATCH 4/9] Add outcome image --- foundations/02-class-id-selectors/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/foundations/02-class-id-selectors/README.md b/foundations/02-class-id-selectors/README.md index 32880ed..b5417f6 100644 --- a/foundations/02-class-id-selectors/README.md +++ b/foundations/02-class-id-selectors/README.md @@ -13,9 +13,10 @@ It isn't entirely important what class or ID values you use, as the focus here i Quick tip: in VS Code, you can change which format colors are displayed in (RGB, HEX, or HSL) by hovering over the color value in the CSS and clicking the top of the popup that appears! ## Desired Outcome - +![outcome](https://user-images.githubusercontent.com/70952936/131268858-5360bb32-27ba-4ce0-be59-5fda97f5eb12.png) + ### Self Check - Do the odd numbered `div` elements share a class? - Do the even numbered `div` elements have unique ID's? -- Does the 3rd `div` element have multiple classes? \ No newline at end of file +- Does the 3rd `div` element have multiple classes? From fe77c12d4ed40b42a9422716288c229dced2f001 Mon Sep 17 00:00:00 2001 From: Eric <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 29 Aug 2021 19:33:13 -0400 Subject: [PATCH 5/9] Add outcome image --- foundations/03-grouping-selectors/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/foundations/03-grouping-selectors/README.md b/foundations/03-grouping-selectors/README.md index 12e02f4..da7df6f 100644 --- a/foundations/03-grouping-selectors/README.md +++ b/foundations/03-grouping-selectors/README.md @@ -11,9 +11,10 @@ This will help you further practice adding classes and using class selectors, so * **Both elements**: a font size of 28px and a list of fonts containing `Helvetica` and `Times New Roman`, with `sans-serif` as a fallback ## Desired Outcome - +![outcome](https://user-images.githubusercontent.com/70952936/131268881-369972f3-b6b6-4242-965f-512c1335cc3a.png) + ### Self Check - Does each element have a unique class name? - Did you use the grouping selector for styles that both elements share? -- Did you make separate rules for the styles unique to each element? \ No newline at end of file +- Did you make separate rules for the styles unique to each element? From 7d2385fe7ec21dacbc23ee2ed225d01320a2354c Mon Sep 17 00:00:00 2001 From: Eric <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 29 Aug 2021 19:34:07 -0400 Subject: [PATCH 6/9] Add outcome image --- foundations/04-chaining-selectors/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/foundations/04-chaining-selectors/README.md b/foundations/04-chaining-selectors/README.md index d77fe1f..92da50c 100644 --- a/foundations/04-chaining-selectors/README.md +++ b/foundations/04-chaining-selectors/README.md @@ -12,9 +12,10 @@ The properties you need to add to each element are: * Make the element with both the `avatar` and `distorted` classes 200 pixels wide, then make its height twice as big as its width (here you should hardcode in a pixel value) ## Desired Outcome - +![outcome](https://user-images.githubusercontent.com/70952936/131268893-f2e0b302-ea2e-44b8-ba30-b555a35023c9.jpg) + ### Self Check - Did you properly chain class selectors for each rule? - Does the `proportioned` image retain its original square proportions? -- Does the `distorted` image end up looking squished and, well, distorted? \ No newline at end of file +- Does the `distorted` image end up looking squished and, well, distorted? From b23b1ba59346ab6f16db7ad701073ff85d8afc60 Mon Sep 17 00:00:00 2001 From: Eric <70952936+thatblindgeye@users.noreply.github.com> Date: Sun, 29 Aug 2021 19:34:44 -0400 Subject: [PATCH 7/9] Add outcome image --- foundations/05-descendant-combinator/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/foundations/05-descendant-combinator/README.md b/foundations/05-descendant-combinator/README.md index 6c3e18f..954ce67 100644 --- a/foundations/05-descendant-combinator/README.md +++ b/foundations/05-descendant-combinator/README.md @@ -10,8 +10,9 @@ The properties you need to add are: * Only the `p` elements that are descendants of the `div` element should have a yellow background, red text, a font size of 20px, and center aligned ## Desired Outcome - +![outcome](https://user-images.githubusercontent.com/70952936/131268923-75916744-d57f-4609-92f0-4f7ce031726a.png) + ### Self Check - Do the elements that contain the text "This should be styled" have the correct styles applied? -- Do the elements that contain the text "This should be unstyled" have no styles applied? \ No newline at end of file +- Do the elements that contain the text "This should be unstyled" have no styles applied? From 1401f2e4778f280a42763266d3c35ea3ea054a55 Mon Sep 17 00:00:00 2001 From: thatblindgeye Date: Mon, 30 Aug 2021 17:54:33 -0400 Subject: [PATCH 8/9] Add solutions and templates for final exercise --- foundations/06-cascade-fix/README.md | 12 +-- foundations/06-cascade-fix/index.html | 22 +++++ .../06-cascade-fix/solution/solution.css | 93 +++++++++++++++++++ .../06-cascade-fix/solution/solution.html | 22 +++++ foundations/06-cascade-fix/style.css | 35 +++++++ 5 files changed, 178 insertions(+), 6 deletions(-) create mode 100644 foundations/06-cascade-fix/index.html create mode 100644 foundations/06-cascade-fix/solution/solution.css create mode 100644 foundations/06-cascade-fix/solution/solution.html create mode 100644 foundations/06-cascade-fix/style.css diff --git a/foundations/06-cascade-fix/README.md b/foundations/06-cascade-fix/README.md index 9646cac..79e4cfd 100644 --- a/foundations/06-cascade-fix/README.md +++ b/foundations/06-cascade-fix/README.md @@ -1,15 +1,15 @@ # CSS Methods -This final exercise for CSS Foundations is going to get you a little more comfortable with the cascade, specificity and rule order in particular. Both the HTMl and CSS files are filled out for you, so instead of adding rules yourself you will simply be editing what is provided. +This final exercise for CSS Foundations is going to give you a closer look at the cascade, specificity and rule order in particular. Both the HTMl and CSS files are filled out for you, so instead of adding rules yourself you will simply be editing what is provided. -There are several elements that have some sort of specificity or rule order issue in the provided CSS file. Each element that you must fix will contain text that tells you how to fix the issue, either "Fix specificity" or "Fix rule order". +There are a few elements that have some sort of specificity or rule order issue in the provided CSS file. It's up to you to figure out what issue is affecting an element, and how to fix it. You can edit the CSS file by adding or removing selectors or moving stuff around, but you should not edit the HTML file or any of of the actual style declarations in the CSS. -Specificity issues will require you to either add or remove a selector from an already existing rule, while rule order issues will require you to remove an entire rule from its current position and place it at the end of the CSS file in a particular order. +There are multiple ways to solve this exercise, and we did our best to include all of the possible solutions for each element. -Issues with the cascade can be the bane for many when it comes to CSS, so once you complete this exercise you'll be one step ahead of the curve and on your way to loving CSS (or at the very least being friendly acquaintances with it). +Issues with the cascade can be the bane for many when it comes to CSS, and while you won't be an expert from this exercise alone and there are other ways to deal with these issues, it is still super helpful to see how these issues affect our final styles and why its important to order rules carefully. ## Desired Outcome ### Self Check -- Do all rules for elements labeled "Fix specificity" have the correct selector added or removed? -- Are all rules for elements labeled "Fix rule order" placed at the end of the CSS file and in the correct order? \ No newline at end of file +- Did you make sure to not edit the HTML file? +- If you added selectors to the CSS, do they target a valid HTML element? \ No newline at end of file diff --git a/foundations/06-cascade-fix/index.html b/foundations/06-cascade-fix/index.html new file mode 100644 index 0000000..ca6aa5b --- /dev/null +++ b/foundations/06-cascade-fix/index.html @@ -0,0 +1,22 @@ + + + + + + + Fix the Cascade + + + +

I'm just a simple paragraph!

+

I'm a smaller paragraph!

+ + + + +
I'm not related to those divs down there.
+
I have a child! +
My ancestor is so embarrassing.
+
+ + \ No newline at end of file diff --git a/foundations/06-cascade-fix/solution/solution.css b/foundations/06-cascade-fix/solution/solution.css new file mode 100644 index 0000000..44bee02 --- /dev/null +++ b/foundations/06-cascade-fix/solution/solution.css @@ -0,0 +1,93 @@ +.para, +.small-para { + color: hsl(0, 100%, 50%); +} + +.para { + font-size: 22px; +} + +.button { + background-color: #ffc0cb; + color: black; + font-size: 20px; +} + +div.text { + color: green; + font-size: 28px; +} + +/* SOLUTION */ + +/* + For the following rule, we removed it from its original position in the file: + + .small-para { + font-size: 12px; + } + + Then we placed it after the .para selector, taking advantage of the rule order since both selectors have the same specificity. + + Another solution would be keeping it in its original place and just chaining selectors, giving this rule a higher specificity: + + p.small-para { + font-size: 12px; + } +*/ + +.small-para { + font-size: 12px; +} + +/* + For the following rule we removed the original .confirm selector: + + .confirm { + background: green; + color: white; + font-size: 20px; + font-weight: bold; + } + + Then we used an ID selector instead, since it has a higher specificity than the .button selector. + + Other solutions would be to simply move the .confirm rule below the .button rule, or to use the .button.confirm selector without moving it: + + .button.confirm { + background: green; + color: white; + font-size: 20px; + font-weight: bold; + } +*/ + +#confirm-button { + background: green; + color: white; + font-size: 20px; + font-weight: bold; +} + +/* + For the following rule we first removed it from its original position in the file: + + .child { + color: red; + font-size: 14px; + } + + Then we added another selector to create a descendant combinator. If we only created a descendant combinator, the specificity would be tied with the div.text selector and it would come down to rule order, and if we only moved it the div.text selector would still have a higher specificity. + + Another solution would be to keep the rule where it was and just replace the div selector with the .text selector: + + .text .child { + color: red; + font-size: 14px; + } +*/ + +div .child { + color: red; + font-size: 14px; +} \ No newline at end of file diff --git a/foundations/06-cascade-fix/solution/solution.html b/foundations/06-cascade-fix/solution/solution.html new file mode 100644 index 0000000..27ac65a --- /dev/null +++ b/foundations/06-cascade-fix/solution/solution.html @@ -0,0 +1,22 @@ + + + + + + + Fix the Cascade + + + +

I'm just a simple paragraph!

+

I'm a smaller paragraph!

+ + + + +
I'm not related to those divs down there.
+
I have a child! +
My ancestor is so embarrassing.
+
+ + \ No newline at end of file diff --git a/foundations/06-cascade-fix/style.css b/foundations/06-cascade-fix/style.css new file mode 100644 index 0000000..9965754 --- /dev/null +++ b/foundations/06-cascade-fix/style.css @@ -0,0 +1,35 @@ +.para, +.small-para { + color: hsl(0, 100%, 50%); +} + +.small-para { + font-size: 12px; +} + +.para { + font-size: 22px; +} + +.confirm { + background: green; + color: white; + font-size: 20px; + font-weight: bold; +} + +.button { + background-color: #ffc0cb; + color: black; + font-size: 20px; +} + +.child { + color: red; + font-size: 14px; +} + +div.text { + color: green; + font-size: 28px; +} \ No newline at end of file From d7b2b79fcc2a6472d52a25443f75b7fd5a7b3a65 Mon Sep 17 00:00:00 2001 From: Eric <70952936+thatblindgeye@users.noreply.github.com> Date: Mon, 30 Aug 2021 17:58:51 -0400 Subject: [PATCH 9/9] Add outcome image --- foundations/06-cascade-fix/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/foundations/06-cascade-fix/README.md b/foundations/06-cascade-fix/README.md index 9646cac..ecb811e 100644 --- a/foundations/06-cascade-fix/README.md +++ b/foundations/06-cascade-fix/README.md @@ -8,8 +8,8 @@ Specificity issues will require you to either add or remove a selector from an a Issues with the cascade can be the bane for many when it comes to CSS, so once you complete this exercise you'll be one step ahead of the curve and on your way to loving CSS (or at the very least being friendly acquaintances with it). ## Desired Outcome - +![outcome](https://user-images.githubusercontent.com/70952936/131411210-47ff21dd-6d0c-4a7f-b6b1-1ec40f93dd8c.jpg) ### Self Check - Do all rules for elements labeled "Fix specificity" have the correct selector added or removed? -- Are all rules for elements labeled "Fix rule order" placed at the end of the CSS file and in the correct order? \ No newline at end of file +- Are all rules for elements labeled "Fix rule order" placed at the end of the CSS file and in the correct order?