100 / 79 / 9
Регистрация: 03.08.2014
Сообщений: 447
1

Звездный рейтинг для мобильной версии сайта

24.03.2016, 14:07. Показов 1628. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вариантов звездных рейтингов через Ajax для десктопа много.
Но столкнулся с проблемой неудобства выставления рейтинга, если вместо мышки используется палец при просмотре на экране смартфона. Если мышкой я могу вести вдоль звездочек, их подсвечивая и лишь потом кликая по выбранной звезде, то пальцем я сразу вызываю клик.

Подскажите какое решение лучше использовать в данном случае?

Добавлено через 20 часов 57 минут
Сутки гуглил и ничего стоящего не нашел. Поэтому плюнул и сделал примитивный рейтинг типа +1/-1. С помощью пары кнопок.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2016, 14:07
Ответы с готовыми решениями:

Меню для мобильной версии сайта
Привет всем, есть сайт и мне надо сделать меню для мобильной версии, использую адаптивную версту,...

Меню для мобильной версии сайта
Ребят, подскажите! Как сделать меню ( выпадающее ) то что на сайте mybootstrap.ru ( в адаптивное...

Сделать якоря только для мобильной версии сайта
Всем привет ! Поделитесь опытом Нужно сделать что-то вроде якоря на html но что-бы работал...

Выровнять кнопки или адаптировать их для мобильной версии сайта
Добрый день! Помогите пожалуйста разобраться. <section class="contents_widther"> <div...

2
Эксперт HTML/CSS
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
24.03.2016, 15:37 2
Лучший ответ Сообщение было отмечено Fedor92 как решение

Решение

Цитата Сообщение от Alexvp Посмотреть сообщение
Сутки гуглил и ничего стоящего не нашел. Поэтому плюнул и сделал примитивный рейтинг типа +1/-1. С помощью пары кнопок.
событие touchstart реагирует на тач, прикручиваем eventListener к звездочке, по тачу красим звездочку, и показываем скрытую кнопку "rate"
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div class="rating">
  <img  class="img-responsive" src="https://lh6.ggpht.com/z8rGcobymHcqSLtHpIsa42YdiuWOgl1tenbpuoAXRVFmIpdwCPCRZVmlZzQFdnqTOw=w300" alt="cat">
  <svg class="star" data-rating="1" viewBox="0 0 51 48">
  <path d="m25,1 6,17h18l-14,11 5,17-15-10-15,10 5-17-14-11h18z"/>
  </svg>
  <svg class="star" data-rating="2" viewBox="0 0 51 48">
  <path d="m25,1 6,17h18l-14,11 5,17-15-10-15,10 5-17-14-11h18z"/>
  </svg>
  <svg class="star" data-rating="3" viewBox="0 0 51 48">
  <path d="m25,1 6,17h18l-14,11 5,17-15-10-15,10 5-17-14-11h18z"/>
  </svg>
  <svg class="star" data-rating="4" viewBox="0 0 51 48">
  <path d="m25,1 6,17h18l-14,11 5,17-15-10-15,10 5-17-14-11h18z"/>
  </svg>
  <svg class="star" data-rating="5" viewBox="0 0 51 48">
  <path d="m25,1 6,17h18l-14,11 5,17-15-10-15,10 5-17-14-11h18z"/>
  </svg>
  <button class="rate">Rate</button>
  <button class="clear">Clear</button>
</div>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var stars = document.querySelectorAll(".star");
for(var i = 0, l = stars.length; i < l; i++){
    stars[i].addEventListener("click", function(){
    setStars(this);
    this.parentNode.querySelector(".rate").classList.add("show");
    this.parentNode.querySelector(".clear").addEventListener("click", clear);  
    this.parentNode.querySelector(".rate").addEventListener("click", rate);
  })
}
 
 
function setStars(star){
    var stars = star.parentNode.querySelectorAll(".star");
  var rating = 0;
  for(var i = 0, l = stars.length; i < l; i++){
    stars[i].classList.remove("selected");
  }
  for(var i = 0, l = stars.length; i < l; i++){
    if(+(stars[i].getAttribute("data-rating")) <= +(star.getAttribute("data-rating"))){
        stars[i].classList.add("selected");
      rating++;
      star.parentNode.setAttribute("data-rating", rating);
    }
  }
}
function clear(){
    var stars = this.parentNode.querySelectorAll(".star");
  var rate = this.parentNode.querySelector(".rate");
   for(var i = 0, l = stars.length; i < l; i++){
    stars[i].classList.remove("selected");
  }
  rate.classList.remove("show");
}
function rate(){
    alert("item rating: " + this.parentNode.getAttribute("data-rating"));
}
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.star{
  display:inline-block;
  width:51px;
  height:48px;
  path{
    fill:#fff;
    stroke:#000;
  }
  &.selected path{
    fill:#000;
  }
}           
.rate{
  display:block;
  opacity:0;
  transition:opacity .2s;
  margin-bottom:20px;
  &.show{
    opacity:1;
  }
}
.clear{
  opacity:0;
  display:block;
  transition:opacity .2s;
}
.rate.show + .clear{
  opacity:1;
}
.img-responsive{
  display:block;
  max-width:100%;
}
https://jsfiddle.net/shakalaka/ur1cqgqm/

В функции rate отправляем ajax-ом на сервер реитинг, блокируем повторное нажатие
1
100 / 79 / 9
Регистрация: 03.08.2014
Сообщений: 447
24.03.2016, 16:39  [ТС] 3
Супер! Большое спасибо!
0
24.03.2016, 16:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2016, 16:39
Помогаю со студенческими работами здесь

Логотип в мобильной версии сайта
Здравствуйте. Скачал шаблон, вставил свой лого, он в мобильной версии больше ширины экрана.Как...

Тестирование мобильной версии сайта
Делаю мобильную версию сайта, адаптивной версткой но не могу понять как на пк можно посмотреть, не...

Шаблон мобильной версии сайта
Не подскажете где найти шаблоны для сайта заточенных под телефоны и КПК? Нужен просто шаблон на...

Создание мобильной версии сайта
Подскажите как реализовать? При помощи @media handheld (screen) не получается. Добавлено через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru