CSS五星評(píng)分是一種流行的評(píng)分方式,通常用于網(wǎng)站或應(yīng)用的用戶評(píng)價(jià)系統(tǒng),它使用五個(gè)不同的圖標(biāo)(如星星)來表示不同的評(píng)分等級(jí),
- ????? 表示5星評(píng)分
- ???? 表示4星評(píng)分
- ??? 表示3星評(píng)分
- ?? 表示2星評(píng)分
- ? 表示1星評(píng)分
下面是如何用CSS制作五星評(píng)分的方法:
1、HTML結(jié)構(gòu):你需要有五個(gè)HTML元素來表示每個(gè)星星,可以使用<span>
或<div>
元素。
<div class="rating"> <span class="star"></span> <span class="star"></span> <span class="star"></span> <span class="star"></span> <span class="star"></span> </div>
2、CSS樣式:你可以使用CSS來定義星星的外觀和交互,你可以設(shè)置星星的顏色、大小、形狀等。
.rating { display: flex; justify-content: center; align-items: center; } .star { width: 20px; height: 20px; background-color: #FFD700; /* 黃色星星 */ border: none; border-radius: 50%; /* 圓形星星 */ box-shadow: 0 0 5px #FFD700; /* 添加一些陰影 */ cursor: pointer; /* 添加鼠標(biāo)指針 */ }
3、JavaScript交互:你可以使用JavaScript來添加交互功能,比如當(dāng)用戶點(diǎn)擊星星時(shí),顯示不同的評(píng)分等級(jí)。
const stars = document.querySelectorAll('.star'); const maxRating = 5; // ***大評(píng)分等級(jí) let currentRating = 0; // 當(dāng)前評(píng)分等級(jí) let isRatingActive = false; // 是否正在評(píng)分 let lastStarClicked = null; // ***后點(diǎn)擊的星星 let starsToFill = maxRating - currentRating; // 需要填充的星星數(shù)量 let starsToUnfill = currentRating; // 需要取消填充的星星數(shù)量 let filledStarClass = 'filled-star'; // 已填充星星的類名 let unfilledStarClass = 'unfilled-star'; // 未填充星星的類名 let ratingDisplay = document.createElement('div'); // 用于顯示評(píng)分等級(jí)的容器 ratingDisplay.style.position = 'absolute'; // ***定位,使其顯示在星星下方 ratingDisplay.style.left = '50%'; // 居中顯示 ratingDisplay.style.transform = 'translateX(-50%)'; // 居中顯示(如果容器寬度不是100%) ratingDisplay.style.backgroundColor = 'rgba(255, 255, 255, 0.7)'; // 背景顏色(可選) ratingDisplay.style.padding = '5px'; // 內(nèi)邊距(可選) ratingDisplay.style.border = '1px solid #000'; // 邊框(可選) ratingDisplay.style.borderRadius = '3px'; // 邊框圓角(可選) document.body.appendChild(ratingDisplay); // 將評(píng)分顯示容器添加到文檔中 // 添加事件監(jiān)聽器以處理點(diǎn)擊事件 stars.forEach((star, index) => { star.addEventListener('click', (event) => { if (!isRatingActive) { // 如果正在評(píng)分,則忽略點(diǎn)擊事件 isRatingActive = true; // 設(shè)置正在評(píng)分標(biāo)志為true lastStarClicked = event.target; // 記錄***后點(diǎn)擊的星星 // 更新評(píng)分等級(jí)并重新填充星星 currentRating = index + 1; // 更新當(dāng)前評(píng)分等級(jí)為點(diǎn)擊的星星編號(hào)+1(從1開始) starsToFill = maxRating - currentRating; // 更新需要填充的星星數(shù)量 starsToUnfill = currentRating; // 更新需要取消填充的星星數(shù)量 // 重繪星星并更新評(píng)分顯示容器內(nèi)容(如果需要)...(此處省略了重繪星星的代碼)...(通常使用CSS動(dòng)畫或JavaScript來重繪星星)...(***后更新評(píng)分顯示容器內(nèi)容)ratingDisplay.textContent = currentRating + '星'; // 更新評(píng)分顯示容器內(nèi)容isRatingActive = false; // 設(shè)置正在評(píng)分標(biāo)志為false,結(jié)束評(píng)分操作}}});});```注意:上述代碼僅提供了一個(gè)基本的框架,你可能需要根據(jù)自己的需求進(jìn)行調(diào)整和優(yōu)化,你可能需要添加更多的樣式和交互功能,或者使用更復(fù)雜的庫(kù)或框架來實(shí)現(xiàn)更豐富的功能,希望這些信息能幫助你制作出符合自己需求的五星評(píng)分系統(tǒng)!