|
|
|
|
|
這個(gè)用戶注冊(cè)表單令人眼前一亮,它充分利用Placeholder的特點(diǎn),當(dāng)點(diǎn)擊輸入框的時(shí)候,提示文字移到輸入框左上角,用戶體驗(yàn)非常友好,值得推薦使用,這個(gè)漂亮的用戶注冊(cè)表單是用純CSS3實(shí)現(xiàn)的。
純css3實(shí)現(xiàn)漂亮的用戶注冊(cè)表單
body {
align-items: center;
background-color: #000;
display: flex;
justify-content: center;
height: 100vh;
}
.form {
background-color: #15172b;
border-radius: 20px;
box-sizing: border-box;
height: 500px;
padding: 20px;
width: 320px;
}
.title {
color: #eee;
font-family: sans-serif;
font-size: 36px;
font-weight: 600;
margin-top: 30px;
}
.subtitle {
color: #eee;
font-family: sans-serif;
font-size: 16px;
font-weight: 600;
margin-top: 10px;
}
.input-container {
height: 50px;
position: relative;
width: 100%;
}
.ic1 {
margin-top: 40px;
}
.ic2 {
margin-top: 30px;
}
.input {
background-color: #303245;
border-radius: 12px;
border: 0;
box-sizing: border-box;
color: #eee;
font-size: 18px;
height: 100%;
outline: 0;
padding: 4px 20px 0;
width: 100%;
}
.cut {
background-color: #15172b;
border-radius: 10px;
height: 20px;
left: 20px;
position: absolute;
top: -20px;
transform: translateY(0);
transition: transform 200ms;
width: 76px;
}
.cut-short {
width: 50px;
}
.input:focus ~ .cut,
.input:not(:placeholder-shown) ~ .cut {
transform: translateY(8px);
}
.placeholder {
color: #65657b;
font-family: sans-serif;
left: 20px;
line-height: 14px;
pointer-events: none;
position: absolute;
transform-origin: 0 50%;
transition: transform 200ms, color 200ms;
top: 20px;
}
.input:focus ~ .placeholder,
.input:not(:placeholder-shown) ~ .placeholder {
transform: translateY(-30px) translateX(10px) scale(0.75);
}
.input:not(:placeholder-shown) ~ .placeholder {
color: #808097;
}
.input:focus ~ .placeholder {
color: #dc2f55;
}
.submit {
background-color: #08d;
border-radius: 12px;
border: 0;
box-sizing: border-box;
color: #eee;
cursor: pointer;
font-size: 18px;
height: 50px;
margin-top: 38px;
// outline: 0;
text-align: center;
width: 100%;
}
.submit:active {
background-color: #06b;
}
<div class="form">
<div class="title">歡迎光臨</div>
<div class="subtitle">讓我們創(chuàng)建您的帳戶!</div>
<div class="input-container ic1">
<input id="firstname" class="input" type="text" placeholder=" " />
<div class="cut"></div>
<label for="用戶名" class="placeholder">用戶名</label>
</div>
<div class="input-container ic2">
<input id="lastname" class="input" type="text" placeholder=" " />
<div class="cut"></div>
<label for="名稱" class="placeholder">名稱</label>
</div>
<div class="input-container ic2">
<input id="email" class="input" type="text" placeholder=" " />
<div class="cut cut-short"></div>
<label for="郵箱" class="placeholder">郵箱</label>
</div>
<button type="text" class="submit">提交</button>
</div>
1、如下CSS代碼比較不多見,是本表單的關(guān)鍵代碼。
.input:focus ~ .cut,
.input:not(:placeholder-shown) ~ .cut {
transform: translateY(8px);
}
.input:focus
表示獲得焦點(diǎn)的輸入字段。
兄弟選擇器('~')表示在某元素之后的所有兄弟元素,不一定要緊跟在后面,但必須得是相同父元素,即必須是同一級(jí)元素。
.input:not(:placeholder-shown) ~
表示標(biāo)簽選擇器不適用于自動(dòng)填充。
transform: translateY()
Transform字面上就是變形,改變的意思。translateY(Y)
僅垂直方向移動(dòng)(Y軸移動(dòng))。
2、pointer-events: none;
屬性
在CSS代碼里,看到.placeholder
的屬性包含pointer-events: none;
,這里說(shuō)說(shuō)這個(gè)屬性。
.placeholder {
color: #65657b;
font-family: sans-serif;
left: 20px;
line-height: 14px;
pointer-events: none;
position: absolute;
transform-origin: 0 50%;
transition: transform 200ms, color 200ms;
top: 20px;
}
這個(gè)pointer-events
屬性none
值能阻止點(diǎn)擊、狀態(tài)變化和鼠標(biāo)指針變化。
一些需要注意的關(guān)于pointer-events的事項(xiàng):
pointer-events
來(lái)解禁父元素的阻止鼠標(biāo)事件限制。pointer-events
樣式聲明,或把它的值改變?yōu)?code>auto,監(jiān)聽器會(huì)重新生效?;旧?,監(jiān)聽器會(huì)遵守pointer-events
的設(shè)定。pointer-events
屬性是用來(lái)禁止某元素的點(diǎn)擊,這樣的好處是樣式上也得到了控制。當(dāng)然,不要使用pointer-events
來(lái)屏蔽一些十分關(guān)鍵的觸發(fā)動(dòng)作,因?yàn)檫@個(gè)樣式可以通過(guò)瀏覽器控制臺(tái)刪除掉。