>  기사  >  웹 프론트엔드  >  순수 CSS를 사용하여 전원 스위치 제어를 구현하는 방법(소스코드 첨부)

순수 CSS를 사용하여 전원 스위치 제어를 구현하는 방법(소스코드 첨부)

不言
不言원래의
2018-09-27 16:07:093283검색

이 기사의 내용은 순수 CSS를 사용하여 전원 스위치 제어를 구현하는 방법에 대한 것입니다. (소스 코드 첨부) 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

효과 미리보기

순수 CSS를 사용하여 전원 스위치 제어를 구현하는 방법(소스코드 첨부)


소스 코드 다운로드

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

코드 해석

dom을 정의하고, 입력 컨트롤, 스위치 및 조명 각각: input 控件、开关和灯光:

<input>
<div></div>
<div></div>

居中显示:

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;
}

用伪元素设置 onoff 文本,目前是处于 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 状态的样式:

<input>

设置处于 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);
}
중앙 디스플레이:

rrreee

컨트롤의 스타일을 정의하고 컨트롤을 투명하게 설정하여 보이지 않지만 여전히 사용자와 상호 작용할 수 있도록 합니다. 글꼴 크기는 가변적입니다. 입력 컨트롤의 글꼴 크기가 텍스트 크기와 다르기 때문에 별도로 설정해야 합니다: 🎜rrreee🎜스위치 윤곽선 설정: 🎜rrreee🎜 그림자를 사용하여 스위치를 3차원으로 만듭니다. 🎜rrreee🎜 의사 요소를 사용하여 onoff 텍스트를 설정합니다. 현재 off입니다. 상태: 🎜rrreee🎜 입력 컨트롤 설정 선택됨 상태의 경우 on 상태에 대한 스타일을 설정합니다. 🎜rrreee🎜스위치 스타일 설정 on 상태: 🎜rrreee🎜on 상태 스타일 설정 Code>on 상태 텍스트 스타일: 🎜rrreee🎜다음으로 조명 효과를 설정합니다. 🎜먼저 off 상태에서 어두운 효과를 설정하세요: 🎜rrreee🎜 그런 다음 on 상태에서 밝은 효과를 설정하세요: 🎜rrreee🎜완료되었습니다! 🎜

위 내용은 순수 CSS를 사용하여 전원 스위치 제어를 구현하는 방법(소스코드 첨부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.