mobile layout work

This commit is contained in:
bronku 2026-06-09 19:02:42 +02:00
parent 9ff9e59a8c
commit 94bc964e34
11 changed files with 348 additions and 203 deletions

View file

@ -19,6 +19,12 @@
--grid-cols: 3;
}
@media (max-width: 1024px) {
:root {
--grid-cols: 2;
}
}
@media (max-width: 768px) {
:root {
--grid-cols: 1;
@ -27,12 +33,14 @@
body {
background-color: var(--surface);
font-family: 'Plus Jakarta Sans', sans-serif;
font-family: "Plus Jakarta Sans", sans-serif;
box-sizing: border-box;
}
h1, h2, h3, h4 {
h1,
h2,
h3,
h4 {
margin: 0;
font-family: serif;
color: var(--on-background);
@ -53,6 +61,22 @@ h2 {
font-size: 3.5rem;
}
@media (max-width: 768px) {
h1 {
font-size: 2.5rem;
line-height: 2.5rem;
}
h2 {
font-size: 2rem;
line-height: 2rem;
}
h3 {
font-size: 1.25rem;
}
}
h3 {
font-size: 1.5rem;
}
@ -63,7 +87,6 @@ h4 {
h5 {
font-size: 0.8rem;
}
p {
@ -71,15 +94,26 @@ p {
line-height: 1.5rem;
}
body > nav, body > footer, body > main > * {
body > nav,
body > footer,
body > main > * {
padding: 8rem 2rem;
& > div:only-child, &:not(:has(>div:only-child)) {
& > div:only-child,
&:not(:has(> div:only-child)) {
max-width: var(--max-content-width);
margin: 0 auto;
}
}
@media (max-width: 768px) {
body > nav,
body > footer,
body > main > * {
padding: 4rem 1rem;
}
}
body > nav {
padding: 1rem;
}
@ -98,4 +132,3 @@ ul {
img {
color: transparent;
}

View file

@ -12,8 +12,10 @@
transition-duration: 0.2s;
&:hover {
transform: scale(1.1);
@media (hover: hover) {
&:hover {
transform: scale(1.1);
}
}
}
@ -78,15 +80,17 @@
transform: translateY(0);
transition: transform 0.2s;
&:hover {
transform: translateY(-10px);
@media (hover: hover) {
&:hover {
transform: translateY(-10px);
& img {
scale: 1.1;
}
& img {
scale: 1.1;
}
& svg {
margin-left: 10px;
& svg {
margin-left: 10px;
}
}
}
@ -125,6 +129,19 @@
gap: 1rem;
justify-content: center;
padding: 3rem;
flex-wrap: wrap;
@media (max-width: 768px) {
padding: 1.5rem 0;
gap: 0.75rem;
justify-content: center;
& > a {
font-size: 0.9rem;
white-space: nowrap;
padding: 0.4rem 1rem;
}
}
}
}

View file

@ -107,7 +107,7 @@
& > h2 {
align-self: center;
justify-self: center;
grid-column: 1/ span 3;
grid-column: 1 / span 3;
}
@media (max-width: 768px) {
@ -174,8 +174,6 @@
width: 100%;
border-radius: var(--border-radius);
position: relative;
}
& div:first-child > img {

View file

@ -21,7 +21,11 @@
& > div {
position: absolute;
bottom: 0;
background-image: linear-gradient(to right, var(--surface), transparent);
background-image: linear-gradient(
to right,
var(--surface),
transparent
);
width: 100%;
height: 100%;
z-index: 100;
@ -37,6 +41,10 @@
gap: 1.5rem;
align-items: flex-start;
@media (max-width: 768px) {
padding: 4rem 1rem;
}
& > h1 {
line-height: unset;
}
@ -74,7 +82,6 @@
display: grid;
grid-template-columns: repeat(var(--grid-cols), 1fr);
width: 100%;
gap: 2rem;
@ -119,7 +126,7 @@
width: 100%;
& > header {
grid-column: 1/ -1;
grid-column: 1/ -1;
display: flex;
flex-direction: column;
justify-content: center;
@ -166,6 +173,5 @@
text-decoration: none;
font-size: 1.25rem;
}
}
}

View file

@ -16,18 +16,31 @@ body > nav {
width: 20rem;
}
@media (max-width: 1024px) {
& img {
width: 14rem;
}
}
@media (max-width: 768px) {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 1rem;
gap: 0.5rem;
& img {
width: 12rem;
}
& > .btn {
grid-column: 2;
grid-row: 1;
padding: 0.5rem 1rem;
font-size: 0.875rem;
}
}
& > :last-child {
justify-self: end
justify-self: end;
}
& > div {
@ -35,93 +48,99 @@ body > nav {
align-items: center;
gap: 2rem;
@media (max-width: 1024px) {
gap: 1rem;
& > a {
font-size: 1rem;
}
}
@media (max-width: 768px) {
display: flex;
align-items: center;
justify-content: center;
grid-row: 2;
grid-column: 1/ span 2;
}
grid-column: 1 / span 2;
gap: 0.75rem;
flex-wrap: wrap;
& > a {
font-size: 1.25rem;
font-weight: bold;
text-decoration: none;
color: var(--on-background);
& > a {
font-size: 1.25rem;
font-weight: bold;
text-decoration: none;
color: var(--on-background);
&[href] {
font-weight: 200;
transition: color 0.2s;
&[href] {
font-weight: 200;
transition: color 0.2s;
&:hover {
color: var(--primary);
&:hover {
color: var(--primary);
}
}
@media (max-width: 768px) {
font-size: 0.875rem;
white-space: nowrap;
}
}
/* The main selected link doesn't have a href attribute, so we can use that for styles */
&:not([href]) {
padding-bottom: 8px;
color: var(--primary);
border-bottom: 2px solid var(--primary);
}
}
}
}
footer {
display: grid;
grid-template-columns: 3fr 2fr 2fr;
gap: 1rem;
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
& > :first-child {
display: flex;
flex-direction: column;
justify-content: space-between;
& p {
font-size: 0.875rem;
}
& > :last-child {
font-size: 0.75rem;
font-weight: lighter;
}
}
& > :nth-child(2) a {
align-items: flex-start;
flex-direction: column;
}
& a {
font-size: 0.875rem;
display: flex;
align-items: center;
flex-direction: row;
justify-content: flex-start;
margin: 1rem 0;
text-decoration: none;
color: var(--on-background);
& > div {
display: flex;
align-items: center;
justify-content: center;
}
}
& h4 {
color: var(--primary);
}
& svg {
margin-right: 0.5rem;
}
}
}
footer {
display: grid;
grid-template-columns: 3fr 2fr 2fr;
gap: 1rem;
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
& > :first-child {
display: flex;
flex-direction: column;
justify-content: space-between;
& p {
font-size: 0.875rem;
}
& > :last-child {
font-size: 0.75rem;
font-weight: lighter;
}
}
& > :nth-child(2) a {
align-items: flex-start;
flex-direction: column;
}
& a {
font-size: 0.875rem;
display: flex;
align-items: center;
flex-direction: row;
justify-content: flex-start;
margin: 1rem 0;
text-decoration: none;
color: var(--on-background);
& > div {
display: flex;
align-items: center;
justify-content: center;
}
}
& h4 {
color: var(--primary);
}
& svg {
margin-right: 0.5rem;
}
}

120
css/normalize.css vendored
View file

@ -9,8 +9,8 @@
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
@ -21,7 +21,7 @@ html {
*/
body {
margin: 0;
margin: 0;
}
/**
@ -29,7 +29,7 @@ body {
*/
main {
display: block;
display: block;
}
/**
@ -38,8 +38,8 @@ main {
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
@ -51,9 +51,9 @@ h1 {
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
@ -62,8 +62,8 @@ hr {
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
@ -74,7 +74,7 @@ pre {
*/
a {
background-color: transparent;
background-color: transparent;
}
/**
@ -83,9 +83,9 @@ a {
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
@ -94,7 +94,7 @@ abbr[title] {
b,
strong {
font-weight: bolder;
font-weight: bolder;
}
/**
@ -105,8 +105,8 @@ strong {
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
@ -114,7 +114,7 @@ samp {
*/
small {
font-size: 80%;
font-size: 80%;
}
/**
@ -124,18 +124,18 @@ small {
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
bottom: -0.25em;
}
sup {
top: -0.5em;
top: -0.5em;
}
/* Embedded content
@ -146,7 +146,7 @@ sup {
*/
img {
border-style: none;
border-style: none;
}
/* Forms
@ -162,10 +162,10 @@ input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
@ -174,8 +174,9 @@ textarea {
*/
button,
input { /* 1 */
overflow: visible;
input {
/* 1 */
overflow: visible;
}
/**
@ -184,8 +185,9 @@ input { /* 1 */
*/
button,
select { /* 1 */
text-transform: none;
select {
/* 1 */
text-transform: none;
}
/**
@ -196,7 +198,7 @@ button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
-webkit-appearance: button;
}
/**
@ -207,8 +209,8 @@ button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
border-style: none;
padding: 0;
}
/**
@ -219,7 +221,7 @@ button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
outline: 1px dotted ButtonText;
}
/**
@ -227,7 +229,7 @@ button:-moz-focusring,
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
padding: 0.35em 0.75em 0.625em;
}
/**
@ -238,12 +240,12 @@ fieldset {
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
@ -251,7 +253,7 @@ legend {
*/
progress {
vertical-align: baseline;
vertical-align: baseline;
}
/**
@ -259,7 +261,7 @@ progress {
*/
textarea {
overflow: auto;
overflow: auto;
}
/**
@ -269,8 +271,8 @@ textarea {
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
@ -279,7 +281,7 @@ textarea {
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
height: auto;
}
/**
@ -288,8 +290,8 @@ textarea {
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
@ -297,7 +299,7 @@ textarea {
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
-webkit-appearance: none;
}
/**
@ -306,8 +308,8 @@ textarea {
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
@ -318,7 +320,7 @@ textarea {
*/
details {
display: block;
display: block;
}
/*
@ -326,7 +328,7 @@ details {
*/
summary {
display: list-item;
display: list-item;
}
/* Misc
@ -337,7 +339,7 @@ summary {
*/
template {
display: none;
display: none;
}
/**
@ -345,5 +347,5 @@ template {
*/
[hidden] {
display: none;
display: none;
}

View file

@ -4,6 +4,15 @@
grid-auto-flow: dense;
gap: 1.5rem;
@media (max-width: 1024px) {
grid-template-columns: repeat(2, 1fr);
}
@media (max-width: 480px) {
grid-template-columns: 1fr;
gap: 1rem;
}
& > * {
aspect-ratio: 1/1;
overflow: hidden;
@ -78,8 +87,10 @@
border-radius: 50%;
transition: background 0.2s;
&:hover {
background: rgba(0, 0, 0, 0.8);
@media (hover: hover) {
&:hover {
background: rgba(0, 0, 0, 0.8);
}
}
& svg {
@ -100,4 +111,29 @@
& #lb-next {
right: 1.5rem;
}
@media (max-width: 480px) {
& > button {
width: 2.5rem;
height: 2.5rem;
& svg {
width: 1.25rem;
height: 1.25rem;
}
}
& #lb-close {
top: 0.75rem;
right: 0.75rem;
}
& #lb-prev {
left: 0.75rem;
}
& #lb-next {
right: 0.75rem;
}
}
}

View file

@ -32,9 +32,9 @@
& > p {
grid-row: 2;
grid-column: 1/span 2;
grid-column: 1 / span 2;
color: var(--on-surface);
font-size: 0.875em;
}
}
}
}

View file

@ -41,7 +41,7 @@
gap: 1rem;
@media (max-width: 786px) {
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
@ -84,4 +84,4 @@
}
}
}
}
}

View file

@ -5,20 +5,16 @@
#rodzaje-tortow {
display: grid;
grid-template-columns: repeat(4, 1fr);
@media (max-width: 786px) {
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
gap: 2rem;
& > div {
}
}
#cennik-tortow {
display: grid;
grid-template-columns: 2fr 1fr;
@media (max-width: 786px) {
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
gap: 2rem;
@ -31,7 +27,6 @@
& > span:last-child {
font-weight: bold;
color: var(--primary);
}
&:not(:last-child) {
@ -44,7 +39,8 @@
grid-template-columns: auto 1fr;
grid-template-rows: auto 1fr;
& > h3, & > svg {
& > h3,
& > svg {
padding: 1rem;
}
@ -54,7 +50,6 @@
place-self: center;
}
& > ul {
overflow: hidden;
border: 1px solid var(--surface-container-highest);
@ -67,13 +62,14 @@
&:first-child {
font-weight: bold;
background-color: rgb(from var(--secondary-container) r g b / 30%);
background-color: rgb(
from var(--secondary-container) r g b / 30%
);
& > span:last-child {
color: black;
}
}
}
}
}
@ -81,7 +77,6 @@
& > div:last-child > ul > li {
padding: 0.75rem 0;
}
}
#menu-smakow {
@ -124,8 +119,6 @@
padding-top: 0.25rem;
color: var(--on-surface-variant);
}
}
}
@ -163,7 +156,7 @@
gap: 2rem;
}
@media (max-width: 786px) {
@media (max-width: 768px) {
grid-template-columns: 1fr;
& > div {
grid-template-columns: 1fr;
@ -171,7 +164,8 @@
}
& h4 {
font-family: 'Plus Jakarta Sans', sans-serif; /* Modern font for titles */
font-family:
"Plus Jakarta Sans", sans-serif; /* Modern font for titles */
font-weight: 700;
margin-bottom: 0.5rem;
letter-spacing: 1px;
@ -184,5 +178,4 @@
opacity: 0.8;
}
}
}

