<div class="widget">
<h3 class="widget__title">
Excepteur
</h3>
<p class="widget__text">
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
</p>
<a class="widget__link" href="#">
Read more
</a>
</div>
<button type="button" class="change-theme-control">Поменять тему</button>
:root {
--color-1-darkest: #f7cd22;
--color-1-darker: #f9d958;
--color-1-dark: #fbe58f;
--color-1: #fdf2c5;
--color-1-light: #fffefb;
--color-2-darkest: #cebb2b;
--color-2-darker: #dccc55;
--color-2-dark: #e5da84;
--color-2: #efe8b2;
--color-2-light: #f9f6e1;
--color-3-darkest: #788846;
--color-3-darker: #97ab5c;
--color-3-dark: #afbe81;
--color-3: #c6d1a6;
--color-3-light: #dee4cb;
--color-3-lighter: #f5f7f0;
--color-4-darkest: #34654c;
--color-4-darker: #478a68;
--color-4-dark: #5dac84;
--color-4: #82bfa0;
--color-4-light: #a7d2bc;
--color-4-lighter: #cce5d8;
--color-4-lightest: #f1f8f5;
--color-5-darkest: #1b1814;
--color-5-darker: #3a352d;
--color-5-dark: #5a5245;
--color-5: #7a6f5d;
--color-5-light: #988b78;
--color-5-lighter: #b0a797;
--color-5-lightest: #c8c2b7;
--body-bg: var(--color-3-lighter);
--card-bg: var(--color-1-light);
--border: var(--color-3);
--shadow: rgba(0,0,0,.1);
--title: var(--color-4-darker);
--text: #333;
--link: var(--color-4-darker);
--link-hover: var(--color-4);
--button-bg: var(--color-3-light);
}
[data-theme="red"] {
--color-1-darkest: hsl(48, 93.3%, 61.2%);
--color-1-darker: hsl(48, 93.3%, 70.2%);
--color-1-dark: hsl(48, 93.3%, 79.2%);
--color-1: hsl(48, 93.3%, 88.2%);
--color-1-light: hsl(48, 93.3%, 97.2%);
--color-2-darkest: hsl(0, 80%, 48%);
--color-2-darker: hsl(0, 80%, 57%);
--color-2-dark: hsl(0, 80%, 66%);
--color-2: hsl(0, 80%, 75%);
--color-2-light: hsl(0, 80%, 84%);
--color-2-lighter: hsl(0, 80%, 93%);
--color-3-darkest: hsl(340, 70%, 50%);
--color-3-darker: hsl(340, 70%, 59%);
--color-3-dark: hsl(340, 70%, 68%);
--color-3: hsl(340, 70%, 77%);
--color-3-light: hsl(340, 70%, 86%);
--color-3-lighter: hsl(340, 70%, 95%);
--color-4-darkest: hsl(330, 45%, 43%);
--color-4-darker: hsl(330, 45%, 52%);
--color-4-dark: hsl(330, 45%, 61%);
--color-4: hsl(330, 45%, 70%);
--color-4-light: hsl(330, 45%, 79%);
--color-4-lighter: hsl(330, 45%, 88%);
--color-4-lightest: hsl(330, 45%, 97%);
--color-5-darkest: hsl(37, 13.5%, 15.2%);
--color-5-darker: hsl(37, 13.5%, 24.2%);
--color-5-dark: hsl(37, 13.5%, 33.2%);
--color-5: hsl(37, 13.5%, 42.2%);
--color-5-light: hsl(37, 13.5%, 51.2%);
--color-5-lighter: hsl(37, 13.5%, 60.2%);
--color-5-lightest: hsl(37, 13.5%, 69.2%);
--border: var(--color-3-light);
}
[data-theme="blue"] {
--color-1-darkest: hsl(48, 93.3%, 61.2%);
--color-1-darker: hsl(48, 93.3%, 70.2%);
--color-1-dark: hsl(48, 93.3%, 79.2%);
--color-1: hsl(48, 93.3%, 88.2%);
--color-1-light: hsl(48, 93.3%, 97.2%);
--color-2-darkest: hsl(180, 50%, 48%);
--color-2-darker: hsl(180, 50%, 57%);
--color-2-dark: hsl(180, 50%, 66%);
--color-2: hsl(180, 50%, 75%);
--color-2-light: hsl(180, 50%, 84%);
--color-2-lighter: hsl(180, 50%, 93%);
--color-3-darkest: hsl(200, 60%, 50%);
--color-3-darker: hsl(200, 60%, 59%);
--color-3-dark: hsl(200, 60%, 68%);
--color-3: hsl(200, 60%, 77%);
--color-3-light: hsl(200, 60%, 86%);
--color-3-lighter: hsl(200, 60%, 95%);
--color-4-darkest: hsl(210, 50%, 38%);
--color-4-darker: hsl(210, 50%, 47%);
--color-4-dark: hsl(210, 50%, 56%);
--color-4: hsl(210, 50%, 65%);
--color-4-light: hsl(210, 50%, 74%);
--color-4-lighter: hsl(210, 50%, 83%);
--color-4-lightest: hsl(210, 50%, 92%);
--color-5-darkest: hsl(37, 13.5%, 15.2%);
--color-5-darker: hsl(37, 13.5%, 24.2%);
--color-5-dark: hsl(37, 13.5%, 33.2%);
--color-5: hsl(37, 13.5%, 42.2%);
--color-5-light: hsl(37, 13.5%, 51.2%);
--color-5-lighter: hsl(37, 13.5%, 60.2%);
--color-5-lightest: hsl(37, 13.5%, 69.2%);
}
BODY {
background: var(--body-bg);
}
.widget {
width: 250px;
padding: 1rem;
background: var(--card-bg);
border: 1px solid var(--border);
border-radius: 8px;
box-shadow: 0 2px 4px var(--shadow);
color: var(--text);
}
.widget__title {
margin: 0 0 .5em;
padding-bottom: .25em;
border-bottom: 5px solid var(--title-border);
font-size: 1.75rem;
font-family: Georgia, serif;
font-weight: normal;
color: var(--title);
&::after {
content: '';
display: block;
width: 100%;
height: .75rem;
margin-top: 1rem;
background: var(--body-bg);
border: 1px solid var(--border);
border-radius: 4px;
box-shadow: 0 2px 4px var(--shadow) inset;
}
}
.widget__link {
color: var(--link);
&:hover {
text-decoration: none;
color: var(--link-hover);
}
}
.change-theme-control {
position: absolute;
top: 2rem;
right: 2rem;
padding: .25rem 1rem;
border-radius: 4px;
border: 1px solid var(--border);
background: var(--button-bg);
box-shadow: 0 2px 4px var(--shadow);
font: inherit;
cursor: pointer;
color: iherit;
}
// Layout
BODY {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: space-evenly;
font: 16px/1.5 Trebuchet MS, Arial, sans-serif;
}
View Compiled
const control = document.querySelector('.change-theme-control');
const themes = ['red', 'blue', 'default'];
let themesCounter = 0;
control.addEventListener('click', () => {
document.documentElement.dataset.theme = themes[themesCounter];
themesCounter++;
if(themesCounter === themes.length) {
themesCounter = 0;
}
});
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.