# Coding Standards Documentation ## Introduction This document outlines our **HTML class naming conventions** and **structural guidelines**. Adhering to these standards ensures **consistent, readable, and maintainable code** across all web projects. Our goal is to facilitate **seamless team collaboration**, **reduce development time**, and **improve long-term code maintainability**. ----- ## HTML Class Naming Conventions We'll primarily use a **BEM (Block Element Modifier)-like approach** for class naming. This method provides clarity, prevents naming collisions, and makes our CSS more modular and scalable. ### Buttons Buttons are fundamental interactive elements. These classes ensure consistent styling and clear intent. * **`.btn`** * **Description**: Applies **base styles** to all buttons (e.g., `display`, `padding`, `border-radius`). This is the foundation for all button variations. * **Usage**: `` * **`.btn--primary`**, **`.btn--secondary`**, etc. * **Description**: Defines different **semantic styles** for buttons (e.g., primary action, secondary action). These classes typically apply specific colors, background colors, and hover states. * **Usage**: * `` * `` * **`.btn--large`**, **`.btn--small`** * **Description**: **Modifies the size** of the button, adjusting properties like `padding` and `font-size`. * **Usage**: * `` * `` * **`.btn--disabled`** * **Description**: Visually indicates a **non-interactive button**, typically by dimming it and disabling pointer events. * **Usage**: `` ### Layout Layout classes help create consistent page structures and enable responsive design. * **`.container`** * **Description**: Wraps main page content, typically used to **center content** and **limit its maximum width**, often providing consistent horizontal padding. * **Usage**: `
...
` * **`.row`** * **Description**: Creates **horizontal groupings of elements**, often leveraging Flexbox or Grid for column arrangement. * **Usage**: `
...
` * **`.col`**, **`.col--[breakpoint]-[size]`** (e.g., `.col--md-6`) * **Description**: Divides a `.row` into **vertical columns**. Widths are typically defined by additional classes for responsiveness (e.g., `.col--md-6` for 50% width on medium screens and up), implying a foundational CSS grid system. * **Usage**: * `
...
` * `
...
` ### Sections These classes define the main structural blocks of a web page, improving semantic understanding and styling. * **`.header`** * **Description**: Styles the **top section of a web page**, commonly containing the site logo, navigation, and search bar. * **Usage**: `
...
` * **`.main`** * **Description**: Styles the **primary content area** of a web page. Ideally, there should be only one `
` element per document. * **Usage**: `
...
` * **`.footer`** * **Description**: Styles the **bottom section of a web page**, often including copyright information or sitemaps. * **Usage**: `` * **`.section`** * **Description**: A generic class for **thematic groupings of content**, useful for applying consistent padding, margins, or background styles. * **Usage**: `
...
` ### Forms Form classes ensure a consistent look and feel for user input elements. * **`.form`** * **Description**: Styles the **entire form container**, applying general layout and spacing rules to its elements. * **Usage**: `
...
` * **`.form__group`** * **Description**: Groups related form elements (e.g., a label and its input) for consistent vertical spacing. * **Usage**: ```html
``` * **`.input`** * **Description**: Applies **base styles to generic text-based input fields** (``, ``, `