Css框架之星星评价功能

news2024/9/21 8:00:25

我一直将自学的系统叫做CSS框架,其实这是一个Css+Javascript+Html的代码框架,更准确的说应该叫前台框架。这类前台框架,我一直用先写CSS代码,后写JavaScript,最后记录HTML代码,实际在开发中,我喜欢不停地切换Css,Html和JavaScript之间撰写代码,这样不会因为我记性差而忘记,但这样开发有一个毛病,就是效率有点低,整体把握不好。这节主要实现星星评价功能,我采用背景填充+宽度,可现实半颗星。具体效果如下:请添加图片描述

一、Css代码

.myth-star {background: url(img/star-d.png);font-size: 0;line-height: 0;margin-right: 5px;}
		.myth-star span{width: 24px;height: 24px;display: inline-block;cursor: pointer;}
		.myth-star-show{background: url(img/star-s.png);}

这段代码中我们需要两张图片,一张是没有选择的灰白色星星图片,一张是选择的黄色的星星图片。

二、JavaScript代码

这里分两段代码,一段代码是实现,鼠标滑入评价星星变为黄色,滑出恢复原样,单击显示最后您选择的评分,星星对应显示黄色,并返回调用函数。代码如下:

star:function(options, callback){
			var defaults = {
				title:'评分:',
				starNumber: 5,
				onestarScore:1
			}
			var options = extend(defaults, options);
			//标题
			var objTitle = document.createElement("span");
			objTitle.innerHTML=defaults.title;
			objTitle.classList.add("float-left");
			this.appendChild(objTitle);
			//评分星星选择
			var objStarBg = document.createElement("div");
			objStarBg.classList.add("myth-star");
			objStarBg.classList.add("float-left");
			this.appendChild(objStarBg);
			//评分结果显示
			var scoreBox = document.createElement("strong");
			scoreBox.classList.add("float-left");
			this.appendChild(scoreBox);	
			//鼠标滑动显示评分星星,单击确定评分
			var isStar=true;			
			var starobj = new Array;
			for (var i = 0; i < defaults.starNumber; i++) {
				var obj = document.createElement("span");
				obj.id=i;
				starobj[i]=obj;
				objStarBg.appendChild(obj)
			}
			for (var i = 0; i < starobj.length; i++) {
				starobj[i].onmouseover=function(){
					if(isStar){
						for (var j = 0; j <= this.id; j++) {
							starobj[j].classList.add("myth-star-show");
							scoreBox.innerHTML = Number(defaults.onestarScore)*(Number(this.id)+1)+ "分";
						}
					}
				}
				starobj[i].onmouseleave=function(){
					if(isStar){
						for (var j = 0; j <= this.id; j++){
							starobj[j].classList.remove("myth-star-show");
						}
						scoreBox.innerHTML ="";
					}
				}
				starobj[i].onclick=function(){
					isStar=false;
					for (var j = 0; j < starobj.length; j++) {
						if(j<=this.id){
							starobj[j].classList.add("myth-star-show");
						}
						else
						{
							starobj[j].classList.remove("myth-star-show");
						}						
					}
					scoreBox.innerHTML = Number(defaults.onestarScore)*(Number(this.id)+1)+ "分";
					if (!callback) {
						return;
					}
					else{
						callback((Number(this.id)+1)*defaults.onestarScore);
					}
				}
			}
		},

另一段代码如下,这段代码主要实现,显示评分结果,可以半颗星星显示。

starshow:function(options, callback){
			var defaults = {
				title:"宝贝描述:",
				starNumber: 5,
				onestarScore:1,
				scoreToal:0
			}
			var options = extend(defaults, options);
			var objTitle = document.createElement("span");
			objTitle.innerHTML=defaults.title;
			objTitle.classList.add("float-left");
			this.appendChild(objTitle);
			var objStarBg = document.createElement("div");
			objStarBg.classList.add("myth-star");
			objStarBg.classList.add("float-left");
			objStarBg.style.width=Number(defaults.starNumber*24)+'px';;
			objStarBg.style.height="24px";
			objStarBg.innerHTML='<div style="width: '+(24*Number(defaults.scoreToal)/Number(defaults.onestarScore))+'px;height: 25px;" class="myth-star-show"></div>';
			this.appendChild(objStarBg);
			var scoreBox = document.createElement("strong");
			scoreBox.classList.add("float-left");
			if(defaults.scoreToal!=0)
			{
				scoreBox.innerHTML =defaults.scoreToal+"分";
			}
			this.appendChild(scoreBox);			
		}

