做了一个星星打分效果

1,044 阅读3分钟

我正在参加「创意开发 投稿大赛」详情请看:掘金创意开发大赛来了!

效果演示

背景

之前在做自己的项目的时候有对物体打分的环节,当时采用的是直接文字输入的方式,后来考虑到用户体验就改成了现在星星打分比较便捷,我们来看看具体是怎样实现的。

具体实现

我们先引入cdn


<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/ionicons/4.5.6/css/ionicons.min.css'>

<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

创建一个星星

image.png


<input type="radio" name="rating" id="1" value="1" />
<label for="1"><i class="icon ion-md-star-outline"></i></label>

我们先设置星星的选择内容设置它的元素展示方式为块,主轴方向为从右到左,字体为Ionicons

.rating {
    display: flex;
    flex-direction: row-reverse;
    font-family: "Ionicons";
}

一些总结

image.png

设置星星的图标

.rating label {
    position: relative;
    margin-right: 6px;
    font-size: 5em;
    color: gold;
    cursor: pointer;
    transition: 0.5s;
}
.rating label:hover {
    -webkit-transform: scale(1.2);
    transform: scale(1.2);
}
.rating label::before {
    position: absolute;
    content: "\f384";
    opacity: 0;
    transition: 0.5s;
}

关于cursor 属性规定所显示的指针(光标)的类型。

url需被使用的自定义光标的URL注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标。
default默认光标(通常是一个箭头)
auto默认。浏览器设置的光标。
crosshair光标呈现为十字线。
pointer光标呈现为指示链接的指针(一只手)
move此光标指示某对象可被移动。
e-resize此光标指示矩形框的边缘可被向右(东)移动。
ne-resize此光标指示矩形框的边缘可被向上及向右移动(北/东)。
nw-resize此光标指示矩形框的边缘可被向上及向左移动(北/西)。
n-resize此光标指示矩形框的边缘可被向上(北)移动。
se-resize此光标指示矩形框的边缘可被向下及向右移动(南/东)。
sw-resize此光标指示矩形框的边缘可被向下及向左移动(南/西)。
s-resize此光标指示矩形框的边缘可被向下移动(北/西)。
w-resize此光标指示矩形框的边缘可被向左移动(西)。
text此光标指示文本。
wait此光标指示程序正忙(通常是一只表或沙漏)。
help此光标指示可用的帮助(通常是一个问号或一个气球)。
------

关于transform的总结

none定义不进行转换。
matrix(n,n,n,n,n,n)定义 2D 转换,使用六个值的矩阵。
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate(x,y)定义 2D 转换。
translate3d(x,y,z)定义 3D 转换。
translateX(x)定义转换,只是用 X 轴的值。
translateY(y)定义转换,只是用 Y 轴的值。
translateZ(z)定义 3D 转换,只是用 Z 轴的值。
scale(x[,y]?)定义 2D 缩放转换。
scale3d(x,y,z)定义 3D 缩放转换。
scaleX(x)通过设置 X 轴的值来定义缩放转换。
scaleY(y)通过设置 Y 轴的值来定义缩放转换。
scaleZ(z)通过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle)定义 2D 旋转,在参数中规定角度。
rotate3d(x,y,z,angle)定义 3D 旋转。
rotateX(angle)定义沿着 X 轴的 3D 旋转。 
rotateY(angle)定义沿着 Y 轴的 3D 旋转。
rotateZ(angle)定义沿着 Z 轴的 3D 旋转。
skew(x-angle,y-angle)定义沿着 X 和 Y 轴的 2D 倾斜转换。
skewX(angle)定义沿着 X 轴的 2D 倾斜转换。
skewY(angle)定义沿着 Y 轴的 2D 倾斜转换。
perspective(n)为 3D 转换元素定义透视视图。
------

设置点击的动画效果

.rating label:hover {
    -webkit-transform: scale(1.2);
    transform: scale(1.2);
}

进行放大1.2当点击的时候

获取属性的值

<script>
    $('input').click(function () {
        alert($('input:radio:checked').val())

    })
</script>

当点击完后可以获得你所选的值。