`
caibinghong
  • 浏览: 143272 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

CSS实现星状评分效果 – CSS Star Rating

 
阅读更多

CSS实现星状评分效果 – CSS Star Rating

有一个场景,相信大家不会感到陌生,那就是我们购物之后对商家、物流、商品等进行评价,其中有一个直观的交互就是星状打分,这种交互方式增强了用户对商品评价的直观感受,更贴近用户的行为习惯,这是一种非常棒的设计。

从技术的角度来说,利用html+css就能完全搞定这种交互效果,好多童鞋都以为是js实现的呢,有木有~~~,哈哈。肯定有.
不得不说,这效果都是从墙外传过来的,我们玩的都是现成。~~~~~~

交互流程:

首先,我们来顺一下这个交互的流程~~~

  1. 待打分状态,5个空心的五角星 
  2. 鼠标滑过每颗星,显示分值预览效果,
  3. 已打分状态,你打了3分,那显示的效果就是前三颗星呈打分状态 

实现思路:

  1. 鼠标移动到第一颗星上即:a:hover,我们可以利用background-position来得到想要的效果,这个很简单
  2. 鼠标移动到第二颗星,我们怎么让第一颗星也显示黄色的星星呢,鼠标移动到第3颗星,我们怎么让前三颗星都是黄色状态呢,这个问题得好好考虑,我们以第三颗星为例,鼠标移动到第三颗星,要让前两颗星都同时呈现黄色状态,除非我们把第三颗星的宽度加宽,宽到能覆盖前两颗星,然后利用第三颗星的黄色背景平铺来制造一个前两颗星都呈黄色的假象。
  3. 还有一个问题是 我们怎么从第三颗星的hover状态顺利切换到第二颗星呢,这就需要z-index来实现,z-index能实现层次关系,只有把a全部置于最高层,a:hover置于次顶层,这样才能实现a:hover和a的随意切换。
  4. 还有一个状态我们需要考虑,如果目前呈现的是4颗星,而我们在即将打2分,就是鼠标移到第二颗星上进行打分,那么第三颗星,和第四颗星都是呈现被打分状态,这样就总共出现了3种状态,给人的感觉就是不干净,感觉有点怪怪的,不过我们可以利用a:hover把第二颗星的宽带加宽到5颗星的宽度,这样第二颗星就能控制整个5颗星的显示了。这是一个不错的技巧。

技术要点:

  1. 利用a标签的hover来进行状态的改变
  2. 利用css的background-position来进行不同背景的改变
  3. 利用css的定位来实现位置的固定
  4. 最重要的:z-index,来进行层次的固定,从a1的hover切换到a2的hover,就得靠这个。

实现流程:

  1. 准备结构清晰的html代码:
  2. 1 <ul class="rating nostar">
    2    <li class="one"><a title="1 Star" href="#">1</a></li>
    3    <li class="two"><a title="2 Stars" href="#">2</a></li>
    4    <li class="three"><a title="3 Stars" href="#">3</a></li>
    5    <li class="four"><a title="4 Stars" href="#">4</a></li>
    6    <li class="five"><a title="5 Stars" href="#">5</a></li>
    7 </ul>
  3. 接下来,我们实现显示分值状态,即待打分状态和已打分状态,我们统称为分值状态,那么分值状态我们怎么实现呢? 其实很简单,只要改变<ul>的背景就能实现,事先要准备这样一张图片背景图片,这张图片就代表了6种不同的状态,分别是0分(待打分),1分、2分、3分、4分、5分,6种状态,6个对应的class:.nostar,.onestar,.twostar,.threestar,.fourstar,.fivestar,
  4. 接下来我们实现交互,就是hover状态,基于各浏览器兼容情况考虑,我们选择支持最好的a:hover,即每个交互元素应该是a元素,要触发不同的a:hover,我们就要排布a的位置,这里可以用定位来实现,每颗星width=16px来计算的话,我们可以得到如下的css:
    现在,位置已经排好了,鼠标就能随时的触发hover了,下一步就要实现a:hover的效果。
  5. 1 ul.rating li.one a {left:0}
    2 ul.rating li.two a {left:16px;}
    3 ul.rating li.three a {left:32px;}
    4 ul.rating li.four a {left:48px;}
    5 ul.rating li.five a {left:64px;}
    6 ul.rating li a {
    7        position:absolute;left:0;top:0;width:16px;height:16px;text-decoration:none;z-index200;
    8  }
  6. 我们也要像第二步一样,要准备几张不同的状态背景图,即:,第一个a对应1分,第二个a对应2分,以此类推,第5个a对应5分,但是有个要点是值得注意的,a:hover时width设置为5颗星的宽度,而且z-index必须比a的z-index低,例如:a{z-index:20;},a:hover{z-index:10},只要这样才能轻易的在不同a之间切换,如果a:hover的z-index高于a的z-index,那么鼠标移动到a上 ,我们永远切换不到另一个a上,因为另外4个a被当前a所覆盖了,这一点是这个效果最核心的技巧。
  7. 对于背景图片来说,我们最好整合到一张图片里,最终的背景是:

好了,这个效果到这里就算完成了,里边用到的技巧都是很灵活的,让你有一种茅塞顿开的感觉,有木有~~,比如a:hover从平时的改变颜色,加个下划线,到这里就变成了改变left,改变width这样的位置属性,这大大拓展了我们的思路,不得不说外国人的创新意识真的比国人强。

DEMO: http://classjs.com/demo/star/star.html

分享到:
评论

相关推荐

    WordPress文章及评论评分插件GD Star Rating

    文章投票插件,我们之前也做过介绍,今天我们再来介绍一款评分类插件GD Star Rating,这款插件虽然没有WP-PostRatings插件(星星、爱心...),那么多样式图标,但是,它的评论的功能更加的全面,也更加的丰富。...

    bootstrap-star-rating:一个简单但功能强大的JQuery星级评分插件,支持分数评分

    引导星级 一个简单但功能强大的用于Bootstrap的JQuery星级评定插件,它支持高级功能,例如分数星级... 如果您将其输入设置为class = rating则该插件会自动将输入转换为星级评分控件。 输入的所有选项都可以作为HTML5 d

    jquery插件star-rating.js实现星级评分特效

    jquery星级评分插件star-rating.js下载插件,点击星星或者心的左边,就是半分,右边就是1分。点击减号,分数置为0。不兼容IE8以下的浏览器。 演示图 使用方法 第一步、引入下面的代码: 代码如下: &lt;link href=...

    star_rating

    星状评分系统,ajax 做的确

    jQuery鼠标滑过五角星打分星级评分代码.zip

    代码片段:  $(function () {  //评分  var starRating = 0;... $('.photo span').on('mouseenter',function () { ... $(this).prevAll().find('.high'...'评分:' (starRating.toFixed(1&#41; '分'))  })

    Ajax-bootstrap-star-rating-codeigniter.zip

    Ajax-bootstrap-star-rating-codeigniter.zip,带编码器点火器的动态自举星级评定,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小...

    CSS 星级评价效果代码

    先来个截图:效果很简单,可能现在您现在脑子里已经有实现的思路了。下面先看一下我们通常情况下的实现方法:CSS: 代码 复制代码代码如下: .jsstar { list-style: none; margin: 0px; padding: 0px; width: 100px;...

    jQuery评分插件BootstrapStarRating.zip

    Bootstrap Star Rating 是用于 Bootstrap 上的一个简单有效的 jQuery 评分插件,它支持分数星级填充及 RTL 输入支持等高级功能。开发的重点是利用纯 CSS-3 风格去呈现这个控件。此插件用 Bootstrap 标记并且设置为...

    jquery-star-rating-plugin:评分插件jQuery

    jquery-star-rating-plugin 评分插件jQuery 一个简单的星级插件,使用Googles Materialize Icons。演示版可以在或示例HTML文件中查看演示。要求jQuery的访问Google Materialize图标( )。 请参阅示例HTML文件。用法...

    jquery五角星评分效果代码

    (star.on || self.opt.starOn) : (star.off || self.opt.starOff); } else { icon = (i ) ? (star.on || self.opt.starOn) : (star.off || self.opt.starOff); } if (i &lt;= star.range) { $star.attr('src', ...

    yii2-widget-rating:一个Yii2小部件,用于简单但功能强大的引导星级评分插件,并支持分数评分(从yii2-widgets拆分子仓库)

    yii2-widget-rating StarRating小部件是Krajee设计的 JQuery插件的包装。 该插件是用于Bootstrap的简单但功能强大的JQuery星级评分插件。 着重开发纯CSS-3样式来呈现控件。 注意:此扩展是的子拆分。 自2014年11月8...

    Rating-Stars:一种显示 5 星评级的方法

    一种显示 5 星评级的方法。 查看 支持 Rating Stars 在 Chrome、FireFox、Safari 和 IE7+ 中进行了测试。 包括 fallback.css 以支持 IE7 和 IE8。 方法 Rating Stars 使用带有白色背景和透明星星的 svg 或图像叠加...

    Angular-angular-star-rating.zip

    Angular-angular-star-rating.zip,基于css技术,用字体书写的额定角组件。额定角,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发...

    raty::star2:Raty-星级评分插件

    Raty-星级评分插件 Rails评级? 这是等级: : :white_medium_star: 图片使用 jquery.raty.js star-off.png star-on.png &lt; script src =" jquery.raty.js " &gt; &lt;/ script &gt; &lt; div&gt; $ ( 'div' ) . ...

    jQuery星级评分功能插件(兼容IE6,IE7, IE8, Firefox, Opera, Chrome, Safari)

    下载了一些jQuery鼠标滑过星级评分的插件,比如jQuery Star Rating Plugin V3.12,还有Sexy Vote。发现兼容性不好,有的在firefox下有问题,有的在IE6,7,8下有问题,大家可以自己测试一下。只好自己修改了一下一个...

    star-field-for-backpack:为Laravel背包添加“星型”字段类型

    star字段允许管理员以更漂亮的方式更改整数变量的值,以便对商品进行评分。 它使用仅CSS的解决方案,因此它具有零外部依赖关系和零javascript。屏幕截图安装通过作曲家composer require soufiene-slimi/star-field-...

    react-rater::white_medium_star:互动式和可定制的星级

    React评价者星评 安装npm install react-raterimport Rater from 'react-rater'import 'react-rater/lib/react-rater.css'// ...render ( ) { return ( &lt; Rater xss=removed xss=removed&gt; )}API ...

    ace-admin1.3.2 html5后台

    Star rating plugin Dual listbox plugin Bootstrap multiselect plugin Gruntfile.js build file * Enhancements: Navbar dropdowns automatically become modal like on small devices Updated sidebar ...

    Muhammad Usman Charisma-基于HTML5 Bootstrap搭建的后台模板

    •Star Rating •Toggle Switch •Tag Boxes •Rich Text Editor •Date Picker •Multiple File Upload •Slider •Dialog Box •Auto Growing Textarea •Ajax Loaders •Progress Bars •Alerts •Pop ...

Global site tag (gtag.js) - Google Analytics