三、Html代码

上述无论是Css代码还是Javascript代码,均需要加入我们以前的基本框架内。html通过以下两行代码引入到Html中。

<link rel="stylesheet" href="css/myth.css">
<script src="js/myth.js"></script>

下面代码是调用展示和调用:

<div class="mythBox mid">
	<div class="clearfix" id="mystart"></div>	
	<div class="clearfix" id="mystart2"></div>	
</div>
<script>
	myth("#mystart").star({},function(d){
	console.log('您选择的评分是'+d+'分')
	});
	myth("#mystart2").starshow({title:"新宝贝评价:",scoreToal:2.5})
</script>

四、参数说明

1.评分功能需要两个参数,一是json数据,一些基本属性,如下表。

序号参数名默认值说明
1title标题:评分显示标题
2starNumber5显示星星数量
3onestarScore1每颗星星的分数

我已在Javascript中已全部进行了默认设置。另一个参数是回调函数,回调函数返回选择评分。例如:

myth("#mystart").star({starNumber:6},function(d){
	console.log('您选择的评分是'+d+'分')
);

2.展示评分功能需要一个Json数据类型参数,我也在Javascript中已全部进行了默认设置,具体如下。

序号参数名默认值说明
1title标题:宝贝描述:
2starNumber5显示星星数量
3onestarScore1每颗星星的分数
4scoreToal0显示总分数

具体代码如下:

myth("#mystart2").starshow({title:"新宝贝评价:",scoreToal:2.5})

需要源代码的请单击下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1080660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络第四章——网络层(末)

赌书消得泼茶香当时只道是寻常 文章目录 概述&#xff1a;组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机&#xff0c;并被它们正确接收&#xff0c;组播仅应用于UDP 因特网中的IP组播也使用组播组的概念&#xff0c;每个组都有一个特别分配的…

基于Springboot实现垃圾分类网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于Springboot实现垃圾分类网站管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个垃圾分类网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述垃…

2024王道考研计算机组成原理——计算机硬件的基础知识

计算机组成原理的基本概念 计算机硬件的针脚都是用来传递信息&#xff0c;传递数据用的&#xff1a; 服务程序包含一些调试程序&#xff1a; 计算机硬件的基本组成 控制器通过电信号来协调其他部件的工作&#xff0c;同时负责解析存储器里存放的程序指令&#xff0c;然后指挥…

95837-47-1,羧基衍生物ICG(indocyaninegreen)

Cypate是一种高效的光热转换化合物&#xff0c;是通过在ICG&#xff08;indocyanine green&#xff09;分子结构中引入羧基基团而得到的衍生物。与母体染料ICG相比&#xff0c;它具有更强的疏水性和更好的结构稳定性&#xff0c;这使得它在生物医学应用中具有更高的稳定性和更广…

PCL点云处理之移动最小二乘MLS的点云去噪与法线计算效果 (二百零九)

PCL点云处理之移动最小二乘MLS的点云去噪与法线计算效果 (二百零九) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 PCL提供的移动最小二乘MLS算法,可以对原始点云进行快速的去噪和法线计算,用于后续其他处理,这里是简单的代码实现,直接复制粘贴即可使用,邻域点的…

计算机毕业设计选题推荐-springboot 网上手机销售系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

element树形控件单选

需求功能&#xff1a; 1&#xff0c;element树形控件单选 2&#xff0c;双击节点编辑 <div style"height: calc(100% - 48px)"><el-scrollbar class"scrollbar-wrapper"><el-tree :data"treesObj" show-checkbox default-expan…

Springcloud笔记(1)-微服务和springcloud介绍

微服务简介 就是将一个大的应用&#xff0c;拆分成多个小的模块&#xff0c;每个模块都有自己的功能和职责&#xff0c;每个模块可以 进行交互&#xff0c;这就是微服务对于微服务&#xff0c;业界没有严格统一的定义&#xff0c;但是作为“微服务”这名词的发明人&#xff0c;…

水球展示——微信小程序

html <view class"water"><view class"text">完成率{{list.finish}}%</view><view class"img" style"height: {{list.finish}}%"><image src"../../image/water.jpg" mode"" />&l…

【使用 TensorFlow 2】01/3 中创建和训练自定义层

之前我们已经看到了如何创建自定义损失函数 接下来&#xff0c;我写了关于使用 Lambda 层创建自定义激活函数的文章 一、说明 TensorFlow 2发布已经接近2年时间&#xff0c;不仅继承了Keras快速上手和易于使用的特性&#xff0c;同时还扩展了原有Keras所不支持的分布式训练…

什么是物联网阀控水表?

物联网阀控水表是一种新型的水表&#xff0c;结合了物联网技术和传统水表的功能&#xff0c;可以实现对水的计量、控制和管理。随着人们对水资源的日益重视&#xff0c;物联网阀控水表的应用越来越广泛&#xff0c;为水资源的合理利用和管理提供了有效手段。 物联网阀控水表是由…

springboot json在线转换为实体类

json字符串映射到一个实体类。 这里有一个在线转换工具 http://www.bejson.com/json2javapojo/new/ 截图如下&#xff1a;

软件测试可以发现所有Bug吗,软件测评机构有哪些优势?

软件产品的质量要想得到保障&#xff0c;软件测试这项工作必不可少&#xff0c;主要是在测试过程中提前发现问题&#xff0c;用来促进鉴定软件的正确性、完整性、安全性和质量的过程。那软件测试可以发现所有bug吗?   我们要明确的是&#xff0c;软件测试是一项非常重要的工…

阿里云企业邮箱的替代方案有哪些?

"阿里云企业邮箱有哪些替代方案&#xff1f;替代方案有Zoho Mail、腾讯企业邮箱、网易企业邮箱、搜狐企业邮箱、新浪企业邮箱等。" 在中国的云计算市场中&#xff0c;阿里云企业邮箱无疑是一颗璀璨的明星。然而&#xff0c;市场上的需求多元化使得消费者在选择云服务…

el-select的el-option添加操作按钮插槽后实现勾选与按钮操作分离

这里我在el-option的选项文字后面添加了两个svg按钮&#xff08;编辑和删除&#xff09;&#xff1a;如图 当我们点击el-option时无法区分是勾选el-option还是点击了el-option选项文字后面的按钮&#xff0c;其实只要在后面的编辑和删除的操作按钮的click事件上面添加.native.…

速通Redis基础(三):掌握Redis的列表类型和命令

目录 Redis列表类型 Redis列表的基本命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP RPOP LINDEX LINSERT LLEN 阻塞版本命令 BLPOP BRPOP Redis的列表命令小结 Redis是一种高性能、开源的NoSQL数据库&#xff0c;以其支持多种数据类型而闻名。在前两篇博客中&am…

【数据结构】线段树

算法提高课笔记 还未更新完 文章目录 原理pushupbuildmodifyquerypushdown&#xff08;懒标记 / 延迟标记&#xff09;扫描线法 原理 时间复杂度&#xff1a;O(logn) 线段树是一棵二叉树&#xff0c;把一段区间分成多个部分 类似堆的方式&#xff0c;用一维数组存整棵树 对…

远场Far-Field beamforming与近场Near-Field beamforming有何关系

这里写目录标题 UPA![在这里插入图片描述](https://img-blog.csdnimg.cn/170e1282d2d6424595263daf77707234.png)写在前面Channel Estimation for Extremely Large-Scale Massive MIMO:Far-Field, Near-Field, or Hybrid-Field?Far Field modelNear Field model UPA 写在前面…

Java内存空间(学习随笔)

1、程序运行中栈可能会出现两种错误 StackOverFlowError&#xff1a; 若栈的内存大小不允许动态扩展&#xff0c;那么当线程请求栈的深度超过当前 Java 虚拟机栈的最大深度的时候&#xff0c;就抛出 StackOverFlowError 错误。OutOfMemoryError&#xff1a; 如果栈的内存大小可…

音视频方法技术有哪些?H.265技术详解

H.265发展背景 H.264虽然是一个划时代的数字视频压缩标准&#xff0c;但是随着数字视频产业链的高速发展&#xff0c;H.264的局限性逐步显现&#xff0c;并且由于H.264标准核心压缩算法的完全固化&#xff0c;并不能够通过调整或扩充来更好地满足当前高清数字视频应用。 视频…