CSS Positioning, Flexbox, and Grid Layout, Accessibility
February 8, 2025
CSS Layout Techniques
- CSS Positioning
- Flexbox
- Grid Layout
Positioning Methods in CSS
- Static: Default positioning
- Relative: Positioned relative to its normal position
- Absolute: Positioned relative to the nearest positioned ancestor
- Fixed: Stays in place even when scrolling
CSS Positioning - Example
Modify the position of elements with relative, absolute, and fixed values:
.box {
position: relative;
top: 20px;
left: 10px;
}
Flexbox Basics
Main axis vs. Cross axis
justify-content
: Align items along the main axis
align-items
: Align items along the cross axis
Flex properties: flex-grow
, flex-shrink
, flex-basis
Flexbox - Example Layout
Creating responsive layouts with Flexbox
.container {
display: flex;
justify-content: center; // Centers items horizontally
align-items: center; // Centers items vertically
}
.item {
flex: 1; // Makes items grow equally
}
Grid Layout vs Flexbox
- Grid: Use for two-dimensional layouts (rows and columns)
- Flexbox: Use for one-dimensional layouts (row or column)
Defining rows and columns:
.container {
display: grid;
grid-template-columns: 1fr 1fr;
}
Grid Layout - Example
Using grid-template-rows, grid-template-columns, and grid-gap:
.container {
display: grid;
grid-template-rows: 200px 1fr;
grid-template-columns: 1fr 2fr;
grid-gap: 20px;
}
Responsive Grid Layouts
Use media queries to adjust layouts dynamically:
@media (max-width: 600px) {
.container {
grid-template-columns: 1fr;
}
}
Why Accessibility Matters
- Accessibility ensures people with disabilities, can use the web.
- Benefits everyone, not just disabled users:
- Captions help in noisy environments.
- High contrast improves readability for all.
- Examples:
- Low Contrast: Light gray text on a white background.
- Accessible Contrast: Dark text on a light background.
Web Content Accessibility Guidelines (WCAG) Principles
- Operable - site must work without a mouse.
Web Content Accessibility Guidelines (WCAG) Principles
- Understandable - content should be easy to read.
- Example: Use clear labels, avoid jargon.
<label for="email">Enter your email:</label>
<input type="email" id="email" placeholder="you@example.com">
- Robust - Content should work across different browsers, devices, and assistive technologies.
- Example: Use semantic HTML elements so screen readers and future technologies can interpret content correctly.
<button type="submit">Submit</button>
Contrast
- Users with color blindness or low vision need high-contrast text.
- WCAG recommends at least 4.5:1 contrast ratio for text.
Can use WebAIM’s Contrast Checker to check contrast ratios.