HTML & CSS
-
HTML Fundamentals
- What HTML is and how websites work
- HTML elements, tags, and attributes
- Basic HTML document structure (DOCTYPE, html, head, body)
- Headings (h1–h6) and paragraphs
- Text formatting (strong, em, mark, small, del, ins, sub, sup)
- Links and anchor tags
- Absolute and relative URLs
- Images and image attributes
- Lists (ul, ol, li)
- HTML comments
- Nesting elements correctly
- HTML entities and special characters
- File paths for images, links, and other resources
-
HTML Document Structure and Metadata
- The purpose of the head element
- Page titles and meta descriptions
- Character encoding (UTF-8)
- Viewport meta tag
- Favicons
- Linking external CSS files
- Organizing files and folders
- Introduction to SEO basics
-
CSS Fundamentals
- What CSS is and how it works
- CSS syntax, rules, and declarations
- Connecting CSS to HTML
- Inline, internal, and external CSS
- Element, class, and ID selectors
- Writing reusable CSS classes
- CSS comments
- The CSS cascade
- Browser default styles
- Understanding CSS properties and values
- Introduction to browser DevTools
-
CSS Colors and Typography
- Named colors, HEX, RGB, and HSL
- Background colors
- Text color
- Font family and font stacks
- Font size, weight, and style
- Line height
- Text alignment
- Text decoration
- Text transformation
- Letter spacing and word spacing
- Google Fonts
- Using @font-face
- Fallback fonts
- Readable line length
- Typography hierarchy
- Spacing between headings and paragraphs
-
CSS Box Model and Sizing
- Understanding content, padding, border, and margin
- The box-sizing property
- Using box-sizing: border-box
- Width and height
- Min-width, max-width, min-height, and max-height
- Margin collapsing
- Padding and margin shorthand
- Borders and border styles
- Border radius
- Overflow (visible, hidden, auto, scroll)
- Outline versus border
- CSS units (px, %, em, rem, vh, vw)
- The calc(), min(), max(), and clamp() functions
-
CSS Selectors, Specificity, and Cascade
- Element, class, and ID selectors
- Grouping selectors
- Descendant selectors
- Child selectors
- Adjacent sibling selectors
- General sibling selectors
- Attribute selectors
- Pseudo-classes (hover, focus, active, checked, first-child, nth-child)
- Pseudo-elements (::before, ::after, ::first-letter, ::selection)
- Selector specificity
- Inheritance
- The cascade and source order
- The !important declaration and why to avoid overusing it
- Combining selectors effectively
- Writing maintainable CSS
-
CSS Backgrounds, Borders, and Visual Effects
- Background colors and images
- Background-size, background-position, background-repeat, and background-attachment
- Linear and radial gradients
- Border radius
- Box shadow and text shadow
- Opacity
- CSS filters
- Outline and focus indicators
- Creating visual hierarchy
- Modern CSS color functions
-
CSS Display and Positioning
- Block, inline, and inline-block elements
- The display property
- Display none versus visibility hidden
- Understanding normal document flow
- Position static, relative, absolute, fixed, and sticky
- Positioning elements inside containers
- Top, right, bottom, and left
- Inset properties
- Z-index and stacking contexts
- Overflow and positioned elements
- Float and clear (legacy basics)
- Common positioning problems
- When to use positioning versus Flexbox or Grid
-
CSS Flexbox
- Understanding one-dimensional layouts
- Flex containers and flex items
- Display flex
- Flex direction
- Main axis and cross axis
- Justify-content
- Align-items and align-content
- Align-self
- Flex-wrap
- Gap
- Flex-grow, flex-shrink, and flex-basis
- The flex shorthand
- Order and its accessibility implications
- Horizontal and vertical centering
- Building navigation bars
- Creating equal-height cards
- Common Flexbox layout patterns
-
CSS Grid
- Understanding two-dimensional layouts
- Display grid
- Grid-template-columns and grid-template-rows
- The fr unit
- Row gap and column gap
- Grid lines and grid placement
- Grid-column and grid-row
- Span and automatic placement
- Grid-template-areas
- Named grid areas
- Repeat function
- Minmax function
- Auto-fit versus auto-fill
- Implicit and explicit grids
- Responsive card grids
- Choosing between Grid and Flexbox
-
Responsive Web Design
- What responsive design means
- Mobile-first development
- Viewport meta tag
- Relative versus fixed units
- Media queries
- Breakpoints and common screen sizes
- Responsive layouts with Flexbox
- Responsive layouts with Grid
- Fluid widths and max-width
- Responsive images
- Object-fit and object-position
- Picture and srcset
- Fluid typography with clamp()
- Responsive spacing
- Preventing horizontal overflow
- Testing layouts at different screen sizes
- Designing for mobile, tablet, and desktop
- Touch-friendly interactive elements
-
HTML Forms
- Understanding the form element
- Form action and method
- Input types (text, email, password, number, tel, url, date)
- Checkboxes and radio buttons
- Connecting labels to inputs using for and id
- Placeholder, required, minlength, maxlength, min, and max
- Pattern validation
- Select, option, textarea, and button
- Fieldset and legend
- Name and value attributes
- Submit and reset buttons
- Grouping related form controls
- HTML built-in form validation
- Accessible form labels and error messages
- Introduction to GET and POST methods
- Client-side versus server-side validation
-
Semantic HTML and Accessibility
- What semantic HTML means and why it matters
- Header, nav, main, section, article, aside, and footer
- Choosing between div, span, and semantic elements
- Creating a logical page structure
- Understanding heading hierarchy
- The importance of the lang attribute
- Writing descriptive link text
- Meaningful alt text for images
- Decorative images and empty alt attributes
- Introduction to screen readers
- Keyboard navigation
- Accessible buttons and links
- Color contrast
- Visible focus indicators
- Introduction to ARIA
- Using native HTML elements before ARIA
- Respecting reduced-motion preferences
-
CSS Variables and Code Organization
- Understanding CSS custom properties
- Declaring variables with --variable-name
- Using var() and fallback values
- Defining variables in :root
- Creating color palettes
- Managing typography and spacing variables
- Reusing design values across components
- Organizing CSS files
- Naming classes consistently
- Introduction to BEM naming
- Avoiding unnecessary duplication
- Writing reusable styles
- Maintainable CSS architecture
- Introduction to CSS nesting
- Introduction to cascade layers with @layer
-
CSS Transitions, Transforms, and Animations
- Understanding CSS transitions
- Transition property, duration, delay, and timing function
- Hover and focus effects
- Transform translate, scale, rotate, and skew
- Transform origin
- Creating interactive buttons
- Introduction to @keyframes
- Animation name, duration, delay, iteration count, and direction
- Animation fill mode and timing functions
- Combining multiple animations
- Animating transform and opacity efficiently
- Avoiding excessive animations
- The prefers-reduced-motion media query
-
Advanced CSS Features
- CSS logical properties
- Aspect-ratio property
- Object-fit and object-position
- Text overflow and wrapping
- Advanced use of minmax() and repeat()
- Using gap across layout systems
- Advanced use of calc(), min(), max(), and clamp()
- Introduction to container queries
- Introduction to :is(), :where(), and :has()
- Introduction to @supports
- Understanding stacking contexts
- Advanced Grid layouts
- Advanced Flexbox patterns
- Snapping
- Feature support and graceful fallbacks
-
CSS Debugging and Developer Tools
- CSS DEBUGGING AND DEVELOPER TOOLS
- Inspecting HTML and CSS using browser DevTools
- Inspecting and editing elements
- Understanding the Styles and Computed panels
- Finding overridden CSS rules
- Debugging specificity issues
- Identifying inherited styles
- Testing CSS changes in real time
- Using the device toolbar
- Testing responsive layouts
- Checking console errors
- Understanding common layout bugs
- Debugging Flexbox and Grid
- Using the box model inspector
- Validating HTML and CSS
- Testing keyboard navigation
- Using browser tools to measure performance
-
HTML and CSS Best Practices
- Writing clean and semantic HTML
- Maintaining consistent indentation and formatting
- Using meaningful class names
- Avoiding unnecessary HTML elements
- Writing reusable CSS
- Avoiding excessive specificity
- Using consistent spacing and typography
- Organizing stylesheets
- Optimizing images
- Maintaining responsive layouts
- Following accessibility guidelines
- Avoiding unnecessary animations
- Testing across different browsers
- Checking mobile and desktop layouts
- Reviewing code for duplication and maintainability