Skip to content

Latest commit

 

History

History
600 lines (495 loc) · 10.5 KB

README.md

File metadata and controls

600 lines (495 loc) · 10.5 KB

Css3-Basic

Repository Name: my-css3-project

Folder Structure: Verify Open In Editor

my-css3-project/ README.md LICENSE css/ style.css reset.css variables.css components/ header.css footer.css nav.css ... utilities/ mixins.css functions.css index.html package.json .gitignore Let me explain what each file and folder does:

README.md: A markdown file that contains information about your project, such as its purpose, how to use it, and any other relevant details. LICENSE: A file that specifies the license under which your project is released. css/: A folder that contains all your CSS files. style.css: The main CSS file that imports all other CSS files and contains any global styles. reset.css: A CSS file that resets browser styles to a consistent baseline. variables.css: A CSS file that defines variables for colors, fonts, and other reusable values. components/: A folder that contains CSS files for individual components, such as headers, footers, and navigation. utilities/: A folder that contains CSS files for utility classes, such as mixins and functions. index.html: An HTML file that demonstrates how to use your CSS project. package.json: A file that contains metadata about your project, such as its name, version, and dependencies. .gitignore: A file that specifies which files and folders should be ignored by Git. Here's some sample code to get you started:

style.css

css Verify Open In Editor

/* Import other CSS files */ @import 'reset.css'; @import 'variables.css'; @import 'components/header.css'; @import 'components/footer.css'; @import 'utilities/mixins.css';

/* Global styles */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; }

variables.css

css Verify Open In Editor

/* Define variables */ :root { --primary-color: #333; --secondary-color: #666; --font-size: 16px; }

header.css

css Verify Open In Editor

/* Styles for the header component */ .header { background-color: var(--primary-color); padding: 1em; text-align: center; } This is just a basic structure, and you can add or remove files and folders as needed.

Adding more components

Let's add some more components to our project. We'll create a nav component, a main component, and a footer component.

nav.css

css Verify Open In Editor

/* Styles for the nav component */ .nav { background-color: var(--secondary-color); padding: 1em; display: flex; justify-content: space-between; align-items: center; }

.nav ul { list-style: none; margin: 0; padding: 0; display: flex; }

.nav li { margin-right: 20px; }

.nav a { color: #fff; text-decoration: none; }

main.css

css Verify Open In Editor

/* Styles for the main component */ .main { display: flex; flex-direction: column; align-items: center; padding: 2em; }

.main h1 { font-size: 36px; margin-bottom: 10px; }

footer.css

css Verify Open In Editor

/* Styles for the footer component */ .footer { background-color: var(--primary-color); padding: 1em; text-align: center; color: #fff; }

Updating style.css

Let's update our style.css file to import the new component styles: css Verify Open In Editor

/* Import other CSS files */ @import 'eset.css'; @import 'variables.css'; @import 'components/header.css'; @import 'components/nav.css'; @import 'components/main.css'; @import 'components/footer.css'; @import 'utilities/mixins.css';

/* Global styles */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; }

Creating a demo page Let's create a demo page to showcase our CSS components. We'll update our index.html file: html Verify Open In Editor

<title>My CSS3 Project</title>

My CSS3 Project

Welcome to my CSS3 project!

This is a demo page to showcase my CSS components.

© 2023 My CSS3 Project

Adding a mixin Let's create a mixin to make our code more reusable. We'll add a mixins.css file: css Verify Open In Editor

/* Mixin for flexbox centering */ @mixin center-flex() { display: flex; justify-content: center; align-items: center; }

We can then use this mixin in our component styles: css Verify Open In Editor

/* nav.css */ .nav { @include center-flex(); background-color: var(--secondary-color); padding: 1em; }

/* main.css */ .main { @include center-flex(); flex-direction: column; padding: 2em; } This is just a basic example, but you can add more components, mixins, and utilities to make your project more robust.

How would you like to proceed? Let's continue developing our CSS3 project.

Adding a utility class

Let's create a utility class to make our code more modular. We'll add a utilities/text.css file:

css

Verify Open In Editor

/* Utility class for text alignment */ .text-center { text-align: center; }

.text-left { text-align: left; }

.text-right { text-align: right; } We can then use this utility class in our component styles:

css

Verify Open In Editor

/* footer.css / .footer { background-color: var(--primary-color); padding: 1em; color: #fff; .text-center; / Use the utility class */ }

Creating a responsive design

Let's make our design responsive by adding some media queries. We'll update our style.css file:

css

Verify Open In Editor

/* Global styles */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; }

