如何使用Django的Font-awesome星级?

Hou*_*man 24 django twitter-bootstrap font-awesome

Fontawesome有一个很棒的星级css扩展,看起来非常棒.

但是,点击任何span元素都不会真正做任何事情.我不知道如何将其与我的数据库模型联系起来.假设我在Django中有一个0-5的整数字段.如何根据模板中用户的选择设置值?

在此输入图像描述

<span class="rating">
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
</span>
Run Code Online (Sandbox Code Playgroud)

Hou*_*man 19

我最后使用了Raty.如果您正在寻找一个简单而干净的解决方案,我发现这是最简单的.

$('#star').raty('score');                   // Get the current score.
Run Code Online (Sandbox Code Playgroud)


小智 16

我看过这篇文章,但不想使用超过我需要的插件.所以,我把它放在一起,用于我正在进行的一个小项目.您不需要bootstrap来使用它.

HTML

<div class="star-rating"> 
  <span class="fa fa-star-o" data-rating="1"></span>
  <span class="fa fa-star-o" data-rating="2"></span>
  <span class="fa fa-star-o" data-rating="3"></span>
  <span class="fa fa-star-o" data-rating="4"></span>
  <span class="fa fa-star-o" data-rating="5"></span>
  <input type="hidden" name="whatever" class="rating-value" value="3">
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.star-rating {
  line-height:32px;
  font-size:1.25em;
  cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)

CoffeeScript的

$star_rating = $('.star-rating .fa')

SetRatingStar = ->
  $star_rating.each ->
    if parseInt($star_rating.siblings('input.rating-value').val()) >= parseInt($(this).data('rating'))
      $(this).removeClass('fa-star-o').addClass('fa-star')
    else
      $(this).removeClass('fa-star').addClass('fa-star-o')

$star_rating.on 'click', ->
    $star_rating.siblings('input.rating-value').val $(this).data('rating')
    SetRatingStar()

SetRatingStar()
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

var $star_rating = $('.star-rating .fa');

var SetRatingStar = function() {
  return $star_rating.each(function() {
    if (parseInt($star_rating.siblings('input.rating-value').val()) >= parseInt($(this).data('rating'))) {
      return $(this).removeClass('fa-star-o').addClass('fa-star');
    } else {
      return $(this).removeClass('fa-star').addClass('fa-star-o');
    }
  });
};

$star_rating.on('click', function() {
  $star_rating.siblings('input.rating-value').val($(this).data('rating'));
  return SetRatingStar();
});

SetRatingStar();
Run Code Online (Sandbox Code Playgroud)

  • coffeescript代码与javascript代码完全相同. (3认同)

Tom*_*duy 12

如果您使用bootstrap,这是星级评级的最佳插件:

  • 2Kb缩小
  • 使用Bootstrap Glyphicons
  • 没有额外的CSS
  • 你只需要添加class="rating"到输入

Github项目


dot*_*mly 8

我没有看到只使用bootstrap glyphicons和jquery的简单答案.我相信其他人都来这里寻找快速复制和粘贴所以我只写了一个.

$(function(){
    $('.rating-select .btn').on('mouseover', function(){
        $(this).removeClass('btn-default').addClass('btn-warning');
        $(this).prevAll().removeClass('btn-default').addClass('btn-warning');
        $(this).nextAll().removeClass('btn-warning').addClass('btn-default');
    });

    $('.rating-select').on('mouseleave', function(){
        active = $(this).parent().find('.selected');
        if(active.length) {
            active.removeClass('btn-default').addClass('btn-warning');
            active.prevAll().removeClass('btn-default').addClass('btn-warning');
            active.nextAll().removeClass('btn-warning').addClass('btn-default');
        } else {
            $(this).find('.btn').removeClass('btn-warning').addClass('btn-default');
        }
    });

    $('.rating-select .btn').click(function(){
        if($(this).hasClass('selected')) {
            $('.rating-select .selected').removeClass('selected');
        } else {
            $('.rating-select .selected').removeClass('selected');
            $(this).addClass('selected');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="rating-select">
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
</div>
Run Code Online (Sandbox Code Playgroud)

要使用django模板从DB设置默认值,请为每个星形执行以下操作:

<div class="btn btn-{% if rate.value > 0 %}warning{% else %}default{% endif %}{% if rate.value == 1 %} selected{% endif %} btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
Run Code Online (Sandbox Code Playgroud)

  • 1+.大声笑"快速复制粘贴".你的代码看起来不错,考虑复制它 (3认同)

yma*_*kux 7

一个更有趣的方法.纯CSS,保持选定的值,使用单选按钮(酷!)和FA字体

见演示

摘自这篇文章

HTML

<div class="star-rating">
  <div class="star-rating__wrap">
    <input class="star-rating__input" id="star-rating-5" type="radio" name="rating" value="5">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-5" title="5 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-4" type="radio" name="rating" value="4">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-4" title="4 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-3" type="radio" name="rating" value="3">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-3" title="3 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-2" type="radio" name="rating" value="2">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-2" title="2 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-1" type="radio" name="rating" value="1">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-1" title="1 out of 5 stars"></label>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.star-rating{
    font-size: 0;
}
.star-rating__wrap{
    display: inline-block;
    font-size: 1rem;
}
.star-rating__wrap:after{
    content: "";
    display: table;
    clear: both;
}
.star-rating__ico{
    float: right;
    padding-left: 2px;
    cursor: pointer;
    color: #FFB300;
}
.star-rating__ico:last-child{
    padding-left: 0;
}
.star-rating__input{
    display: none;
}
.star-rating__ico:hover:before,
.star-rating__ico:hover ~ .star-rating__ico:before,
.star-rating__input:checked ~ .star-rating__ico:before
{
    content: "\f005";
}
Run Code Online (Sandbox Code Playgroud)


Kar*_*k V 6

您可以查看我使用各种可配置选项创建的Bootstrap JQuery Star评级插件(场景的演示包含在其中).它尽可能使用CSS3,但也使用JQuery(如果你没关系).您可以通过插件方法获得星级评分或轻松设置.

使用Bootstrap 3.x glyphicons,包括RTL支持,支持插件事件和方法.该插件还支持任何分数填充的恒星.您可以在这里参考来源.

如果您热衷于使用Font-Awesome,可以在项目中覆盖插件CSS以使用Font-Awesome而不是Bootstrap Glyphicons.