php控制硬件电源开关模块,如何使用纯CSS实现电源开关控件(附源码)

本篇文章给大家带来的内容是关于如何使用纯CSS实现电源开关控件(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

源代码下载

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,包含 3 个元素,分别代表 input 控件、开关和灯光:

居中显示:body {

margin: 0;

height: 100vh;

display: flex;

align-items: center;

justify-content: center;

background-color: #eee;

}

定义控件的样式,把控件的设置为透明,使其不可见,但仍可与用户交互。其中字号大小是变量,因为 input 控件的字号与正文字号不同,所以需要单独设置:body {

font-size: var(--font-size);

}

:root {

--font-size: 16px;

}

.toggle {

position: absolute;

font-size: var(--font-size);

width: 5em;

height: 8em;

margin: 0;

filter: opacity(0);

cursor: pointer;

z-index: 2;

}

设置开关的轮廓:.switch {

position: absolute;

width: 5em;

height: 8em;

border-radius: 1.2em;

background: linear-gradient(#d2d4d6, white);

}

用阴影使开关变得立体:.switch {

box-shadow:

inset 0 -0.2em 0.4em rgba(212, 212, 212, 0.75),

inset 0 -0.8em 0 0.1em rgba(156, 156, 156, 0.85),

0 0 0 0.1em rgba(116, 116, 116, 0.8),

0 0.6em 0.6em rgba(41, 41, 41, 0.3),

0 0 0 0.4em #d4d7d8;

}

用伪元素设置 on 和 off 文本,目前是处于 off 状态:.toggle ~ .switch::before,

.toggle ~ .switch::after {

position: absolute;

width: 100%;

text-align: center;

font-size: 1.4em;

font-family: sans-serif;

text-transform: uppercase;

}

.toggle ~ .switch::before {

content: '|';

bottom: 1em;

color: rgba(0, 0, 0, 0.5);

text-shadow: 0 0.1em 0 rgba(255, 255, 255, 0.8);

}

.toggle ~ .switch::after {

content: 'O';

top: 0.6em;

color: rgba(0, 0, 0, 0.45);

text-shadow: 0 0.1em 0 rgba(255, 255, 255, 0.4);

}

把 input 控件设置为 checked状态,以便设置处于 on 状态的样式:

设置处于 on 状态的开关样式:.toggle:checked ~ .switch {

background: linear-gradient(#a1a2a3, #f0f0f0);

box-shadow:

inset 0 0.2em 0.4em rgba(212, 205, 199, 0.75),

inset 0 0.8em 0 0.1em rgba(255, 255, 255, 0.77),

0 0 0 0.1em rgba(116, 116, 118, 0.8),

0 -0.2em 0.2em rgba(41, 41, 41, 0.18),

0 0 0 0.4em #d4d7d8;

}

设置处于 on 状态的文本样式:.toggle:checked ~ .switch::before {

bottom: 0.3em;

text-shadow: 0 0.1em 0 rgba(255, 255, 255, 0.5);

}

.toggle:checked ~ .switch::after {

top: 1.2em;

text-shadow: 0 0.1em 0 rgba(255, 255, 255, 0.15);

}

接下来设置灯光效果。

先设置处于 off 状态的黑暗效果:.toggle ~ .light {

width: 100vw;

height: 100vh;

background-color: #0a0a16;

z-index: 1;

filter: opacity(0.7);

}

再设置处于 on 状态的明亮效果:.toggle:checked ~ .light {

filter: opacity(0);

}

大功告成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值