/* Media query for small screens */ @media (max-width: 768px) { .nav { flex-direction: column; } .main { padding: 1em; } .footer { padding: 0.5em; } }

/* Media query for large screens */ @media (min-width: 1024px) { .nav { flex-direction: row; } .main { padding: 2em; } .footer { padding: 1em; } }

Adding a preprocessor

Let's use a preprocessor like Sass to make our code more efficient. We'll rename our style.css file to style.scss and update it to use Sass syntax:

scss

Verify Open In Editor

/* Import other SCSS files */ @import 'eset'; @import 'variables'; @import 'components/header'; @import 'components/nav'; @import 'components/main'; @import 'components/footer'; @import 'utilities/mixins'; @import 'utilities/text';

/* Global styles */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; }

/* Media query for small screens */ @media (max-width: 768px) { .nav { flex-direction: column; } .main { padding: 1em; } .footer { padding: 0.5em; } }

/* Media query for large screens */ @media (min-width: 1024px) { .nav { flex-direction: row; } .main { padding: 2em; } .footer { padding: 1em; } } We'll also need to update our package.json file to include a script for compiling our Sass code:

json

Verify Open In Editor { "name": "my-css3-project", "version": "1.0.0", "scripts": { "build": "sass css/style.scss css/style.css" } } Now, when we run npm run build, our Sass code will be compiled into CSS.

Let's continue developing our CSS3 project.

Adding a grid system

Let's create a grid system to make our layout more flexible. We'll add a grid.css file: css Verify Open In Editor

/* Grid system */ .grid { display: grid; grid-template-columns: repeat(12, 1fr); grid-gap: 10px; }

.grid-col { grid-column: span 1; }

.grid-col-2 { grid-column: span 2; }

.grid-col-3 { grid-column: span 3; }

.grid-col-4 { grid-column: span 4; }

.grid-col-5 { grid-column: span 5; }

.grid-col-6 { grid-column: span 6; }

.grid-col-7 { grid-column: span 7; }

.grid-col-8 { grid-column: span 8; }

.grid-col-9 { grid-column: span 9; }

.grid-col-10 { grid-column: span 10; }

.grid-col-11 { grid-column: span 11; }

.grid-col-12 { grid-column: span 12; }

We can then use this grid system in our component styles:

css

Verify Open In Editor

/* main.css / .main { @include center-flex(); flex-direction: column; padding: 2em; .grid; / Use the grid system */ }

.main > * { .grid-col-6; /* Use the grid column class */ }

Adding a card component

Let's create a card component to display information in a visually appealing way. We'll add a card.css file: css Verify Open In Editor

/* Card component */ .card { background-color: #fff; border: 1px solid #ddd; border-radius: 10px; padding: 1em; margin-bottom: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); }

.card:hover { box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); }

.card img { width: 100%; height: 150px; object-fit: cover; border-radius: 10px 10px 0 0; }

.card h2 { font-size: 18px; margin-top: 0; }

.card p { font-size: 14px; color: #666; }

We can then use this card component in our HTML:

html

Verify Open In Editor

Image

Card title

Card description

Image

Card title

Card description

Adding a theme switcher

Let's create a theme switcher to allow users to switch between different themes. We'll add a theme-switcher.css file:

css

Verify Open In Editor

/* Theme switcher */ .theme-switcher { position: fixed; top: 10px; right: 10px; z-index: 1000; background-color: #fff; border: 1px solid #ddd; padding: 10px; border-radius: 10px; cursor: pointer; }

.theme-switcher:hover { background-color: #f0f0f0; }

.theme-switcher span { font-size: 14px; color: #666; }

We can then use this theme switcher in our HTML:

html

Verify Open In Editor Edit

Switch theme

We'll also need to add some JavaScript to toggle the theme:

javascript

Verify Open In Editor Edit

const themeSwitcher = document.getElementById('theme-switcher'); themeSwitcher.addEventListener('click', () => { document.body.classList.toggle('dark-theme'); });

And finally, we'll add some CSS to style the dark theme:

css

Verify Open In Editor

/* Dark theme */ .dark-theme { background-color: #333; color: #fff; }

.dark-theme .nav { background-color: #444; }

.dark-theme .main { background-color: #555; }

.dark-theme .footer { background-color: #666; }