你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】

简介: javascript纯原生实现五星评分效果

🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注

2.png

效果展示

3.gif

图片素材

4.gif

HTML代码

<div id="star">
    <h5>点击星星就能打分</h5>
    <ul>
        <li class="active"><a href="javascript:;"></a></li>
        <li><a href="javascript:;"></a></li>
        <li><a href="javascript:;"></a></li>
        <li><a href="javascript:;"></a></li>
        <li><a href="javascript:;"></a></li>
    </ul>
    <p>显示文字信息:<span></span></p>
</div>

CSS代码

* {
   
   
    margin: 0;
    padding: 0;
}

body {
   
   
    color: #666;
    font-size: 12px;
    font-family: '微软雅黑';
}

ul {
   
   
    list-style-type: none;
}

#star {
   
   
    position: relative;
    width: 400px;
    margin: 100px auto;
    border: 1px solid red;
    border-radius: 10px;
    padding: 30px;
}

#star h5 {
   
   
    width: 100px;
    margin: 0 auto;
    line-height: 19px;
    text-align: center;
}

#star ul {
   
   
    margin: 20px 20px;
    border: 1px saddlebrown solid;
    overflow: hidden;
    padding: 10px;
}

#star ul li {
   
   
    float: left;
    width: 27px;
    height: 27px;
    cursor: pointer;
    background: url("img/star.gif") no-repeat;
}

#star li.active {
   
   
    background-position: 0 -29px;
}

#star>p{
   
   
    border: 1px solid red;
    width: 200px;
    margin: 0 auto;
    padding: 10px;
}
#star>p>span{
   
   
    color: red;
}

javascript 代码

window.onload = function () {
   
   


    var oStar = document.getElementById("star");

    var oLi = oStar.getElementsByTagName("li");

    var oUl = oStar.getElementsByTagName("ul")[0];

    var oP = oStar.getElementsByTagName("p")[0];
    var oSpan = oP.getElementsByTagName("span")[0];

    var iScore = iStar = 0;

    var message = ['很不满意', '不满意', '一般', '满意', '非常满意'];
    var index=0;

    var onoff=false;
    for (var i = 0; i < oLi.length; i++) {
   
   
        oLi[i].index = i;
        oLi[i].onmousemove = function () {
   
   
            oSpan.innerHTML=message[this.index];
            _showStar(this.index);
        }
        oLi[i].onmouseout = function () {
   
   
            if(onoff==false){
   
   
                oSpan.innerHTML="默认";
            }
            _showStar();
        }

        oLi[i].onclick = function () {
   
   
            iStar = this.index;
            index = this.index;  
            onoff=true;
            if(onoff==true){
   
   
                oSpan.innerHTML=message[this.index];
            }
        }

    }

    oUl.onmouseout=function (){
   
   
        oSpan.innerHTML=message[index];
    }

    function _showStar(_index) {
   
   
        iScore = _index+1 || iStar+1
        for (var i = 0; i < oLi.length; i++) {
   
   
            if(i<iScore){
   
   
                oLi[i].className='active';
            }else{
   
   
                oLi[i].className='';
            }
        }
    }

}

结束

怎么样,其实要实现这个效果的思路很简单,你有基础的情况下,学了几天JS就能够读懂其中的含义!

相关文章
|
24天前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
24天前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
1天前
|
JavaScript 前端开发 开发工具
【JavaScript 与 TypeScript 技术专栏】TypeScript 如何提升 JavaScript 代码的可读性与可维护性
【4月更文挑战第30天】TypeScript 提升 JavaScript 代码的可读性和可维护性,主要通过静态类型系统、增强代码组织、智能提示与错误检测、文档化和在大型项目中的优势。静态类型减少误解,类和接口提供结构,智能提示提高编码效率,类型注解充当内置文档。在大型项目中,TypeScript 降低理解差异,平滑迁移现有 JavaScript 项目,助力提高开发效率和项目质量。
|
4天前
|
前端开发 JavaScript 调度
原生JavaScript实现弹幕组件
原生JavaScript实现弹幕组件
|
7天前
|
JavaScript 前端开发 BI
原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)
原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)
10 1
|
9天前
|
JavaScript 前端开发 算法
< JavaScript小技巧:如何优雅的用【一行代码 】实现Js中的常用功能 >
在开发中,采用简洁的语法和结构,遵循一致的命名规范,具有良好的代码组织和注释,能很好的提高代码的质量。可读性:易于阅读和理解。清晰的命名、简洁的语法和良好的代码结构可以使代码的意图更加明确,降低理解代码的难度,提高代码的可读性。可维护性:易于维护。当代码逻辑清晰、结构简洁时,开发者可以更快速地定位和修复bug,进行功能扩展或修改。同时,可读性高的代码也有助于后续的代码重构和优化。可扩展性:更具有扩展性和灵活性。清晰的代码结构和简洁的代码风格使得添加新功能、修改现有功能或扩展代码更加容易。
< JavaScript小技巧:如何优雅的用【一行代码 】实现Js中的常用功能 >
|
9天前
|
前端开发 JavaScript 容器
JavaScript、CSS像素动画特效代码
此示例创建一个带有像素粒子的容器,每隔300毫秒就会动态添加一个新的像素粒子,然后通过CSS的关键帧动画(`@keyframes`)使它们产生上升和逐渐消失的动画效果。你可以根据需要修改像素粒子的颜色、大小、动画效果和创建速度。
11 0
|
10天前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。
|
10天前
|
JSON 前端开发 JavaScript
JavaScript原生实现AJAX技术详解
【4月更文挑战第22天】本文详细介绍了使用原生JavaScript实现AJAX技术,包括基本原理和步骤。AJAX借助`XMLHttpRequest`对象实现异步通信,允许网页在不刷新情况下与服务器交换数据。文中提供示例展示了如何创建请求、设置回调函数、处理响应数据以及设置请求头和发送不同类型的数据。此外,还讨论了跨域问题及其解决方案,如CORS和JSONP。掌握这些基础知识对前端开发者至关重要,尽管现代框架提供了更高级的抽象。
|
15天前
|
JavaScript
js校验统一社会信用代码
js校验统一社会信用代码
19 0