css两种动态显示星星等级的比较(一星、两星、三星、四星、五星)

原文:css两种动态显示星星等级的比较(一星、两星、三星、四星、五星)

以下是显示后的图片,相信在很多网站上都能看到这种效果,目前我知道两种实现方式

1、background-position加上一张图片

    图片:http://www.brookstone.com/webassets/pwr/engine/images/stars.gif

  

 

 1 <!DOCTYPE html>
 2 <html>
 3
 4   <head>
 5     <link rel="stylesheet" href="style.css">
 6     <script src="script.js"></script>
 7     <style>
 8            .star{
 9              height: 20px;
10              line-height: 20px;
11              width: 112px;
12              background-image: url('http://www.brookstone.com/webassets/pwr/engine/images/stars.gif');
13              background-position:0 -69px;
14              background-repeat:no-repeat;
15            }
16
17     </style>
18   </head>
19
20   <body>
21     <div class="star"></div>
22
23
24   </body>
25
26 </html>

这是最简单的background-position定位,不过如果还是觉得stars.gif比较大,可以用第二种方法,不过在使用第二种方法之前必须将stars.gif用photoshop裁剪下,裁剪成两个图片,没有金色星星(5颗灰色星星)的和5金色星的两张图片,其他各类星星的都舍去掉,当然我比较懒,下面的demo图片没有用工具裁剪,直接用的原stars.gif。

2、CSS clip 属性

     浏览器支持

    所有主流浏览器都支持 clip 属性。

    clip 属性剪裁绝对定位元素。

    clip::rect (top, right, bottom, left)

    position:absolute 这个必须有

  

<!DOCTYPE html>
<html>

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

           .star1{
             margin:10px 0 0 0;
             height: 20px;
             line-height: 20px;
             width: 112px;
             background-image: url('http://www.brookstone.com/webassets/pwr/engine/images/stars.gif');
             background-position:0 0;
           }
           .star1 .inner{
             height: 20px;
             line-height: 20px;
             width: 112px;
             background-image: url('http://www.brookstone.com/webassets/pwr/engine/images/stars.gif');
             background-position:0 -230px;
             position:absolute;
             clip:rect(0px,61px,21px,0px);
           }
    </style>
  </head>

  <body>

    <div class="star1">
      <div class='inner'></div>
    </div>
  </body>

</html>

这个用rect裁剪的好处是即使你想要1.2颗星星也是可以的,只需要改下clicp的rect第二个参数就行了,61px改为27.6px,clip:rect(0px,27.6px,21px,0px);

计算方式 一个星星23px,1.2颗星星:23+23/10*2=27.6,显示效果:

对比第一种,stars.gif这个图片得不断添加各类值得星星,好处显而易见,第二种灵活图片小,减少传输开销。

备注: .star1样式里面的图片应该是5颗灰色星星,.star1 .inner里的图片应该是5颗金色星星

 

时间: 2024-09-15 08:42:20

css两种动态显示星星等级的比较(一星、两星、三星、四星、五星)的相关文章

CSS 规避脱标之两种用法

大家好,我是小强老师,今天讲解一小点知识哈 对比了才知道什么好 看不出,很漂亮吧! 有木有倾国倾城的美色. 呵呵,好多东西也是这样的,好的东西只有对比了才觉得好. 我们知道我们网页布局 有三模式.   普通流 normal flow (标准流.常规流)    浮动(float)    和  定位 (position)  标准流         标准流实际上就是一个网页内标签元素正常排列的顺序的意思:比如块级元素会独占一行,行内元素会按顺序依次前后排列:按照这种大前提的布局排列之下绝对不会出现列外

js控制页面元素坐标常用的两种方法

文章简介:获取页面中元素到文档区域document的横向.纵向坐标的两种方法及其比较. 获取页面中元素到文档区域document的横向.纵向坐标的两种方法及其比较 在js控制元素运动的过程中,对于页面元素坐标位置的获取是经常用到的,这里主要总结下两种方法: 一:通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现 在阅读javascript高级程序设计第三版DOM部分时,了解到要获取某个元素在页面上的偏移量,需要将这个元素的offsetL

市面上出现的两种数据库审计技术有何差别

在日渐火热的数据库安全领域,数据库审计应该是应用最为广泛,用户接受度最高的产品了,没有之一. 本文将对目前数据库审计市场上的两类技术路线进行分析,从使用效果出发,浅析两者在各维度的审计效果上存在哪些差异,呈现产品真正能实现的功能和价值.希望能为广大用户在数据库审计产品的选型上提供参考依据. 概括来讲,两类数据库审计的技术路线区别,根本来自于两者的部署方式.获取数据库访问记录的途径不同以及SQL解析方式不同,审计效果自然不同. 旁路式VS植入式 从5个衡量维度看技术路线的差异 衡量两种技术路线的差

textview-Android中一个TextView显示两种字体

问题描述 Android中一个TextView显示两种字体 我用了Spannable,实现了两种字体的显示前面是标题,后面是时间,但是,我想让标题在很短的时候,时间就自动换到第二行这个怎么去实现呢?如何进行判断(屏幕大小不一),求解!! 解决方案 SpannableString ss=new SpannableString(str); ss.setSpan( new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 0 , str.length(

ios-(IOS)这两种写法有什么区别???

问题描述 (IOS)这两种写法有什么区别??? 两种写法有一种运行后加载不了数据...第一种:-(NSArray *)messageFrames{ if (_messageFrames == nil) { NSArray *messages = [Message messagesList]; NSMutableArray *temArray =[NSMutableArray array]; for (Message *msg in messages) { MessageFrame *msgfra

Crystal Report在.net中的两种显示方式

原文:Crystal Report在.net中的两种显示方式 Crystal Report在.net中的两种显示方式 编写人:CC阿爸   2014-7-29   近来在完成深圳一公司的项目,对方对各方面要求相当严格,一不满意就拒绝签收,为了对修正水晶报表显示及导出的一些小问题,无赖之下,仔细了解一下水晶报表的操作方法,逼苦我们这些苦逼的程序,虽说在以前的项目中,也常使用crystal report 来制作报表.并且针对web与winform 都各有不同的地方.   但总的来讲:显示水晶报表目前

深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解_Android

今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户

通过两种方式增加从库——不停止mysql服务_Mysql

一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长.另一种是通过xtrabackup工具备份主库,恢复到从库,xtrabackup是物理备份,备份速度快,不锁表.为什么不锁表?因为自身会监控主库日志,如果有更新的数据,就会先写到一个文件中,然后再回归到备份文件中,从而保持数据一致性. 现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库.前提是不能影响线上业务使用,

java两种单例模式用法分析_java

本文实例讲述了java两种单例模式用法.分享给大家供大家参考,具体如下: 按照加载方式的不同,单例模式有两种实现: private:只能在同一个类中使用 static:该类是类方法,不能调用实例方法./类全局变量 final:方法或成员变量不能被修饰 1.饿汉式 public class EagerSigleton{ private static final EagerSigleton instance=new EagerSigleton(); private EagerSigleton(){}