纯css实现星级评分效果

效果

效果图如下


星级评分

实现思路:

  1. 5个类型为radio的input,abel标签修改样式背景图为星星
  2. label标签给每个星星鼠标停留时加注名字
  3. 点击星星有放大旋转的动画

dom结构

用form实现

<form>
    <div class="star">
        <input type="radio" id="rate5" name="rating" value="5">
        <label for="rate5" title="Amazing"></label>
 
        <input type="radio" id="rate4" name="rating" value="4">
        <label for="rate4" title="Good"></label>
 
        <input type="radio" id="rate3" name="rating" value="3">
        <label for="rate3" title="Average"></label>
 
        <input type="radio" id="rate2" name="rating" value="2">
        <label for="rate2" title="Not good"></label>
 
        <input type="radio" id="rate1" name="rating" value="1">
        <label for="rate1" title="Terrible"></label>
    </div>
</form>

css样式

css按步骤来实现
1、星星图片样式

首先是星星图片嘛~


星星
.star{
    display: block;
    position: relative;
    width: 150px;
    height: 60px;
    padding: 0;
    border: none;
}
 
.star > input{
    position: absolute;
    margin-right: -100%;
    opacity: 0;
}
 
.star > label{
    position: relative;
    display: inline-block;
    float: right;
    width: 30px;
    height: 30px;
    color: transparent;
    background-image: url("../rotate-star/images/starIcon.png");
    background-repeat: no-repeat;
}

2、点击星星的时候,灰星星变黄星星,顺便把input点击的外边框去掉,巨丑

.star > input:focus + label{
    outline: none;
}
 
.star > input:checked~label,
.star > input:focus~label,
.star > input:hover~label{
    background-position: 0 -30px; 
}

3、通过before伪元素,新增一个隐藏着的星星,来做旋转放大的动画

.star > label:before{
    display: none;
    position: absolute;
    content: " ";
    width: 30px;
    height: 30px;
    background-image: url("../rotate-star/images/starIcon.png");
    background-repeat: no-repeat;
    bottom: 0;
}
 
.star > input:checked + label:before{
    display: block;
    animation-name: rotateStar;
    animation-duration: 1s;
    animation-fill-mode: forwards;
}
 
@keyframes rotateStar{
    0%{
        transform: scale(1) rotate(0);
    }
 
    95%{
        transform: scale(4) rotate(90deg);
        opacity: 0;
    }
 
    100%{
        transform: scale(1) rotate(0);
        opacity: 0;
    }
}

OK,按着步骤来,你也可以在你的页面上实现酷炫的星级评分效果咯~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,342评论 0 11
  • CSS参考手册 一、初识CSS3 1.1 CSS是什么 CSS3在CSS2.1的基础上增加了很多强大的新功能。目前...
    没汁帅阅读 3,723评论 1 13
  • 【Android 动画】 动画分类补间动画(Tween动画)帧动画(Frame 动画)属性动画(Property ...
    Rtia阅读 6,260评论 1 38
  • display: none; 与 visibility: hidden; 的区别 联系:它们都能让元素不可见 区别...
    纹小艾阅读 1,699评论 0 1
  • 你喜欢公主吗? 你想做一个公主吗? 你有公主情结吗? 你有公主病吗? …… 那么,请跟着菲利普·勒榭米耶和海贝卡·...
    天使鱼001阅读 1,039评论 2 9