CSS (Cascading Style Sheets) is a stylesheet language used to describe the presentation and design of a document written in HTML. It controls the layout, colors, fonts, and overall appearance of web pages. Here’s an overview of CSS:
Core Concepts
- Selectors:
- Element Selector: Targets HTML elements by their tag name.
css p { color: blue; }
- Class Selector: Targets elements with a specific class attribute, denoted by a dot (
.
) before the class name.css .my-class { font-size: 16px; }
- ID Selector: Targets a unique element with a specific ID, denoted by a hash (
#
) before the ID name.css #my-id { margin: 20px; }
- Attribute Selector: Targets elements based on their attributes.
css input[type="text"] { border: 1px solid black; }
- Properties and Values:
- Color:
color
,background-color
, etc.css h1 { color: red; }
- Typography:
font-family
,font-size
,font-weight
,line-height
css p { font-family: Arial, sans-serif; font-size: 14px; }
- Box Model: Consists of
margin
,border
,padding
, andcontent
.css .box { margin: 10px; padding: 20px; border: 1px solid black; }
- Layout:
display
,position
,float
,clear
,flex
,grid
css .container { display: flex; justify-content: space-between; }
CSS Layout Techniques
- Box Model:
- Content: The actual content of the element.
- Padding: Space between the content and the border.
- Border: The border around the padding (if any).
- Margin: Space outside the border.
- Positioning:
- Static: Default positioning; elements flow in the normal document flow.
- Relative: Positioned relative to its normal position.
- Absolute: Positioned relative to the nearest positioned ancestor.
- Fixed: Positioned relative to the viewport, stays in place when scrolling.
- Sticky: Switches between relative and fixed positioning depending on the scroll position.
- Flexbox:
- Flex Container:
display: flex;
on the parent element. - Flex Items: Items within the flex container that can be aligned and distributed using properties like
justify-content
,align-items
, andflex-direction
.css .flex-container { display: flex; justify-content: center; align-items: center; }
- Grid Layout:
- Grid Container:
display: grid;
on the parent element. - Grid Items: Items within the grid container defined by rows and columns using
grid-template-rows
,grid-template-columns
,grid-gap
, etc.css .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 10px; }
Responsive Design
- Media Queries:
- Apply styles based on device characteristics like screen size or orientation.
css @media (max-width: 600px) { .container { flex-direction: column; } }
- Fluid Layouts:
- Use percentages or viewport units (
vw
,vh
) for responsive sizing.css .container { width: 80vw; }
CSS Preprocessors
- Sass (Syntactically Awesome Style Sheets):
- Adds features like variables, nesting, and mixins to CSS.
- Syntax includes
.scss
(Sass’s newer syntax) and.sass
(indented syntax).
- LESS:
- Similar to Sass, offering variables, mixins, and functions with a slightly different syntax.
CSS Frameworks
- Bootstrap: A popular CSS framework offering pre-designed components and a grid system for responsive design.
- Tailwind CSS: A utility-first CSS framework that allows for custom designs by applying utility classes directly in HTML.
Best Practices
- Maintainability: Use clear, consistent naming conventions and organize CSS in a modular fashion.
- Performance: Minify CSS files to reduce load times and avoid redundant styles.
- Accessibility: Ensure styles do not interfere with readability and user interaction for people with disabilities.
CSS is a powerful tool for designing web pages, allowing developers to create visually appealing and well-structured websites. Mastery of CSS involves understanding its core principles and being able to apply them effectively across different browsers and devices.