|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家帶來的內容是關于如何使用純CSS實現萬圣節的toggle控件(附源碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。效果預覽
源代碼地址https://github.com/shanyuhai1... 代碼解讀定義容器 <section class="halloween-switcher">
<input type="checkbox" id="halloween-input">
<label for="switch-input" class="halloween-label">
<div class="pumpkin-container"></div>
<div class="vampire-container"></div>
</label>
</section>引入字體, 居中顯示: @import url('https://fonts.googleapis.com/css?family=Kodchasan');
* {
font-family: 'Kodchasan';
}
html {
font-size: 20px;
}
body {
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: #081219;
overflow: hidden;
}設置實際容器 .halloween-label {
width: 30rem;
height: 10rem;
border: 3px solid #E56D48;
border-radius: 10rem;
cursor: pointer;
display: flex;
align-items: center;
position: relative;
}增加兩種容器的配色 html {
--pumpkin-color: #E56D48;
--vampire-color: #4D7C99;
}定義 .halloween-input ~ .halloween-label::before,
.halloween-input:checked ~ .halloween-label::before {
position: absolute;
font-size: 2.5rem;
text-transform: uppercase;
}
.halloween-input ~ .halloween-label::before {
content: 'Pumpkin';
color: var(--pumpkin-color);
left: 70%;
transform: translateX(-70%);
}
.halloween-input:checked ~ .halloween-label::before {
content: 'Vampire';
color: var(--vampire-color);
left: 25%;
transform: translateX(-25%);
}
.halloween-input ~ .halloween-label .pumpkin-container,
.halloween-input ~ .halloween-label .vampire-container {
width: 9.5rem;
height: 9.5rem;
border-radius: 50%;
position: absolute;
left: 0.25rem;
overflow: hidden;
}
.halloween-input ~ .halloween-label .pumpkin-container {
background-color: var(--pumpkin-color);
filter: opacity(1);
}
.halloween-input ~ .halloween-label .vampire-container {
background-color: var(--vampire-color);
filter: opacity(0);
}
.halloween-input:checked ~ .halloween-label .pumpkin-container {
left: calc(100% - 0.25rem);
transform: translateX(-100%);
filter: opacity(0);
}
.halloween-input:checked ~ .halloween-label .vampire-container {
left: calc(100% - 0.25rem);
transform: translateX(-100%);
filter: opacity(1);
}增加 .halloween-label {
border: 3px solid var(--label-border-color);
transition: .5s ease-in-out;
}
.halloween-label {
--label-border-color: var(--pumpkin-color);
}
.halloween-input:checked ~ .halloween-label {
--label-border-color: var(--vampire-color);
}
動畫效果 .halloween-input ~ .halloween-label::before,
.halloween-input:checked ~ .halloween-label::before {
transition: .5s ease;
}
.halloween-input ~ .halloween-label .pumpkin-container,
.halloween-input ~ .halloween-label .vampire-container {
transition: .5s ease;
}先繪畫 <p class="pumpkin-container"> <p class="pumpkin__eyes-n-nose"></p> <p class="pumpkin__mouth-n-teeths"></p> </p> 新增果肉顏色 html {
--pumkin-pulp-color: #330A0F;
}繪畫 偽元素畫出眼睛 .pumpkin__eyes-n-nose {
position: absolute;
top: 20%;
width: 0;
height: 0;
border-style: solid;
border-width: 0 0.8rem 1.6rem 0.8rem;
color: var(--pumpkin-color);
border-bottom-color: var(--pumkin-pulp-color);
background-color: var(--pumkin-pulp-color);
}
.pumpkin__eyes-n-nose::before,
.pumpkin__eyes-n-nose::after {
content: '';
position: absolute;
width: 1rem;
height: 1rem;
background-color: var(--pumkin-pulp-color);
border-radius: 50%;
top: 0.5rem;
left: 0;
}
.pumpkin__eyes-n-nose::before {
margin-left: -3.25rem;
}
.pumpkin__eyes-n-nose::after {
margin-left: 2.25rem;
}繪畫 偽元素畫出牙齒 .pumpkin__mouth-n-teeths {
position: absolute;
width: 6.5rem;
height: 3.25rem;
bottom: 10%;
background-color: var(--pumkin-pulp-color);
border-radius: 0 0 6.5rem 6.5rem;
}
.pumpkin__mouth-n-teeths::before,
.pumpkin__mouth-n-teeths::after {
content: '';
position: absolute;
height: 0.75rem;
width: 1rem;
background-color: var(--pumpkin-color);
}
.pumpkin__mouth-n-teeths::before {
top: 0;
left: 1.25rem;
}
.pumpkin__mouth-n-teeths::after {
height: 1rem;
bottom: 0;
right: 1.25rem;
}再繪畫 <p class="vampire-container">
<p class="vampire__eyes"></p>
<p class="vampire__mouth">
<p class="vampire__teeths"></p>
<p class="vampire__tongue"></p>
</p>
</p>利用 偽元素 繪出 .vampire-container::before,
.vampire-container::after {
content: '';
position: absolute;
width: 100%;
height: 100%;
background-color: #c2def2; /* face color */
border-radius: 45% 45% 0 0;
top: 0.75rem;
}
.vampire-container::before {
left: -4rem;
}
.vampire-container::after {
right: -4rem;
}偽元素繪出 .vampire__eyes {
top: 20%;
position: absolute;
z-index: 1;
}
.vampire__eyes::before,
.vampire__eyes::after {
content: '';
position: absolute;
width: 1rem;
height: 1rem;
background-color: #d63e49; /* eye-color */
border-radius: 50%;
top: 0.5rem;
left: 0;
}
.vampire__eyes::before {
margin-left: -3.25rem;
}
.vampire__eyes::after {
margin-left: 2.25rem;
}繪出 .vampire__mouth {
position: absolute;
width: 6.5rem;
height: 3.25rem;
background-color: var(--pumkin-pulp-color);
bottom: 10%;
border-radius: 0 0 6.5rem 6.5rem;
display: flex;
justify-content: center;
overflow: hidden;
z-index: 1;
}繪出 .vampire__teeths {
position: absolute;
width: 100%;
height: 1rem;
background-color: #fffae6;
top: -1px;
}
.vampire__teeths::before,
.vampire__teeths::after {
content: '';
position: absolute;
width: 0;
height: 0;
color: transparent;
border-style: solid;
border-width: 0.65rem 0.375rem 0 0.375rem;
border-top-color: #fffae6;
top: 0.95rem;
}
.vampire__teeths::before {
left: 1rem;
}
.vampire__teeths::after {
right: 1rem;
}繪出 .vampire__tongue {
position: absolute;
width: 3.5rem;
height: 1.75rem;
background-color: #d63e49;
bottom: -0.75rem;
border-radius: 3.5rem 3.5rem 0 0;
}再接著把 .halloween-input {
display: none;
}增加微笑動畫 .vampire__teeths {
animation: smile 2s ease-in-out infinite;
}
.vampire__tongue {
animation: smile 3s ease-in-out infinite;
}
@keyframes smile {
50% {
transform: scaleY(1.5);
}
}以上就是如何使用純CSS實現萬圣節的toggle控件(附源碼)的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!