用css制作星级评分

2023-12-14css教程
161

下面是用CSS制作星级评分的完整攻略。

1. 确定HTML结构

首先,需要为星级评分定义一个HTML结构。一般来说,使用无序列表(ul)和列表项(li)来实现星级评分。每个列表项代表一个星星,通过列表项的class属性来控制星级的样式和状态。

例如,以下是一个基本的HTML结构:

<ul class="rating">
  <li class="star"></li>
  <li class="star"></li>
  <li class="star"></li>
  <li class="star"></li>
  <li class="star"></li>
</ul>

其中,ul元素的class属性用于指定整个星级评分的样式,li元素的class属性用于指定星星的样式和状态。

2. 定义基本样式

接下来,需要为星级评分定义一些基本样式,如星星的颜色、大小、边框等。同时还需要定义未选中状态和选中状态的样式。

例如,以下是一些基本的CSS样式:

ul.rating {
  list-style: none;
  margin: 0;
  padding: 0;
}

ul.rating li {
  display: inline-block;
  width: 24px;
  height: 24px;
  margin: 0;
  padding: 0;
  background: url(star.png) no-repeat left top;
  text-indent: -9999px;
}

ul.rating li.star {
  background-position: left top;
}

ul.rating li.star.selected {
  background-position: left bottom;
}

其中,ul.rating样式用于设置整个星级评分的基本样式,ul.rating li样式用于设置星星的基本样式,ul.rating li.star样式用于表示未选中状态的星星样式,ul.rating li.star.selected定义了被选中的星星样式。

在上面的CSS样式中,我们使用了一个星型图片star.png,并通过background属性设置了星星的背景图案。其中,ul.rating li.star使用图案的顶部部分,ul.rating li.star.selected使用图案的底部部分,这样就能够实现选中状态的效果。

3. 使用JavaScript实现交互效果

通过上面的CSS样式,我们已经成功地定义了星级评分的样式。但是,需要通过JavaScript来实现鼠标滑过和点击的交互效果。

例如,以下是一个使用jQuery库实现星级评分交互效果的示例:

$('ul.rating li').hover(
  function() {
    $(this).prevAll().addBack().addClass('hover');
  },
  function() {
    $(this).prevAll().addBack().removeClass('hover');
  }
);

$('ul.rating li').click(function() {
  $(this).prevAll().addBack().addClass('selected');
  $(this).nextAll().removeClass('selected');
});

其中,使用了jQuery的hover方法和click方法来分别处理鼠标滑过和点击事件。hover方法接受两个函数作为参数,第一个函数用于处理鼠标进入时的事件,第二个函数用于处理鼠标离开时的事件。通过$(this)获取当前li元素,再使用prevAll()方法获取它前面的所有元素,使用addBack()方法将它自己也加入选中的元素列表中,最后使用addClass()方法和removeClass()方法来控制元素的样式。

click方法中,使用了类似的方法来实现点击事件的效果。首先,将当前元素和它前面的所有元素添加selected类,表示它们被选中。然后,将当前元素后面的所有元素移除selected类,表示它们未被选中。

示例应用

下面举两个示例来展示如何应用星级评分:

示例1:使用Font Awesome字体库

如果你已经使用了Font Awesome字体库,可以直接使用它提供的星星图标来实现星级评分。只需要在li元素上添加正确的Font Awesome样式即可。例如:

<ul class="rating">
  <li class="fa fa-star"></li>
  <li class="fa fa-star"></li>
  <li class="fa fa-star"></li>
  <li class="fa fa-star-half"></li>
  <li class="fa fa-star-o"></li>
</ul>

其中,fa-star表示整个星星,fa-star-half表示半个星星,fa-star-o表示未选中的星星。可以根据需求使用不同的图标组合来实现不同的评分效果。

示例2:使用CSS渐变效果

如果你想要添加渐变效果,可以使用CSS的渐变属性。例如,以下是一个使用线性渐变实现星级评分的示例:

ul.gradient-rating li {
  background: -moz-linear-gradient(top, #FFDA44 5%, #FFDA44 5%, #FFFFFF 5%, #FFFFFF 100%);
  background: -webkit-linear-gradient(top, #FFDA44 5%,#FFDA44 5%,#FFFFFF 5%,#FFFFFF 100%);
  background: linear-gradient(to bottom, #FFDA44 5%,#FFDA44 5%,#FFFFFF 5%,#FFFFFF 100%);
  border-top: 1px solid #D6D6D6;
  border-right: 1px solid #D6D6D6;
  border-bottom: 1px solid #D6D6D6;
}

ul.gradient-rating li:last-child {
  border-right: none;
}

其中,使用了CSS渐变属性来设置星星的渐变效果,保存评分的序号,都是和前面定义的样式一样的,只是换了背景色。同时,为了显示出星星之间的间隔,加上了一些边框样式。

这个实现方式虽然比较复杂,但可以满足一些更加复杂的设计需求。

The End

相关推荐

背景图片自适应浏览器分辨率大小并自动拉伸全屏代码
下面是“背景图片自适应浏览器分辨率大小并自动拉伸全屏”的完整攻略。...
2023-12-15 css教程
367

简单但很实用的5个css属性
下面是详细讲解“简单但很实用的5个CSS属性”的完整攻略:...
2023-12-15 css教程
34

我的css框架——base.css(重设浏览器默认样式)
第一步:创建项目文件夹...
2023-12-15 css教程
195

兼做美工之导航条制作过程分享
以下是兼做美工之导航条制作过程分享的完整攻略:...
2023-12-15 css教程
15

JS 控制CSS样式表
JS 控制 CSS 样式表的方式主要有两种:通过修改样式属性来修改元素样式,以及通过切换 CSS 类名来切换元素样式。下面分别给出具体的步骤和示例说明。...
2023-12-15 css教程
25

Html5实现首页动态视频背景的示例代码
实现首页动态视频背景,可以使用HTML5的video标签,下面是具体的示例代码和操作步骤:...
2023-12-15 css教程
397