Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 34 additions & 2 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,42 @@
<title>Calendar</title>
<link
rel="stylesheet"
href="styles/index.scss"
href="styles/main.scss"
/>
</head>
<body>
<h1>Calendar</h1>
<div class="calendar calendar--start-day-sun calendar--month-length-31">
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
<div class="calendar__day"></div>
</div>
</body>
</html>
3 changes: 0 additions & 3 deletions src/styles/index.scss

This file was deleted.

86 changes: 86 additions & 0 deletions src/styles/main.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
$day-size: 100px;
$border: 1px;
$gap: 1px;
$padding: 10px;
$font-size: 30px;
$bg: #eee;
$hover: #ffbfcb;
$col-width: $day-size;
$container-width: 7 * $col-width + 6 * $gap + 2 * $padding;
Comment on lines +4 to +9

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The width calculation makes total horizontal padding = 2 * $padding (you set $padding: 10px on line 4 and use + 2 * $padding in $container-width on line 9), which yields 20px total horizontal padding. The requirement states the calendar width must be exactly "7 columns + 10px paddings". Change either $padding to 5px (so left+right = 10px) or modify $container-width to add only 10px total (e.g. + 10px instead of + 2 * $padding) so the total horizontal padding equals 10px.

$week-days: (
mon: 1,
tue: 2,
wed: 3,
thu: 4,
fri: 5,
sat: 6,
sun: 7,
Comment on lines +11 to +17

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This violates checklist item #1: "Changing 'month-lengh' and 'start-day' modifier in the code element reflects in changing calendar layout". The $week-days map currently maps mon: 1, ... sun: 7 (lines 11–17), but your HTML uses calendar--start-day-sun as default. Because you calculate margin-left: ($pos - 1) * ($day-size + $gap) for the first day (line 77), the numeric positions must match the visual column order (Sunday should be position 1). Update the map so it follows the visual columns (for example sun: 1, mon: 2, tue: 3, wed: 4, thu: 5, fri: 6, sat: 7) or use a 0-based scheme and adjust the margin formula accordingly so changing .calendar--start-day-* classes moves the first day to the correct column.

);

body {
margin: 0;
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}

.calendar {
display: flex;
flex-wrap: wrap;
gap: $gap;
padding: $padding;
width: $container-width;
box-sizing: border-box;

&__day {
width: $day-size;
height: $day-size;
background: $bg;
border: $border solid #000;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
transition:
transform 0.5s,
background-color 0.5s;

&:hover {
cursor: pointer;
background: $hover;
transform: translateY(-20px);
z-index: 1;
}

&::before {
display: block;
pointer-events: none;
text-align: center;
box-sizing: border-box;
user-select: none;
}
}
}

@for $i from 1 through 31 {
.calendar__day:nth-child(#{$i})::before {
content: '#{$i}';
font-family: Arial, sans-serif;
font-size: $font-size;
}
}

@each $name, $pos in $week-days {
.calendar--start-day-#{$name} {
.calendar__day:nth-child(1) {
margin-left: ($pos - 1) * ($day-size + $gap);
}
}
}

@for $len from 28 through 31 {
.calendar--month-length-#{$len} .calendar__day:nth-child(n + #{$len + 1}) {
display: none;
}
}