<div class="controls">
<label>
<input class="hide-error" type="checkbox">
Hide errors
</label>
<label>
<input class="hide-warning" type="checkbox">
Hide warnings
</label>
<label>
<input class="hide-success" type="checkbox">
Hide success
</label>
</div>
<div class="list">
<div class="card card-warning">
<svg aria-hidden="true">
<use xlink:href="#warning" />
</svg>
<span class="sr-only">Warning</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-error">
<svg aria-hidden="true">
<use xlink:href="#error" />
</svg>
<span class="sr-only">Error</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-success">
<svg aria-hidden="true">
<use xlink:href="#success" />
</svg>
<span class="sr-only">Success</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-warning">
<svg aria-hidden="true">
<use xlink:href="#warning" />
</svg>
<span class="sr-only">Warning</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-error">
<svg aria-hidden="true">
<use xlink:href="#error" />
</svg>
<span class="sr-only">Error</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-success">
<svg aria-hidden="true">
<use xlink:href="#success" />
</svg>
<span class="sr-only">Success</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-success">
<svg aria-hidden="true">
<use xlink:href="#success" />
</svg>
<span class="sr-only">Success</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-success">
<svg aria-hidden="true">
<use xlink:href="#success" />
</svg>
<span class="sr-only">Success</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-warning">
<svg aria-hidden="true">
<use xlink:href="#warning" />
</svg>
<span class="sr-only">Warning</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-error">
<svg aria-hidden="true">
<use xlink:href="#error" />
</svg>
<span class="sr-only">Error</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-warning">
<svg aria-hidden="true">
<use xlink:href="#warning" />
</svg>
<span class="sr-only">Warning</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-error">
<svg aria-hidden="true">
<use xlink:href="#error" />
</svg>
<span class="sr-only">Error</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-success">
<svg aria-hidden="true">
<use xlink:href="#success" />
</svg>
<span class="sr-only">success</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-success">
<svg aria-hidden="true">
<use xlink:href="#success" />
</svg>
<span class="sr-only">Success</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-warning">
<svg aria-hidden="true">
<use xlink:href="#warning" />
</svg>
<span class="sr-only">Warning</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
<div class="card card-error">
<svg aria-hidden="true">
<use xlink:href="#error" />
</svg>
<span class="sr-only">Error</span>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras convallis sodales erat vel accumsan. Nam eget massa nec sem vulputate ullamcorper vel quis justo.</p>
</div>
</div>
<svg width="0" height="0" class="hidden">
<symbol viewBox="0 0 24 24" id="error" fill="none">
<path stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z" />
</symbol>
<symbol fill="none" id="warning" viewBox="0 0 24 24" stroke-width="1.5">
<path stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
</symbol>
<symbol fill="none" id="success" viewBox="0 0 24 24" stroke-width="1.5">
<path stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" d="M9 12.75L11.25 15 15 9.75M21 12c0 1.268-.63 2.39-1.593 3.068a3.745 3.745 0 01-1.043 3.296 3.745 3.745 0 01-3.296 1.043A3.745 3.745 0 0112 21c-1.268 0-2.39-.63-3.068-1.593a3.746 3.746 0 01-3.296-1.043 3.745 3.745 0 01-1.043-3.296A3.745 3.745 0 013 12c0-1.268.63-2.39 1.593-3.068a3.745 3.745 0 011.043-3.296 3.746 3.746 0 013.296-1.043A3.746 3.746 0 0112 3c1.268 0 2.39.63 3.068 1.593a3.746 3.746 0 013.296 1.043 3.746 3.746 0 011.043 3.296A3.745 3.745 0 0121 12z" />
</symbol>
</svg>
@import url("https://fonts.googleapis.com/css2?family=Martian+Mono&display=swap");
@layer reset, theme, layout, cards, demo;
@layer demo {
.list > * {
animation: zoomIn 0.3s linear forwards;
}
:root:has(.hide-error:checked) .card-error {
animation: zoomOut 0.3s linear forwards;
}
:root:has(.hide-success:checked) .card-success {
animation: zoomOut 0.3s linear forwards;
}
:root:has(.hide-warning:checked) .card-warning {
animation: zoomOut 0.3s linear forwards;
}
@keyframes zoomOut {
from {
opacity: 1;
}
50% {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
to {
opacity: 0;
display: none;
}
}
@keyframes zoomIn {
from {
display: none;
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
50% {
opacity: 1;
}
}
}
@layer theme {
:root {
--layout-column-min: 400px;
--layout-gap: 3vmax;
}
}
@layer cards {
.card {
--_bg: var(--bg, grey);
--_color: var(--color, black);
display: flex;
gap: 8px;
color: var(--_color);
background: var(--_bg);
border-radius: 1.8rem;
padding: 30px;
& svg {
flex: 0 0 30px;
width: 1.9rem;
height: 1.9rem;
}
& p {
padding-top: 0.3rem;
}
}
.card-error {
--bg: indianred;
--color: white;
}
.card-success {
--bg: PaleGreen;
--color: darkgreen;
}
.card-warning {
--bg: LemonChiffon;
--color: darkorange;
}
}
@layer layout {
.controls {
display: flex;
gap: 30px;
justify-content: center;
align-items: center;
padding-bottom: 30px;
}
.list {
display: flex;
flex-direction: column;
gap: 1vmax;
max-width: 700px;
margin-inline: auto;
}
}
@layer reset {
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
margin: 0;
padding: 3vmax;
font-family: "Martian Mono", monospace;
color: white;
min-height: 100vh;
background-image: linear-gradient(
153deg in oklch,
oklch(79% 0.31 280) 0%,
45%,
oklch(46% 0.31 322) 131% 131%
);
}
p {
margin: 0 0 1rem 0;
&:last-of-type {
margin: 0;
}
}
.sr-only:not(:focus):not(:active) {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.