仅3行核心css代码的rate评分组件

原理

主要是借助radio单选框,梳理如下:

  1. 去找个好看的iconfont;

  2. 借用5个radio单选框,把默认样式都去掉,显示默认的星星;

  3. 用checked伪类监听用户选中✅,由默认的星星变成高亮的星星;

  4. 然后配合~兄弟操作符把当前选中的所有兄弟元素都一起高亮💥;

  5. 把5个radio单选框反向排列❗;

注意事项
  1. 所有主流浏览器都不支持 appearance 属性。
  2. Firefox 支持替代的 -moz-appearance 属性。
  3. Safari 和 Chrome 支持替代的 -webkit-appearance 属性。
<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>index</title>
  <link rel="stylesheet" href="//at.alicdn.com/t/font_1356455_c5d3d3ohlbq.css">
  <style>
    /* 去掉默认样式 */
    input {
      /* Safari Chrome */
      -webkit-appearance: none;
      /* Firefox */
      -moz-appearance: none;
      border: none;
      outline: none;
      cursor: pointer;
    }

    .content {
      display: inline-block;
    }

    .rate-content {
      /* 元素反向排列 */
      display: flex;
      flex-flow: row-reverse
    }

    /* 单个星星 */
    input[name="rate"] {
      /* 之前引入的iconfont字体 */
      font-family: "iconfont";
      font-size: 30px;

      padding-right: 10px;
      transition: transform .2s ease;
    }

    /* 默认显示的星星 */
    input[name="rate"]::after {
      content: "\e645";
      color: #999;
      /* 加点颜色过渡效果 */
      transition: color .4s ease;
    }

    /* 选中与移上去样式变化 */
    input[name="rate"]:checked::after,
    input[name="rate"]:checked~input[name='rate']::after,
    input[name="rate"]:hover::after,
    input[name="rate"]:hover~input[name='rate']::after {
      content: "\e73c";
      color: #ffa822;
    }

    input[name="rate"]:hover {
      transform: scale(1.3);
    }
  </style>
</head>

<body>
  <div class="content">
    <div class="rate-content">
      <input type="radio" name="rate">
      <input type="radio" name="rate">
      <input type="radio" name="rate">
      <input type="radio" name="rate">
      <input type="radio" name="rate">
    </div>
  </div>
</body>

</html>

效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值