View file

@ -1,12 +1,12 @@
(function () {
var grid = document.getElementById('portfolio-grid');
var grid = document.getElementById("portfolio-grid");
if (!grid) return;
var items = Array.from(grid.children);
if (!items.length) return;
var lb = document.createElement('div');
lb.id = 'lightbox';
var lb = document.createElement("div");
lb.id = "lightbox";
lb.innerHTML =
'<button id="lb-close" aria-label="Zamknij"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button>' +
'<button id="lb-prev" aria-label="Poprzednie"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg></button>' +
@ -14,21 +14,21 @@
'<button id="lb-next" aria-label="Następne"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg></button>';
document.body.appendChild(lb);
var lbImg = lb.querySelector('img');
var lbImg = lb.querySelector("img");
var current = -1;
function open(idx) {
current = idx;
var img = items[current].querySelector('img');
lbImg.removeAttribute('src');
lbImg.alt = '';
lb.classList.add('open');
var img = items[current].querySelector("img");
lbImg.removeAttribute("src");
lbImg.alt = "";
lb.classList.add("open");
lbImg.src = img.src;
lbImg.alt = img.alt;
}
function close() {
lb.classList.remove('open');
lb.classList.remove("open");
current = -1;
}
@ -43,21 +43,62 @@
}
items.forEach(function (item, i) {
item.addEventListener('click', function () { open(i); });
item.addEventListener("click", function () {
open(i);
});
});
lb.querySelector('#lb-close').addEventListener('click', close);
lb.querySelector('#lb-prev').addEventListener('click', function (e) { e.stopPropagation(); prev(); });
lb.querySelector('#lb-next').addEventListener('click', function (e) { e.stopPropagation(); next(); });
document.addEventListener('keydown', function (e) {
if (!lb.classList.contains('open')) return;
if (e.key === 'Escape') { close(); e.preventDefault(); }
if (e.key === 'ArrowLeft') { prev(); e.preventDefault(); }
if (e.key === 'ArrowRight') { next(); e.preventDefault(); }
lb.querySelector("#lb-close").addEventListener("click", close);
lb.querySelector("#lb-prev").addEventListener("click", function (e) {
e.stopPropagation();
prev();
});
lb.querySelector("#lb-next").addEventListener("click", function (e) {
e.stopPropagation();
next();
});
lb.addEventListener('click', function (e) {
document.addEventListener("keydown", function (e) {
if (!lb.classList.contains("open")) return;
if (e.key === "Escape") {
close();
e.preventDefault();
}
if (e.key === "ArrowLeft") {
prev();
e.preventDefault();
}
if (e.key === "ArrowRight") {
next();
e.preventDefault();
}
});
lb.addEventListener("click", function (e) {
if (e.target === lb) close();
});
var touchStartX = 0;
var touchStartY = 0;
lb.addEventListener(
"touchstart",
function (e) {
touchStartX = e.changedTouches[0].screenX;
touchStartY = e.changedTouches[0].screenY;
},
{ passive: true },
);
lb.addEventListener(
"touchend",
function (e) {
var dx = e.changedTouches[0].screenX - touchStartX;
var dy = e.changedTouches[0].screenY - touchStartY;
if (Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > 50) {
if (dx < 0) next();
else prev();
}
},
{ passive: true },
);
})();