W3Schools (Review & Learning Website)
VS CodeDownload (Actual Download Link)
With the advent of CMS (Content Management Systems) and AI (Artificial Intelligence) - both of which allow you to create websites without needing to know anything about programming/coding - it seems like learning HTML & CSS seems unnecessary - like a dying language.
Here's my reasons why I do not feel this way
With the advent of Auto-pilot, do we feel like pilots no longer need to know how to manually fly an airplane?
Introduces students to coding - a simplified version of programming that doesn't involve the problem solving and math that we generally think of with programming.
Learning HTML & CSS is the best intro to learning to code.
It really helps students understand the process of taking what they want to add to a web page, and substitute the actual code for it.Â
Paragraphs --> <p>
Ordered list --> <ol>
List items --> <li>Â
Also introduces students to syntax
HTML/CSS jobs are very much not dead.
People who develop themes for Wordpress have to know HTML, CSS, and PHP.
People who develop widgets for Wordpress have to know HTML, CSS, and PHP.
Content managers do note get paid as well as web developers.
Knowing HTML/CSS gives you power over CMS' so that you can learn how to manipulate the pages - on specific pages (through the WYSIWYG) or through your own manipulation of the HTML/CSS theme.
Providing opportunities for learning coding/programming in an atypical way opens opportunity for more diversity. I get more girls, trans/nonbinary, and students of non-white ethnicities to join my computer science program through Web development than through other coding classes.
Willamette Promise offers opportunities for students in high school to earn college credit. CS 195, "Fundamentals of Web Design" is a 4 credit class that covers HTML & CSS and best practices of web development, including accessibility, usability, and consistency.
Earning college credit in high school has many advantages, including reduced cost and content to add to resumes and college applications, but it could also have some disadvantages - too many college credits unrelated to your future degree could have a negative impact on financial aid opportunities, including grants, scholarships, and even student loans. Students will want to consider whether this is a course they actually want college credit for and weigh the pros and cons carefully.
All Orange Sections will be related to Willamette Promise and will be required to complete in order to obtain college credit.
Slides - The Web - Brief History
Youtube - The 90's Kids Guide to the Internet
Youtube - Code.org - What is the Internet
Youtube - How the Internet Works in 5 Minutes
Complete the Simple Bio assignment
Common Mistakes Found:
If adding a style, it goes in the head section, not the body
You will do a little research on the job of your dreams and create a webpage dedicated to it.
Regular Requirements:
Proper HTML Skeleton (Doctype, HTML, Head, Body, Title, etc.)
Title & H1 = "My Dream Job - NameOfJob"
Headings (at least 3 topics). These elements should be used properly (h1 for title, h2 for heading, h3 for sub-heading).
Create at least 3 paragraphs per topic (h2/h3).
Within those paragraphs use at least 3 strong and 3 emphasis elements appropriately.
Add 3 images related to the career you chose. You must write alt descriptions appropriate for someone using a screen reader.
Add 3 links (anchor tags w/ href & target="_blank") to content related to your job selection.
At least 1 ordered list and 1 unordered list.
Create 1 table. Style it like we did in class so it shows its borders.
College Credit Requirements:
Everything listed above, with the following additions/changes
Split the content into 3 different HTML pages.
Use one nav tag to group elements into one block to create a navigation element that links your pages.
Using anchor tags with an href attribute create the relative links to hyperlink your pages.
include an image for a logo and assign an id attribute to it. (You can use Logo to create a logo for free)
Use this navigation & logo on all pages (for a consistent look).
Add a span tag to style an inline element.
Instead of 3 paragraphs per topic, at least 3 paragraphs per page. You're welcome to use text from any source rather than writing your own, but it should be relevant to the page.
Use one superscript and one subscript tags.
Create at least one break in a paragraph (br) and one horizontal line (hr).
Acronyms and abbreviations are everywhere. Use the <abbr> element with an acronym and an abbreviation. Use the title attribute to expand each of them.
Assign an id attribute to each list.
Add 3 images from an external source, using absolute links (in addition to the 3 relative images).
Instead of 1 table, create 3 different (but relevant) tables.Â
Each table needs a class attribute that is the same for all tables.
The first table will use the table headings with the scope attribute for the headings for the rows and columns. This table should contain headings in the first row and the first column.
You should have a blank cell in the 1st row's 1st cell (<th></th>)
The first row should only contain <th> elements with scopes that specify being for columns
The first cell in each column (except the first) should also be <th> elements with scopes that specify being for rows.
All other cells should be <td> cells.
The second table will use the colspan attribute.
The third table will use the rowspan attribute.
Create a form using the following controls:
Text Input
Password Input
Radio Buttons
Check Boxes
Dropdown Menu
Submit Button
Text Area
You are welcome to use styles, but please do so responsibly. No obnoxious colors or backgrounds. Your site needs to be a professional and modern looking web page. At the least go for a simple minimalistic and clean set of pages.
Presentation - HTML 1
Practice - In Class Assignment: HTML 1
Presentation - HTML 2
Practice - In Class Assignment: HTML 2
Cheatsheet - HTML Cheatsheet
Assignment - HTML Portfolio
Slides - Intro to CSS
Video - CSS in 100 Seconds
Website - HTML Color Codes
CSS Text Alignment (center, left, right)
CSS Text Decoration (underline, line-through, overline, none)
Quiz - CSS Intro Quiz
Web Challenge - Colorful Fun
CSS Text Transform (Uppercase, Lowercase, Capitalize)
CSS Training Game - CSS Diner
*** Mr. Birkel only recommends floating images & boxes that other text is supposed to flow around.
Complete the Wanted Poster challenge. You're given starter HTML & CSS code (which you can copy and paste). You just need to read the instructions to see what needs to change and figure out what properties and values make those changes.
HTML Lists (Review)
HTML Unordered Lists (Review)
HTML Ordered Lists (Review)
CSS Selectors (Reminder)
Find a recipe that is meaningful to you (family recipe, something you just enjoy, something that sounds interesting). Make a webpage dedicated to it.
Requirements
Have fun with this assignment!
Presentation - CSS 1
Practice - In Class Assignment 1
Presentation - CSS 2
Practice - In Class Assignment 2
Cheatsheet - CSS Cheatsheet 1
Cheatsheet - CSS Cheatsheet 2
Assignment - CSS Portfolio
Video - What is the Internet
Video - The Internet - HTTP & HTML
Video - The Internet - How Search Works
Review: (Under Construction)
Part 1 - Multiple Choice Quiz
Part 2 - Recipe Website
HTML: Hyper-Text Markup Language. The "What" of your website - defines what data representsÂ
- "This is a level 1 heading, this is an image, this is a table, ..."
Div Element - Generic Block Item - used to group things or to create a special-purpose block item
Span Element - Generic Inline Item - Used to group inline content (typically text) and to give it a defined purpose.
Block Elements
Div: Group element
Text: Headings & Paragraphs
Links: Anchor Tags - must have an href. Include target="_blank" if it's linking to an external site
Lists: ul = unordered list, ol = ordered list, li = list item
Tables: Tables contain Table Rows (tr). Table Rows contain Table Headings (th) or Table Data (td)
Inline Elements
Span: group element (inside text)
Images: img - must have a src & alt - These can be changed to block level items in css with "display: block;"
Strong: Used to imply visual importance - "Computer Science is the study of solving problems.". Default style: bold
Emphasis (em): Used to imply vocal importance - "This is my favorite snack". Default style: italicized
CSS: Cascading Style Sheet. The "How it looks" of your website. Define rules for how elements should be styled.
- "The Paragraph should be red, with a solid black border around it. 15px separating the border and the text."
Resource: Designing for the Web is an online book geared at helping you learn design principals to improve design. Content from this book may be referenced from time to time. This is a great resource for helping you understand the "How" and "Why" behind good design ideas and improving your own sites.
Presentation - Bootstrap 1
Practice - In Class Assignment 1
Presentation - Bootstrap 2
Practice - In Class Assignment 2
Assignment - Bootstrap Portfolio
Your tasked with created a 2-page website on 2 of your phobias, each phobia being a different HTML page.
If you don't think you have phobias, pick phobias you know other people have such as Spiders (arachnophobia) or heights (acrophobia).
Starter Code is below
HTML Layout Starter Code
CSS Layout Starter Code
In each file you'll need to update information.
HTML (2 pages, so you'll have to do this twice)
Change the Title & H1 to reflect the phobia you're picking
Update the links to point the HTML documents to their pages.
Change the main section to have:
3 Headings appropriate for a page on this phobia (look to Wikipedia for heading ideas if you can't think of any)
3 paragraphs (1 per heading) discussing this phobia
1 image related to this phobia
Change the Footer to contain your last name and the current year - Example for Dough Smith: ©Smith 2024;
CSS (1 page, that both HTML files link to)
Adjust the background colors of everything to look nice
Consider using a monochromatic color scheme - Pick 1 focus color, like blue, and make everything blues & grays (including black & white)
Add margins & padding to make everything spaced nicely
Margins space elements away from each other
Padding pushes elements inside their boxes (space between edge of container and the text)
You may need to add selectors for headings and paragraphs and give them margin-top or margin-bottom to space paragraphs and headings.
Add any other CSS styles you'd like
Text Color changes
Shadows (box-shadow or text-shadow)
Font changes
etc.
Check out GeeksForGeeks How to Create A Navbar with Flexbox? to see how to make a horizontal navigation.
Save the following as "15_Phobia1.html". Later you'll make a copy called "15_Phobia2.html" and adjust it for a 2nd phobia.
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Layout</title>
        <link rel="stylesheet" href="15_style.css">
    </head>
    <body>
        <div id="mainWrapper">
            <header>
                <h1>Title of your Webpage goes here</h1>
            </header>
            <nav>
                <a href="15_Phobia1.html">[Name of 1st Phobia]</a>
                <a href="15_Phobia2.html">[Name of 2nd Phobia]</a>
            </nav>
            <main>
                <p>Replace this section with the following:</p>
                <ol>
                    <li>3 Headings appropriate for a page on this phobia (look to Wikipedia for heading ideas if you can't think of any)</li>
                    <li>3 paragraphs (1 per heading) discussing this phobia</li>
                    <li>1 image related to this phobia</li>
                </ol>
            </main>
            <footer>© [Your Last Name] [Year]</footer>
        </div>
    </body>
</html>
/*Save the following as 15_style.css*/
/*
    CSS Reset
    - Reset Margins
    - Reset Padding
    - Reset how dimensions are calculated
*/
*
{
    margin: 0px;
    padding: 0px;
    box-sizing: border-box;
}
body
{
    background-color: yellow;
}
#mainWrapper
{
    background-color: aqua;
    width: 800px;
    margin: auto;
    min-height: 400px;
}
header
{
    background-color: hotpink;
    min-height: 100px;
}
nav
{
    background-color: lightgray;
    min-height: 25px;
}
main
{
    background-color: lime;
    min-height: 400px;
}
footer
{
    background-color: hotpink;
    min-height: 25px;
}
Article - Figma - How To Wireframe
Article: Webflow - Color Theory for Designers: A Beginner's Guide
Article: Flux Design -Â How to Strategically Use Color In Website Design
Article: Elementor.com - Color Theory Fundamentals Every Web Designer Should Know
Video - Flexbox in 100 Seconds
Website - A Guide to Flexbox
Flexbox Training Game - Flexbox Froggy
Flexbox Training Game - Flexbox Defense
Practice - 3 Column Preview Card
Web Challenge - Product Preview Card
CSS-Tricks - "How to Section your HTML"
Web Challenge - Quick Code - Career
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Layout</title>
    <link rel="stylesheet" href="18_style.css">
  </head>
  <body>
    <div id="mainWrapper">
      <header></header>
      <nav></nav>
      <main>
        <article></article>
        <aside></aside>
      </main>
      <footer></footer>
    </div>
  </body>
</html>
*
{
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
}
body
{
  background-color: aqua;
}
#mainWrapper
{
  border: 1px solid black;
  min-height: 400px;
  width: 800px;
  margin: 20px auto;
  background-color: white;
}
header
{
  background-color:black;
  min-height: 100px;
}
nav
{
  background-color: orange;
  min-height: 40px;
}
main
{
  background-color: chartreuse;
  min-height: 400px;
  display: flex;
}
/*
  To make article & aside flow side-by-side, their parent
  (main) needs to change its display from block to flex.
*/
article
{
  background-color: rgb(238, 0, 255);
  min-height: 200px;
  width: 70%;
}
aside
{
  background-color: rgb(55, 0, 255);
  min-height: 200px;
  width: 30%;
}
footer
{
  background-color: hotpink;
  min-height: 40px;
}
Using the HTML & CSS Layout Template Code, Pick an animated or game character that you like and make a website tailored towards that character.
Change colors to suite your preference.
Add content to the appropriate containers.
Add Padding to containers to push content in.
Add Margins to elements to push them away from other elements.
Suggested changes (and order of areas to focus on)
Header - add an h1 with the name of your character. Play with the CSS until you're satisfied with the look
Footer - Add a paragraph with ©______2023 (replace the underline with your last name). Play with the CSS until you're satisfied.
Main - Add h2's and paragraphs to fill with the content you want to write about. All the content should be specifically about this character. Topics to consider are basic info, background or origins, abilities, relationships, etc. Play with the CSS until you're satisfied.
Aside - Add any content that would be side-content for this character. Side-content would be trivia, fun facts, character data/attributes, relation to other characters, etc.
Nav - add links to other pages. 1 link could be to an external site (like the wiki page for this character), but other links should be internal for other topics related to this character (for example, if the character was Wolverine, I could have internal pages for X-Men & Professor X). Each of these external links should be connected to a page that uses the same layout and stylesheet, but can simply contain the title of the page (h1 in header) and the article's content can just read "Under Construction".
CSS to really focus on for content improvements
background-color & color (consider contrast)
margins (separate elements - push content apart)
padding (separate content from edges - push content in)
width
min-height (should be a little smaller than what the content might hold)
"margin: auto" or "margin: [top-bottom value] auto" will center a box in its container.
"display: flex" given to a parent object changes the flow of objects in a container to be left-to-right instead of top-to-bottom.
box-shadow & text-shadow
Clear your default margin's and padding:
*
{
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
}
Practice - Design Portfolio Assignment
Article - How to Design A Website Layout
Assignment - Portfolio Final Project
Grading Rubric - WP Design for Final
Grading Rubric - WP Final
Your final project will be provided to you 2-3 weeks prior to the end of the semester (finals week + 1-2 weeks).
All finals assess your skills with the following:
HTML content - can you build an HTML page with valid tags and correct syntax? Can it pass an HTML Validator?
CSS Content - can you use CSS selectors, CSS properties, and CSS values to manipulate the look of your webpage?
Design - can you demonstrate good design skills, making use of the Box Model, Flexbox, and Semantical elements (like header, footer, main, nav, etc.)?
Each final will have specific things I'm looking for and they may change from semester to semester.
The theme for your final project will be different every year. The theme helps me ensure that students aren't using other student's work from previous years.
Past Finals:
Website - Cyber Career Exploration
What data is collected?
W3Schools - Cards
W3Schools - Flip Cards
W3Schools - Profile Card
W3Schools - Product Card
Task: Design your own cards on a career of your choosing. You're welcome to look at code from any of these W3School examples, but don't copy & paste code. You're expected to understand what each line of code is doing in the HTML & the CSS.
Video Tutorial - Hyperplexed - I've Found the Optimal Website Header...
Mozilla Developer Tutorials HTML, CSS, Accessibility