谁说CSS只能布局?看我实现超酷主题切换效果

大家好👋,我是康小汪!今天要带大家探索一个超酷的CSS技巧——主题切换效果!✨


整体效果

 

思路:页面包含一个div元素和一个button按钮。div用于展示文本内容,而按钮则用于触发主题切换的功能。

变量定义:通过:root定义了几个CSS变量(如--primary-color, --secondary-color等),用于控制页面的颜色、过渡时间等属性。
基本布局与样式:使用Flexbox布局将页面内容居中显示,并为整个页面设定了背景颜色、字体颜色等基础样式。.card类用于设置卡片的样式,包括内边距、圆角、阴影效果等;button标签定义了按钮的基本样式以及悬停时的缩放效果。
主题切换动画:通过.theme-transition类和@keyframes themeTransition定义了一个从中心点向外扩展的圆形渐变动画,模拟主题切换时的视觉效果。

核心代码 


html代码

<div class="card">一键切换主题演示</div>
<button onclick="toggleTheme()">切换主题</button>

 CSS代码

 

:root {
            --primary-color: #ffffff;
            --secondary-color: #f0f0f0;
            --text-color: #333333;
            --transition-duration: 0.5s;
        }

        body {
            margin: 0;
            min-height: 100vh;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            background: var(--primary-color);
            color: var(--text-color);
            transition: background-color var(--transition-duration) ease-in-out;
            position: relative;
            overflow: hidden;
        }

        .card {
            padding: 2rem;
            background: var(--secondary-color);
            border-radius: 8px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            transition: 
                background-color var(--transition-duration) ease-in-out,
                color var(--transition-duration) ease-in-out;
            margin-bottom: 1rem;
        }

        button {
            padding: 0.8rem 1.5rem;
            border: none;
            border-radius: 4px;
            background: #007bff;
            color: white;
            cursor: pointer;
            transition: transform 0.2s ease;
        }

        button:hover {
            transform: scale(1.05);
        }

        .theme-transition {
            position: fixed;
            top: 50%;
            left: 50%;
            width: 0;
            height: 0;
            background: var(--target-theme);
            border-radius: 50%;
            transform: translate(-50%, -50%);
            pointer-events: none;
            animation: themeTransition var(--transition-duration) ease-in-out;
        }

        @keyframes themeTransition {
            0% {
                width: 0;
                height: 0;
                opacity: 1;
            }
            100% {
                width: 200vmax;
                height: 200vmax;
                opacity: 1;
            }
        }

        /* 预定义主题 */
        .theme-dark {
            --primary-color: #2c3e50;
            --secondary-color: #34495e;
            --text-color: #ecf0f1;
        }

        .theme-light {
            --primary-color: #ffffff;
            --secondary-color: #f0f0f0;
            --text-color: #333333;
        }

        .theme-custom {
            --primary-color: #ffe6e6;
            --secondary-color: #ffcccc;
            --text-color: #660000;
        }

以上是完整HTML代码和CSS代码 

 获取完整代码,请关注微信公众号:【康小汪】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值