/
Dashustik
/
Laba_1
Обзор
Документация
Войти
/
Dashustik
/
Laba_1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
Lab_8
css/style.css
765 строк
13 KB
Dashustik
8 лаба псевдоэлементы
30 мар 2026, 00:57
30 мар 2026, 00:57
4b27bf2
Код
Авторство
О чём код?
@import url('https://fonts.googleapis.com/css2?family=Comfortaa:wght@400;700&display=swap'); *, *::before, *::after { box-sizing: border-box; } html, body { min-height: 100%; } .page-shell { min-height: 100vh; display: flex; flex-direction: column; } :root { --page-text: #5a3e4d; --title-color: hsl(345, 70%, 65%); --accent: #ff7fb3; --accent-strong: #d93a7f; --accent-soft: #ffe4ef; --accent-border: #f8c8dc; --focus-ring: rgba(255, 127, 179, 0.22); --selection-bg: #ff8fbd; --selection-text: #ffffff; } ::selection { background-color: var(--selection-bg); color: var(--selection-text); } body { font-family: "Comfortaa", sans-serif; font-size: 16px; font-weight: 600; line-height: 1.6; color: var(--page-text); background-color: #fff7fb; background: linear-gradient(180deg, #fffafa 0%, #fff1f6 100%); margin: 0; } .container { width: min(1200px, 92%); margin: 2rem auto; display: grid; grid-template-columns: repeat(12, 1fr); gap: 1.25rem; } .card, .hero-card { background-color: #ffffff; border: 2px solid #f8c8dc; border-radius: 24px; padding: 1.4rem; box-shadow: 0 10px 24px rgba(248, 200, 220, 0.18); } .hero-card { grid-column: 1 / 13; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 1rem; background-color: #fff0f6; background: linear-gradient(135deg, #fff7fb 0%, #ffe8f2 100%); } .hero-text { max-width: 700px; } .page-title { margin: 0; display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; font-size: clamp(2rem, 4vw, 3rem); color: hsl(349, 74%, 67%); } .hero-description { margin: 0.7rem 0 0; font-size: 1rem; color: #7a5a68; } .badge { background-color: #ff69b4; color: #ffffff; font-size: 0.75rem; padding: 0.35em 0.8em; border-radius: 999px; } .title-icon { width: 70px; height: 70px; object-fit: contain; border: none; } h2, h3, h4 { margin-top: 0; color: var(--title-color); } a { text-decoration: none; font-weight: 700; transition: color 0.2s ease, background-color 0.2s ease, transform 0.2s ease; } a:link { color: hsla(327, 100%, 55%, 0.85); } a:visited { color: #c05b93; } a:hover { color: var(--accent-strong); text-decoration: underline; } a:focus, a:focus-visible { outline: 3px solid #ff9ec3; outline-offset: 4px; border-radius: 10px; } a:active { color: var(--accent-strong); transform: translateY(1px); } img { max-width: 100%; display: block; border: 2px solid #f8c8dc; border-radius: 18px; } .float-img { float: left; width: 90px; height: auto; margin-right: 15px; margin-bottom: 10px; border-radius: 12px; } .intro-card { grid-column: 1 / 4; align-self: start; overflow-y: auto; } .history-card { grid-column: 4 / 8; align-self: start; overflow-y: auto; } .facts-card { grid-column: 8 / 13; align-self: start; overflow-y: auto; } .intro-card, .history-card, .facts-card { max-height: 500px; } .intro-card::-webkit-scrollbar, .history-card::-webkit-scrollbar, .facts-card::-webkit-scrollbar { width: 10px; } .intro-card::-webkit-scrollbar-track, .history-card::-webkit-scrollbar-track, .facts-card::-webkit-scrollbar-track { background: #ffeaf3; border-radius: 10px; } .intro-card::-webkit-scrollbar-thumb, .history-card::-webkit-scrollbar-thumb, .facts-card::-webkit-scrollbar-thumb { background: #ff8fbd; border-radius: 10px; border: 2px solid #ffeaf3; } .intro-card::-webkit-scrollbar-thumb:hover, .history-card::-webkit-scrollbar-thumb:hover, .facts-card::-webkit-scrollbar-thumb:hover { background: #ff6faa; } .photo-card { grid-column: 1 / 13; display: flex; flex-direction: column; gap: 1rem; } .main-photo { width: 100%; object-fit: cover; display: block; } .surprise-card { grid-column: 1 / 13; position: relative; min-height: 220px; overflow: hidden; background-color: #fff7fb; } .loader-box { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background-color: rgba(255, 247, 251, 0.96); animation: loaderFadeOut 1s ease 3s forwards; } .loader { width: 56px; height: 56px; border: 6px solid #ffd8e8; border-top-color: #d93a7f; border-radius: 50%; animation: spin 0.9s linear infinite; /*за 0.9 секунд делает полный оборот с постоянной скоростью, бесконечно повторяясь*/ } .surprise-card__content { opacity: 0; /*прозрачность элемента, элемент полностью прозрачный*/ transform: translateY(12px); /*изначально сдинут чуть вниз, а потом выплывает на свое место*/ animation: contentShow 0.8s ease 3.2s forwards; /*длительность анимации, задержка перед стартом анимации*/ } @keyframes spin { to { transform: rotate(360deg); /*к концу анимации элемент должен повернуться на 360*/ } } @keyframes loaderFadeOut { to { opacity: 0; visibility: hidden;/*элемент становится скрытым*/ } } @keyframes contentShow { to { opacity: 1; transform: translateY(0); /*раньше было сдвинуто на 12px, а сойчас на привычном месте*/ } } .recipe-wrapper { grid-column: 1 / 13; display: grid; grid-template-columns: 1fr 1fr 2fr; grid-template-areas: "dough cream steps" "tips tips steps"; gap: 1.25rem; background: #fcafcb; border: 1px solid #d96a95; } .recipe-wrapper .card { margin: 0; height: 100%; } .dough-card { grid-area: dough; } .cream-card { grid-area: cream; } .tips-card { grid-area: tips; } .steps-card { grid-area: steps; } .recipe-link { margin-top: 1rem; font-size: 1.1rem; } /*ЗДЕСЬ*/ .recipe-link a::after { content: " ↗"; } .intro-card p::first-line, .pseudo-demo-text::first-line { color: #8a4f68; font-weight: 700; } .history-card p:first-of-type::first-letter, .pseudo-demo-text::first-letter { font-size: 2.2rem; font-weight: 700; color: var(--accent-strong); } .facts-list li::marker, .steps-list li::marker, .pseudo-list li::marker { color: var(--accent-strong); font-weight: 700; } .recipe-card ul, .facts-list, .steps-list { margin: 0; padding-left: 1.2rem; } .recipe-card { background-color: rgb(255, 255, 255); } .steps-list li, .facts-list li, .recipe-card li { margin-bottom: 0.5rem; } p { margin-top: 0; } .site-header { background-color: #fffafc; background: rgba(255, 250, 252, 0.92); border-bottom: 1px solid #f8c8dc; } .site-header__inner, .site-footer__inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 0; } .site-logo { font-size: 1.3rem; font-weight: 700; } .site-nav, .footer-links { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; } .site-footer { margin-top: auto; border-top: 1px solid #f8c8dc; background-color: #fffafc; background: rgba(255, 250, 252, 0.95); } .footer-text { margin-bottom: 0; } /*---------------------------------------------------*/ .form-page { align-items: start; } .form-intro-card, .form-card { grid-column: 3 / 11; } .registration-form { display: grid; gap: 1.5rem; } legend { padding: 0 0.5rem; /*отступы сверху и снизу, слева и справа*/ font-weight: 700; color: hsl(345, 70%, 65%); } .form-row { display: grid; gap: 0.55rem; margin-bottom: 1rem; /*внешний отступ снизу у каждой формы*/ } .form-row:last-child { margin-bottom: 0; /*убирается отступ у последней дочерней строки*/ } label, .form-label { font-weight: 700; color: hsl(345, 70%, 65%); } input { width: 100%; padding: 0.85rem 1rem; border: 2px solid #f3c5d7; border-radius: 14px; background-color: #fffdfd; color: var(--page-text); font: inherit; transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease; } /* нечётные и чётные */ fieldset .form-row:nth-of-type(odd) { background-color: #fdfff0; border: 1px; border-radius: 14px; } fieldset .form-row:nth-of-type(even) { background-color: #f2f0ff; border: 1px; border-radius: 14px; } input:enabled { border-color: #f3c5d7; } input::placeholder { color: #b78a9f; font-size: 0.95rem; letter-spacing: 0.02em; } input:focus, input:focus-visible { outline: none; border-color: var(--accent); box-shadow: 0 0 0 4px var(--focus-ring); /*смещение по горизонтали, по вертикали, размытие, растяжение тени*/ } input:required { background-image: linear-gradient( 0deg, rgba(255, 237, 245, 0.45), rgba(255, 237, 245, 0.45) ); } input:disabled { background-color: #f6eef2; color: #9e7f8c; cursor: not-allowed; } .inline-options, .checkbox-grid { display: grid; gap: 0.75rem; } .inline-options label, .checkbox-grid label { display: flex; align-items: center; gap: 0.55rem; color: #5a3e4d; } .inline-options input, .checkbox-grid input { width: auto; accent-color: var(--accent-strong); } .inline-options span, .checkbox-grid span { transition: color 0.2s ease, text-decoration-color 0.2s ease, transform 0.2s ease; } .inline-options input:checked + span, .checkbox-grid input:checked + span { color: var(--accent-strong); font-weight: 700; text-decoration: line-through; text-decoration-thickness: 2px; } .required-mark { color: #ff4f9a; } .form-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; } button { border: none; border-radius: 14px; padding: 0.9rem 1.2rem; font: inherit; /*настройки шрифта, как у окружающего текста сайта*/ font-weight: 700; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease; } button:enabled:hover { transform: translateY(-1px); box-shadow: 0 10px 20px rgba(255, 127, 179, 0.18); } button:enabled:active { transform: translateY(1px); } button:focus, button:focus-visible { outline: 3px solid #ff9ec3; outline-offset: 4px; } button:disabled { background-color: #f2e5eb; color: #a08491; cursor: not-allowed; } .button-primary { background-color: #ff7fb3; color: #ffffff; } .button-secondary { background-color: #ffe4ef; color: #8a4f68; } .button-disabled { background-color: #f2e5eb; color: #a08491; cursor: not-allowed; } .form-intro-card, .form-card { grid-column: 3 / 11; box-shadow: 0 16px 34px rgba(238, 67, 135, 0.262); } .form-intro-card h1 { text-shadow: 2px 2px 10px rgba(76, 5, 33, 0.618); } fieldset { margin: 0; padding: 1.4rem; border: 2px solid #f8c8dc; border-radius: 20px; box-shadow: 0 8px 18px rgba(248, 200, 220, 0.16); } /*---------------------------------------*/ .demo-page { align-items: start; } .demo-intro-card { grid-column: 1 / 13; } .demo-card { grid-column: span 4; background-color: #ffffff; } .demo-box { width: 100%; height: 180px; border-radius: 20px; border: 2px solid #f8c8dc; } .gradient-linear { background-color: #ffdbe9; background-image: linear-gradient(135deg, #ffdbe9 0%, #ff9fc5 50%, #d93a7f 100%); } .gradient-radial { background-color: #ffe7f1; background-image: radial-gradient(circle at center, #ffffff 10%, #ffbad6 45%, #ff7fb3 100%); } .gradient-conic { background-color: #fff0f6; background-image: conic-gradient(from 45deg, #ffb8d5, #ff7fb3, #d93a7f, #ffb8d5); } .transform-stage { padding: 2rem 0; display: flex; justify-content: center; align-items: center; } .transform-stage--perspective { perspective: 700px; } .demo-shape { width: 110px; height: 110px; border-radius: 22px; background: linear-gradient(135deg, #ffb8d5 0%, #ff7fb3 100%); color: #ffffff; display: flex; align-items: center; justify-content: center; font-weight: 700; box-shadow: 0 12px 24px rgba(255, 127, 179, 0.22); } .demo-rotate { transform: rotate(-12deg); } .demo-move { transform: translateX(25px) scale(1.15); } .demo-rotate-x { transform: rotateX(55deg); } .demo-rotate-y { transform: rotateY(55deg); } .demo-button { background-color: #ff7fb3; color: #ffffff; padding: 1rem 1.4rem; border-radius: 16px; transition: background-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease; } .demo-button:hover { background-color: #d93a7f; transform: translateY(-4px) scale(1.03); box-shadow: 0 12px 24px rgba(217, 58, 127, 0.25); } .demo-hover-card { padding: 1.3rem; border-radius: 18px; border: 2px solid #f8c8dc; background-color: #fff6fa; transition: transform 0.35s ease, box-shadow 0.35s ease, background-color 0.35s ease; } .demo-hover-card:hover { transform: translateY(-8px); box-shadow: 0 16px 26px rgba(255, 127, 179, 0.2); background-color: #ffeaf3; } @media (max-width: 900px) { .container { grid-template-columns: repeat(6, 1fr); } .hero-card, .tips-card { grid-column: 1 / 7; } .intro-card, .facts-card, .dough-card, .cream-card { grid-column: 1 / 4; } .history-card, .photo-card, .steps-card { grid-column: 4 / 7; } } @media (max-width: 640px) { .container { grid-template-columns: 1fr; } .hero-card, .intro-card, .history-card, .photo-card, .facts-card, .dough-card, .cream-card, .steps-card, .tips-card { grid-column: auto; } .hero-card { grid-template-columns: 1fr; } .title-icon { justify-self: start; } .float-img { float: none; margin-right: 0; margin-bottom: 1rem; width: 120px; } }