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
40 changes: 30 additions & 10 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,16 +1,36 @@
<!DOCTYPE html>
<html>
<head lang="uk">
<meta charset="UTF-8">
<title>My Page</title>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Список покупок</title>

<link rel="stylesheet" type="text/css" href="main.css" />
</head>
<body>
<span class="product-item">
Apple
<span class="amount">4</span>
</span>
</body>
</html>
<div class="container">
<div class="main-content">
<div class="input-group">
<input id="input-item-name" type="text" placeholder="Назва товару">
<button id="add-new-button">Додати</button>
</div>

</div>

<div class="sidebar">
<div class="category">
<h3>Залишилося</h3>
<div id="remaining-items-list"></div>
</div>

<div class="category">
<h3>Куплено</h3>
<div id="bought-items-list"></div>
</div>
</div>
</div>
<div class="badge">
BuyList
<div class="badge-author">Created by:<br>Ivan Sosniuk</div>
</div>

<script src="main.js"></script>
</body>
305 changes: 289 additions & 16 deletions main.css
Original file line number Diff line number Diff line change
@@ -1,17 +1,290 @@
.product-item {
background-color: gray;
display: inline-block;
height: 25px;
padding: 5px;
border-radius: 5px;
}

.amount {
background-color: yellow;
border-radius: 10px;

display: inline-block;
height: 20px;
width: 20px;
text-align: center;
:root {
--bg-color: #f0f2f5;
--card-bg-color: #fff;
--text-color: #333;
--heading-color: #555;
--shadow-color: rgba(0,0,0,0.1);
--border-color: #c6c6c6;

--add-color: #4a8df3;
--remove-color: #f44336;
--increment-color: #4CAF50;
--not-bought-color: #f0f0f0;
--bought-color: #e0e0e0;
--light-text-color: white;

--tag-bg-color: #e0e0e0;
--tag-bought-bg-color: #ddd;
--tag-count-bg: #ff9800;

--badge-color: darkviolet;

--anim-duration: 1s;
}

body {
font-family: sans-serif;
background-color: var(--bg-color);
display: flex;
justify-content: center;
padding: 20px;
}
.container {
display: flex;
gap: 20px;
width: 100%;
max-width: 1200px;
}
.main-content, .sidebar {
padding: 0px 0px;
background-color: var(--card-bg-color);
border-radius: 8px;
box-shadow: 0 2px 4px var(--shadow-color);
}
.main-content {
flex: 2;
}
.sidebar {
flex: 1;
}
.input-group {
padding: 20px 20px;
display: flex;
}
@media (max-width: 500px){
.container{
flex-direction: column;
}
.input-group {
display: flex;
flex-direction: column;
justify-content: center;
}
.item-row {
display: flex !important;
flex-direction: column;
padding-bottom: 20px;
}
.item-row:has(.not-bought) .quantity-display{
margin-right: 0px;
margin-left: 0;
}
}


.input-group input[type="text"] {
width: inherit;
flex-grow: 1;
padding: 10px;
border: 1px solid var(--border-color);
border-radius: 4px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
font-size: 16px;
}
.input-group button {
background-color: var(--add-color);
color: var(--light-text-color);
border: none;
padding: 10px 20px;
border-radius: 4px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
cursor: pointer;
font-size: 18px;
font-weight: bold;
}
.item-row {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-areas: "name quantity-controls action-buttons";
align-items: center;
padding: 10px 10px;
border-top: 1px solid var(--border-color);
}
.item-row:first-of-type {
border-top: none;
}
.item-row:has(.not-bought) .item-name {
text-decoration: line-through;
}
.item-name {
grid-area: name;
font-size: 18px;
}
.quantity-controls {
grid-area: quantity-controls;
display: flex;
margin-right: 15px;
justify-content: center
}
.quantity-controls button {
color: var(--light-text-color);
border: none;
width: 30px; height: 30px;
border-radius: 50px;
cursor: pointer;
font-size: 16px;
margin: 0 5px;
}
.item-row:has(.not-bought) .quantity-controls button {
visibility: hidden;
}

.minus{
background-color: var(--remove-color);
}

.plus {
background-color: var(--increment-color);
}
.quantity-display {
padding: 8px 12px;
border: 1px solid var(--border-color);
border-radius: 4px;
min-width: 30px;
text-align: center;
font-size: 16px;
background-color: #eeeded;
}

.action-buttons {
grid-area: action-buttons;
display: flex;
justify-content: flex-end;
}
.action-buttons button {
padding: 8px 15px;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 14px;
margin-left: 10px;
font-weight: bolder;
color: var(--heading-color);
}
.action-buttons .not-bought {
background-color: var(--not-bought-color);
color: var(--text-color);
}
.action-buttons .bought {
background-color: var(--bought-color);
color: var(--text-color);
}
.action-buttons .remove {
background-color: var(--remove-color);
color: var(--light-text-color);
}
.item-row:has(.not-bought) .remove{
display: none;
}

.sidebar h3 {
margin-top: 0;
margin-bottom: 15px;
color: var(--heading-color);
font-size: 20px;
}
.sidebar .category, h3 {
padding: 10px 10px;
margin-bottom: 20px;
border-bottom: 1px solid var(--border-color);
}
.sidebar .category:last-child {
border-bottom: none;
padding-bottom: 0;
}
.sidebar .item-tag {
display: inline-block;
background-color: var(--tag-bg-color);
padding: 5px 10px;
border-radius: 20px;
margin-right: 8px;
margin-bottom: 8px;
font-size: 14px;
color: var(--text-color);
}
.sidebar .item-tag span {
font-weight: bold;
margin-left: 5px;
background-color: var(--tag-count-bg);
color: var(--light-text-color);
border-radius: 50%;
padding: 2px 7px;
font-size: 12px;
}
.sidebar .item-tag.bought-item {
text-decoration: line-through;
background-color: var(--tag-bought-bg-color);
}

.badge {
position: fixed;
bottom: 0px;
left: 5px;
padding: 5px;
padding-bottom: 0px;
width: fit-content;
background-color: blueviolet;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
font-weight: bold;
color: var(--light-text-color, white);
cursor: pointer;
overflow: hidden;
height: 30px;
transition: height var(--anim-duration) ease, background-color var(--anim-duration) ease;
}

@media print{
.badge{
background-color: white;
border: solid var(--badge-color) 3px;
}
.badge::before{
content: "Ivan Sosniuk\A\A";
color: black;
font-weight: lighter;
white-space: pre;
}
}

.badge-author {
font-size: 12px;
opacity: 0;
transition: opacity 0.3s ease;
text-align: left;
margin-top: 20%;
font-weight: lighter;
}

.badge:hover {
height: 60px;
background-color: blue;
}

.badge:hover .badge-author {
opacity: 1;
}

.tooltip {
position: absolute;
bottom: 120%;
left: 50%;
height: fit-content;
transform: translateX(-50%) scale(0.1);
background-color: var(--badge-color);
color: var(--light-text-color);
padding: 8px 12px;
border-radius: 10px;
white-space: nowrap;
opacity: 0;
pointer-events: none;
transition: all var(--anim-duration) ease;
z-index: 1000;
}

.tooltip.show {
opacity: 1;
transform: translateX(-50%) scale(1);
}
Loading