`
yiminghe
  • 浏览: 1460175 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

灵活的评价星实现

    博客分类:
  • ui
阅读更多

就是cnbeta常见的评价星,更简单灵活:

 

demo

 

 

截图:

 

 

 

 

目标:

 

1.可访问性 ,即使读屏器,css失效,javascript禁用也可正常提交结果。(使用a hover跨浏览器得实现动态改变表现,以及绝对定位的z-index特性使得可以随时鼠标滑动改变星级。)


2.灵活的换肤 ,可以任意设置评价星的颜色。(反模式使用透明星星图片(摘自wordpress),使用YUI3 StyleSheet来修改内嵌星星父元素a的hover背景颜色css,效率高更灵活)

 

 

关键代码:

 

YUI().use("node", "stylesheet", function (Y) {
    //换肤控制
    var skin = Y.one("#skin");
    var skinCss = Y.StyleSheet("#skinCss");
    var opts = "";
    Y.each(Y.Color.KEYWORDS, function (v, k) {
        opts += "<" + "option value='#" + v + "'" + ">" + k + "</option>";
    });
    skin.append(opts);
    skin.on("change", function (e) {
        var v = this.get("value");
        //直接操纵external css
        skinCss.set("ul.rate.operable li a:hover", {
            "backgroundColor": Y.Color.toHex(v)
        });
    });
    skin.set("value", "#f00");
    var rate = Y.one("#rateContainer");
    var rateAs = rate.all("a");
    //js可用,则去除href,注意ie去除后不可hover了
    if (Y.UA.ie) rateAs.on("click", function (e) {
        e.preventDefault();
    });
    else rateAs.removeAttribute("href");
    //js可用,则点击后去除绑定事件以及不再可鼠标掠过改变
    var rateHandler = rate.delegate("click", function (e) {
        this.setStyles({
            "backgroundColor": skin.get("value")
        });
        rate.removeClass("operable");
        e.halt();
        rateHandler.detach();
        alert("选择了" + this.get("title"));
    },
    "a");
});
 

 

实现原理:

 

1. 5个宽度不等的 a 由绝对定位层叠在一起,每个里面都包括透明的星图案 img,且从 a1 到 a5 z-index 从高到低排列,使得在重叠的部分由宽度小的a(星数少)在最上面接收响应:

 

 

2.当相应的a接到响应时:鼠标掠过(hover),则该 a z-index 设为最大,覆盖其他 a,并且设置其背景为红色,着色其包含的对应星图片。

 

.operable a:hover{
   z-index:9999;
   background:red;
}
 

 

 

3.在容器监听 click 事件,当发生click事件时,根据click的发生源 a 判断点击的星数,并且清除父容器的 click 事件以及operable css 类,使得鼠标掠过 hover 的反应不对该容器内的 a 起作用

 

 

  • 大小: 1.7 KB
  • 大小: 1.7 KB
  • 大小: 9.5 KB
0
0
分享到:
评论

相关推荐

    星级评定简单实现

    在IT行业中,星级评定系统是常见的用户评价或评分机制,尤其在电商、餐饮、电影等领域广泛应用。本示例中,我们将探讨如何使用Swift语言自定义一个简单的星级评定系统,无需依赖第三方库,只需要大约60行代码即可...

    jquery 星级评价

    本文将深入探讨如何使用jQuery实现一个自定义的星级评价插件。 **1. 插件的基本结构** 一个基本的jQuery插件通常会包含一个函数,该函数接收参数并扩展jQuery对象。例如,我们可以创建一个名为`starRating`的插件...

    星级评价js-css-png图片.zip

    "星级评价js-css-png图片.zip" 这个文件标题表明这是一个包含JavaScript、CSS和PNG图片资源的压缩包,主要用于实现星级评价功能。其中,“js”代表JavaScript脚本,"css"代表样式表文件,而“png图片”则指的是用于...

    星级评分(支持半星、整星、步长)

    本压缩包提供的资源是一个强大的JavaScript实现,支持半星、整星以及步长评分功能。下面将详细阐述这个评分系统的实现原理和应用场景。 1. **半星评分**: 半星评分允许用户给予更精确的评价,不仅可以选择完整的...

    css★星级★评价软件

    本教程主要关注如何使用CSS来实现一个星级评价系统。 首先,理解星级评价系统的构成。通常,它由一系列星形图标组成,用户可以通过选择星星数量来表达对某个产品或服务的满意度。这些星星可以是静态的图像,也可以...

    基于Vue的星级评分功能

    实现星级评分功能是常见的用户界面交互,常用于产品评价、用户反馈等场景。 首先,我们需要理解Vue的核心概念,包括组件化、数据绑定和指令。Vue中的组件是可复用的代码块,可以封装HTML、CSS和JavaScript,使得...

    android 自定义星级评论可配置大小;数量,显示半星;小数星

    小数星”的实现涵盖了Android自定义组件设计的核心技术,包括事件监听、自定义绘图、动态布局调整以及组件化封装。它充分展示了Android开发中的灵活性和可扩展性,使得开发者可以根据需求定制出更符合用户体验的界面...

    js+CSS 星级评分 多级 通用 实例

    【多级评分】是指用户可以对某一项目进行细粒度的评价,比如1到5星,甚至可以有半星的选择。实现这一功能,开发者需要考虑如何用JavaScript来处理不同级别的评分,以及如何用CSS来显示这些不同的级别。 【通用性】...

    ios-购物评价五角星.zip

    总的来说,"EvaluationStar"项目提供了一个完整且灵活的解决方案,帮助开发者快速集成并自定义五角星评价功能。通过对手势交互的理解和运用,我们可以创建出更直观、更具吸引力的用户界面,从而提高用户的满意度和...

    星级评分的两种实现方式

    这种方法优点是实现简单,但灵活性较低,无法实时更新评分。 第二种实现方式是使用JavaScript(如jQuery)动态交互。这种方式更适用于动态更新和用户交互丰富的场景。我们可以创建一组`&lt;div&gt;`元素,用CSS预定义星星...

    WPF 仿淘宝评级控件

    在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)环境中实现一个仿淘宝评级控件,该控件能够展示用户评价的星级。这个控件是通过绘制五角星来模拟淘宝购物平台上的商品评分系统,它允许用户...

    jquary-五角星评分

    本教程将深入探讨如何使用jQuery实现一个灵活且具有半分评分功能的五角星评分系统。 ### 1. jQuery基础 首先,我们需要了解jQuery库。jQuery是一个轻量级、高性能的JavaScript库,它简化了HTML文档遍历、事件处理...

    vue.js 实现评价五角星组件的实例代码

    本实例将探讨如何使用Vue.js框架来实现一个可配置的评价五角星组件。组件不仅能展示出不同的评分(例如满分五颗星、半颗星、空星等),而且还能支持不同的大小展示。 ### Vue.js 介绍 Vue.js 是一个轻量级的、渐进...

    星级评级分插件

    6. **可配置性**:为了提高插件的灵活性,可以设置各种选项,如默认评级、步进值(每次可选的星数)、是否允许半星等。 7. **回显和预览**:在用户点击前显示他们当前的评级选择,这可以通过改变鼠标悬停时的星星...

    评星选择打分

    综上所述,"评星选择打分"作为用户评价的一种有效手段,其设计和实现涉及到用户界面设计、事件处理、灵敏度控制等多个方面,广泛应用于各个领域,为用户提供了一种便捷、直观的反馈方式。随着技术的发展,这种评分...

    简单jQuery星级评分功能插件

    此外,它还支持半星评分,提供了一种直观的视觉反馈,使用户能够更精确地表达他们的评价。 【标签】"简单jQuery星级评分功能插件"的标签反映了其核心特性: 1. jQuery:这是一个广泛使用的JavaScript库,提供了丰富...

    多个CSS3实现的动画效果不错的星级评分效果.zip

    在网页设计中,星级评分系统是一种常见的用户反馈和评价机制,尤其在电商、评论和评分类网站中广泛应用。本资源“多个CSS3实现的动画效果不错的星级评分效果.zip”提供了利用CSS3技术来创建动态、交互式的星级评分...

    jequry星级评分五星评分raty,亲测能用,java

    这个插件允许用户以直观的星级来表达他们的评价,通常与后端数据库配合,将用户的评分数据存储起来。 标题中的“jequry”可能是指“jQuery”的误拼,而“raty”就是我们要讨论的重点,它是一个用于创建星级评分的...

    swift-FMLStarView简单的星级评价的控件

    FMLStarView是一个专为iOS应用设计的UI控件,它简化了星级评价功能的实现。开发者可以利用这个控件轻松地在应用中集成打分系统,让用户对产品或服务进行一到五星的评价。这种控件通常包括可点击的星星,当用户点击时...

    jQuery Raty星级插件

    3. **半星支持**:jQuery Raty允许用户选择半星评分,增加了评分的精细度,提高了用户体验。 4. **多语言支持**:插件内置了多种语言包,可以根据网站的语言环境轻松切换,提供本地化的评分体验。 5. **自定义样式...

Global site tag (gtag.js) - Google Analytics