📜  如何在 CSS 中使用 Slider 创建深色主题?

📅  最后修改于: 2022-05-13 01:56:39.322000             🧑  作者: Mango

如何在 CSS 中使用 Slider 创建深色主题?

在本文中,我们将学习使用 CSS 中的滑块创建一个深色主题。在现代网站中,我们看到了一个很棒的功能,只需检查滑块即可更改网站主题。要查看这个很棒的功能,请访问 geeksforgeeks.org 网站,您可以根据自己的喜好更改主题。在本文中,我们将学习创建一个滑块来更改网站主题。它允许用户根据自己的喜好自定义网站的界面,这是最好的用户体验。在这里,我们将创建一个漂亮的滑块来更改我们的网站主题。

创建深色主题滑块的步骤:这些是创建深色主题滑块的以下步骤。

  • 使用 HTML 创建网页
  • 定义所有 CSS 变量,例如默认主题的背景颜色、主要文本颜色、次要文本颜色和深色主题。
  • 添加使用 JavaScript 将默认模式切换为暗模式的功能。

示例:以下示例演示如何使用 CSS 中的滑块创建深色主题。

第 1 步:创建一个 index.html 文件并将以下 html 代码添加到其中以提供网页的基本结构。

文件名:index.html

HTML


 

    
    
    
 
    
    
 
    
    
    

 

 
    
    
             
           
        

GeeksforGeeks

                     

            GeeksforGeeks is a best learning             plateform for geeks.         

                 

            click below link to open             geeksforgeeks website         

                           GeeksforGeeks              
 


CSS
/* Default light theme */
:root {
    --primary-color: #302AE6;
    --secondary-color: #536390;
    --text-color: #424242;
    --background-color: #fff;
    --heading-color: #292922;
}
 
/* Dark theme */
[theme="dark"] {
    --primary-color: #9A97F3;
    --secondary-color: #818cab;
    --text-color: #e1e1ff;
    --background-color: #161625;
    --heading-color: #818cab;
}
 
/* Adding css variable in our webpage */
body {
    background-color: var(--background-color);
    color: var(--text-color);
}
 
h1 {
    color: var(--secondary-color);
}
 
a {
    color: var(--primary-color);
}
 
/* Slider styling */
.theme-switch-container {
    display: flex;
    align-items: center;
}
 
.theme-slider {
    display: inline-block;
    height: 34px;
    position: relative;
    width: 60px;
}
 
.theme-slider input {
    display: none;
}
 
.slider {
    background-color: #ccc;
    bottom: 0;
    cursor: pointer;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    transition: .4s;
}
 
.slider:before {
    background-color: #fff;
    bottom: 4px;
    content: "";
    height: 26px;
    left: 4px;
    position: absolute;
    transition: .4s;
    width: 26px;
}
 
input:checked+.slider {
    background-color: #66bb6a;
}
 
input:checked+.slider:before {
    transform: translateX(26px);
}
 
.slider.round {
    border-radius: 34px;
}
 
.slider.round:before {
    border-radius: 50%;
}


Javascript
const toggleSwitch =
    document.querySelector('.theme-slider input[type="checkbox"]');
 
/* Function to change theme */
function switchTheme(e) {
 
    /* Once checkbox is checked default theme change to dark */
    if (e.target.checked) {
        document.documentElement.setAttribute('theme', 'dark');
    }
 
    /* While page in dark mode and checkbox is
    checked then theme back to change light*/
    else {
        document.documentElement.setAttribute('theme', 'light');
    }
}
 
toggleSwitch.addEventListener('change', switchTheme, false);



第 2 步:现在我们将创建新文件以将样式添加到上述 html 代码。

文件名:style.css

CSS

/* Default light theme */
:root {
    --primary-color: #302AE6;
    --secondary-color: #536390;
    --text-color: #424242;
    --background-color: #fff;
    --heading-color: #292922;
}
 
/* Dark theme */
[theme="dark"] {
    --primary-color: #9A97F3;
    --secondary-color: #818cab;
    --text-color: #e1e1ff;
    --background-color: #161625;
    --heading-color: #818cab;
}
 
/* Adding css variable in our webpage */
body {
    background-color: var(--background-color);
    color: var(--text-color);
}
 
h1 {
    color: var(--secondary-color);
}
 
a {
    color: var(--primary-color);
}
 
/* Slider styling */
.theme-switch-container {
    display: flex;
    align-items: center;
}
 
.theme-slider {
    display: inline-block;
    height: 34px;
    position: relative;
    width: 60px;
}
 
.theme-slider input {
    display: none;
}
 
.slider {
    background-color: #ccc;
    bottom: 0;
    cursor: pointer;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    transition: .4s;
}
 
.slider:before {
    background-color: #fff;
    bottom: 4px;
    content: "";
    height: 26px;
    left: 4px;
    position: absolute;
    transition: .4s;
    width: 26px;
}
 
input:checked+.slider {
    background-color: #66bb6a;
}
 
input:checked+.slider:before {
    transform: translateX(26px);
}
 
.slider.round {
    border-radius: 34px;
}
 
.slider.round:before {
    border-radius: 50%;
}


第 3 步:现在我们将创建 javascript 文件并创建函数toggleSwitch,它允许我们在深色和浅色主题之间切换。

文件名:script.js

Javascript

const toggleSwitch =
    document.querySelector('.theme-slider input[type="checkbox"]');
 
/* Function to change theme */
function switchTheme(e) {
 
    /* Once checkbox is checked default theme change to dark */
    if (e.target.checked) {
        document.documentElement.setAttribute('theme', 'dark');
    }
 
    /* While page in dark mode and checkbox is
    checked then theme back to change light*/
    else {
        document.documentElement.setAttribute('theme', 'light');
    }
}
 
toggleSwitch.addEventListener('change', switchTheme, false);

输出: