SCSS: The Heart of Styling

SCSS, or Sassy CSS, offers a more dynamic approach to styling with variables, mixins, and nested rules, making our task app not just functional but visually cohesive and appealing.

// Define Variables for Theme Consistency
$primary-color: #007BFF; // Primary button color
$hover-color: #0056b3;   // Button hover state color
$task-bg-color: #f4f4f4; // Background color for tasks
$font-color: white;      // Color for text in buttons
$input-width: 70%;       // Width of the input field

// Mixin for Hover Effects
@mixin hover-effect($color) {
    &:hover {
        background-color: $color;
    }
}

// Input and Button Styles
.input-button-container {
    input[type="text"] {
        padding: 10px;
        font-size: 16px;
        width: $input-width;
        margin-right: 10px;

        @media (max-width: 600px) {
            width: 100%;
            margin: 10px 0;
        }
    }

    button {
        padding: 10px 20px;
        background-color: $primary-color;
        color: $font-color;
        border: none;
        cursor: pointer;
        font-size: 16px;

        @include hover-effect($hover-color);
    }
}

// Task List Styles
.task-list {
    list-style: none;
    padding: 0;

    .task {
        background-color: $task-bg-color;
        margin-bottom: 10px;
        padding: 20px;
        border-radius: 5px;
        box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    }
}

This snippet introduces responsiveness and interactivity through mixins and media queries.

Pure CSS provides the backbone for our application’s styling.

.task-input {
    padding: 10px;
    font-size: 16px;
    width: 70%;
    margin-right: 10px;
}

.task-button {
    padding: 10px 20px;
    background-color: #007BFF;
    color: white;
    border: none;
    cursor: pointer;
    font-size: 16px;
}

.task-button:hover {
    background-color: #0056b3;
}

.task-list {
    list-style: none;
    padding: 0;
}

.task {
    background-color: #f4f4f4;
    margin-bottom: 10px;
    padding: 20px;
    border-radius: 5px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

@media (max-width: 600px) {
    .task-input, .task-button {
        width: 100%;
        margin: 10px 0;
    }
}

Explanation:

  1. Task Input and Button: We’ve increased the padding and font size to enhance user experience, making the elements more clickable and readable. The blue color scheme provides a calming effect and high contrast for readability.

  2. Task List: By decluttering the interface, removing default list styles and padding, we’ve placed the focus squarely on the content. Each task stands out against the app’s background, with visual cues like margins and shadows enhancing the user interface.

  3. Responsive Design: A media query ensures that on smaller screens, inputs and buttons adapt to full width, maintaining usability and accessibility across devices.