摘要:代碼實現(xiàn)一星兩星三星四星五星去掉標簽默認樣式初始化樣式鼠標懸浮精益求精上面我們的星星評分效果已初見成效,但是暴露了一個問題,就是我們的評價機制缺少記憶功能。這里有點不一樣的是每個星星對應一個單選框和一個標簽,的層級要高于單選框。
前言
這種星星評價效果,相信大家這個并不陌生,經(jīng)常會遇到這個。現(xiàn)在如果要我們自己實現(xiàn)一個,很多人第一反應可能用JS+CSS去實現(xiàn)它。這種方式并沒有什么不好的地方,只是我們在復用的時候不是很方便,需要帶上JS和CSS的兩塊代碼。為了復用更簡單,所以我們介紹一種純CSS的方式。
小試牛刀 素材 原理這里我們分為兩層:
第一層:div.star_evaluate 設置圖片背景icon-star-default.png,沿X軸平鋪,超出部分隱藏,作為定位父級。
第二層:a標簽作為第二層,這里我們需要設置其定位屬性,初始化設定好每個a標簽的位置,以及其背景圖片。這邊需要注意的是一定要給a便簽加上層級。
鼠標移動對應的星星時,將其left屬性設置為0,然后設置其寬度,這個寬度由其對應的星級決定,最后別忘了設置其層級。
關(guān)于層級的設定,我們一定要保證div.star_evaluate HTML CSS 上面我們的星星評分效果已初見成效,但是暴露了一個問題,就是我們的評價機制缺少記憶功能。接下來我們來優(yōu)化一下。 同上。 這邊我們實現(xiàn)星星評分記憶的功能主要依賴input[type=radio]單選框,我們的星星評分主要分為三個狀態(tài)。 HTML CSS3
/*去掉標簽默認樣式*/
ul {
margin: 0;
padding: 0;
list-style: none;
}
/*初始化樣式*/
.star_evaluate {
position: relative;
width: 100px;
height: 20px;
background: url("icon-star-default.png") repeat-x;
background-size: 20px 20px;
overflow: hidden;
}
.star {
display: block;
height: 20px;
width: 20px;
position: absolute;
z-index: 2;
}
.star_1 {
left: 0;
}
.star_2 {
left: 20px;
}
.star_3 {
left: 40px;
}
.star_4 {
left: 60px;
}
.star_5 {
left: 80px;
}
/*鼠標懸浮*/
.star:hover {
cursor: pointer;
background: url("icon-star-active.png") repeat-x;
background-size: 20px 20px;
left: 0;
z-index: 1;
}
.star_1:hover {
width: 20px;
}
.star_2:hover {
width: 40px;
}
.star_3:hover {
width: 60px;
}
.star_4:hover {
width: 80px;
}
.star_5:hover {
width: 100px;
}
精益求精
初始化狀態(tài):在初始化狀態(tài)下,我們需要跟上面一樣初始化星星的位置。這里有點不一樣的是每個星星對應一個單選框和一個label標簽,label的層級要高于單選框。另外我們通過label的for的屬性來實現(xiàn)和單選框的聯(lián)系。
懸浮狀態(tài):在懸浮狀態(tài)下,我們要根據(jù)懸浮所對應的星星來設置label標簽的寬度,left屬性設置為0。此時我們要保證該懸浮狀態(tài)下的label標簽的層級低于其他label標簽。
選中狀態(tài):在選中狀態(tài)下,我們跟懸浮狀態(tài)一樣設置label標簽的寬度。
/*去掉標簽默認樣式*/
ul {
margin: 0;
padding: 0;
list-style: none;
}
input {
margin: 0;
}
/*初始化樣式*/
.star_evaluate {
position: relative;
width: 100px;
height: 20px;
background: url("icon-star-default.png") repeat-x;
background-size: 20px 20px;
overflow: hidden;
}
.star,.score{
display: block;
height: 20px;
width: 20px;
position: absolute;
}
.star{
z-index: 2;
}
.score{
opacity: 0;
}
.star_1, .score_1 {
left: 0;
}
.star_2, .score_2 {
left: 20px;
}
.star_3, .score_3 {
left: 40px;
}
.star_4, .score_4 {
left: 60px;
}
.star_5, .score_5 {
left: 80px;
}
/*鼠標懸浮*/
.star:hover {
cursor: pointer;
background: url("icon-star-active.png") repeat-x;
background-size: 20px 20px;
left: 0;
z-index: 1;
}
.star_1:hover {
width: 20px;
}
.star_2:hover {
width: 40px;
}
.star_3:hover {
width: 60px;
}
.star_4:hover {
width: 80px;
}
.star_5:hover {
width: 100px;
}
/*選中之后*/
.score:checked + .star {
background: url("icon-star-active.png") repeat-x;
background-size: 20px 20px;
left: 0;
}
.score_1:checked + .star_1 {
width: 20px;
}
.score_2:checked + .star_2 {
width: 40px;
}
.score_3:checked + .star_3 {
width: 60px;
}
.score_4:checked + .star_4 {
width: 80px;
}
.score_5:checked + .star_5 {
width: 100px;
}
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/50867.html
摘要:代碼實現(xiàn)一星兩星三星四星五星去掉標簽默認樣式初始化樣式鼠標懸浮精益求精上面我們的星星評分效果已初見成效,但是暴露了一個問題,就是我們的評價機制缺少記憶功能。這里有點不一樣的是每個星星對應一個單選框和一個標簽,的層級要高于單選框。 前言 showImg(https://segmentfault.com/img/bVO4MF?w=122&h=23); 這種星星評價效果,相信大家這個并不陌生...
上圖:showImg(https://segmentfault.com/img/bVLLXv?w=267&h=76); 上代碼: .container{ width: 150px; height: 30px; position: relative; } .container ul{ ma...
摘要:本篇文章我們進一步深入項目設計評價組件。使得組件更加便于維護。路徑配置內(nèi)自動補全設置通過重命名設置對組件導入模塊時進行了重命名。全部有圖點評使用引入的組件組件就是上圖標記的分隔線。 在上篇文章我們將項目頭部模塊進行了編寫與數(shù)據(jù)渲染。 本篇文章我們進一步深入項目設計評價組件。 showImg(https://segmentfault.com/img/bVbt6IP?w=374&h=417...
閱讀 2666·2023-04-26 02:44
閱讀 8509·2021-11-22 14:44
閱讀 2125·2021-09-27 13:36
閱讀 2494·2021-09-08 10:43
閱讀 681·2019-08-30 15:56
閱讀 1396·2019-08-30 15:55
閱讀 2890·2019-08-28 18:12
閱讀 2832·2019-08-26 13:50