jQuery

индекс
283,92

Плагин tagSphere

Думаю, многие из вас видели плагин для wordpress. Симпатичный шарик привлек мое внимание и мне захотелось его поковырять...
Разочарованию не было предела ― он оказался на флэше(против флэша ничего не имею). Ладно, флэш так флэш нагуглил исходники, распаковал архивчик, а там… А там море файлов с кодом, файлы для настройки с парой десятков опций, несимпатичный фалик для вывода всего этого, для генерации xml'ки.
С этим я мириться уже никак не хотел и решил написать тоже самое, но на javascript. Привык я работать с jQuery поэтому решил сделать в качестве плагина для него.

Для нетерпеливых:


Для остальных немного об использовании:


Список тэгов у нас представлен вот в таком виде:
<div id="tagShpere">
 <ul>
  <li><a href="#">tag0</a></li>
  <li><a href="#">tag1</a></li>
     ****
  <li><a href="#">tagN</a></li>
 </ul>
</div>


* This source code was highlighted with Source Code Highlighter.


Для создания сферы вызываем метод tagSphere у контейнера
$('#tagSphere').tagSphere();

* This source code was highlighted with Source Code Highlighter.

Вот и все наслаждаемся.

Есть еще немного опций:
{
//высота контейнера со сферой
    height: 400,
//ширина контейнера со сферой
    width: 400,
//радиус сферы
    radius: 150,
//скорость вращение
    speed: 3,
//замедление сферы, когда мышка ушла с контейнера
    slower: 0.9,
//задержка между обновлениями позиции тэгов
    timer: 5,
//зависимость размера шрифта от Z
    fontMultiplier: 15,
//css стили тэгов onMouseOver
    tagCSSOver: {
      border: 'solid 1px blue',
      color: 'blue'
    },
//css стили тэгов onMouseOut
    tagCSSOut: {
      border: '',
      color: ''
    }
}


* This source code was highlighted with Source Code Highlighter.

Остальное в своих CSS настраиваем

Итого:


Плюсы
  • Легкость использования
  • Маленький размер ― 5кб несжатого кода + jQuery
  • Нормальная индексация ссылок

Минусы
  • Неплохо нагружает проц
  • Проблемы с opacity в IE
  • Размер шрифта меняется дискретно

P.S.
Если есть идеи, как побороть минусы пишите, буду рад. За пример такой бить не будут? :)
P.P.S.
Статью писал не я, у автора нет возможности писать на хабр.
_________
Текст подготовлен в ХабраРедакторе
+38
19 декабря 2008, 13:27
52

комментарии (36)

+1
omfg #
Красиииво)
Только в примере не с первого раза нашел сами тэги) (так и в фишинге между прочим уличить могут, осторожно =)

Для такой фичи наверное и процессор должен быть хороший…
А еще мне кажется что теряется сам смысл тэгов, я например, не могу различить размер слов.
+5
dreamhelg #
Замечательно что вы создали плагин на jquery, тем самым дали возможность размещать у себя «живое облако» не только владельцам вордпресс, правда в последнее время оно слишком часто появляется на глазах, но автор статьи все равно молодец
+2
Talleyran #
Справедливости ради стоит сказать, что флэшарикоблако тоже нефигово нагружает проц.
И, помоему, оба они неправильно реагируют на курсор: вращение тем быстрее, чем блише к краю области он, соответственно ссылку из далека, но по центру, ждешь долго. Для удобства вращение должно быть быстрее, чем сильнее отвернут тэг. А еще желательно учесть и размер, т.е. тем быстрее вращение, чем больше тэг, на который наведен курсор. И определенно нужно совершенствовать вычислительный механизм — позиционирование 20-ти несчастных спрайтов не должно так нагружать процессор и озу.
0
Talleyran #
сорри, отвечал я на предыдущий комментарий…
+2
exoundeeq #
Слова в тегах лучше разделять неразрывным пробелом. А так, зачетно!
+7
krig #
Открыли тестовую страничку в ФФ3 на убунте, винде и макбуке — загрузка проца 100%.
Выгладит очень красиво, но для «повседневного» использования не годится.
0
Joka #
тоже самое фф 3.0.5 опенсузи 11.0
фф подвис — еле страницу закрыл
+1
zhekanax #
и крутится рывками.
Athlon 64 x2 5000, 2Gb ram
ff 3.0.5, ubuntu 8.04 amd64

Имхо бесполезное, но красивое баловство все это :)
+1
Bygaga #
Прикольный плагин)

как вариант решения «Неплохо нагружает проц»:

Не крутить пока не наведешь мышкой на зону с облаком
+ снизит нагрузку
+ не будет отвлекать от чтения текста статьи
+5
zw0rk #
Вы там много раз подряд вычисляете косинус, синус — загоните их в таблицу. CPU usage должен стать поменьше.
+4
AgaFonOff #
Кто не делал БПФ на 286 процах без сопроцессора не поймут :)
0
milax #
Подтормаживает. Неплохая альтернатива, но флеш лучше…
0
trevel #
Может сделать, что пока слово выделенно оно центрируется. А так приходится постоянно держать курсор в самом центре. Появляется эффект некой нестабильности что ли.
0
Castro #
Не знаю, что jQuery такое умеет. Видать можно и прикрутить к тому же Друпалу. Одно плохо, что действительно подтормаживает и процессор нагружает
0
Talleyran #
супер.
однако именно такие вещи привили мне нелюбовь к js. флэш для этого самое оно.
+3
snusmumrik #
Флеш для этого — совсем не оно. По простой причине: здесь ссылки — главное, а в эти ссылки нельзя тыкнуть, чтобы открыть в новой вкладке (и вообще контекстное меню у флеш ссылок не показывается) и нельзя увидеть куда ведет сслыка в статус-баре. Конечно, можно придумать костыль в виде внутреннего флешового контекстного меню и отображения таргета в статусной строке через flash-javascript интерфейс. Но ведь этого не делают. Бесит, когда на сайте меню на флеше: приходится клонировать tab и кликать в новом.
0
Talleyran #
Под «это» я имел ввиду подобные визуальные эффекты. Если главное ссылки а не внимание, понт и тп, то да. Но js в меню, по большому счету, тоже неприемлем.
Кстати можно, сделать, чтобы нажатие на колесико отлавливал js и сообщал об этом флэшу, меняя ссылке параметр target. Про меню, идеальным был бы вариант вызвать меню для такой же ссылки, тогда создалось бы впечатление о существовании контекстного меню у ссылок во флэше, погуглив на эту тему, нашел только js контекстное меню, но не нативное…
+1
SpeCT #
Супер, спасибо.

Sony VAIO sz670, Vista, Chrome — 35% CPU и децл подлагивает
0
ur001 #
Любопытно. Только оно всё время крутится — надо бы только при наведении.
Вот бы плагин такой для Greasemonkey — было вы вообще здорово
0
ur001 #
Да, посмотрел в FF — работает раза в 3 медленнее чем в WebKit. А жаль, интересно можно оптимизировать?
0
nekufa #
Спасибо всем за комментарии, особенно за советы по оптимизации.
Автор постарается учесть все пожелания :)
0
maggg #
Это интересно только с точки зрения «Yes, we can!», хотя лагает довольно серьёзно (HP Pavilion 1048er, Виста, ФФ3).
Для реальных проектов неприменимо: неудобно и вторично в смысле идеи.
0
Spree #
Красиво, но не нужно
0
Cyrill #
В файрфоксе 3.0.5 ощутимо лагает на не самом слабом компьютере.

В хроме прекрасно крутится, но сто процентов ядра сожрать норовит… картинка кликабельна.

0
deerua #
В ИЕ к системе пришёл абздольц ;)))) да и внешний вид жёстко хромает, в ИЕ :))
Если честно, он даже в хроме и в ФФ3б2 притормаживает… тут нада что-то ускорять
Спасибо за труд!
0
noita_kronk #
Эффект эффектный. Только непонятно, зачем он нужен: теряется масштаб тегов относительно друг друга из-за пространственных искажений. Т.е. эффект поглощает пользу. К тому же теги с другой стороны сферы плохо видны, их надо долго подгонять — это тоже делает часть тегов нерабочими. Такая сфера приятна глазу, но совершенно бесполезна.
+1
Yfka #
Спасибо за модуль.
Только я бы хотел указать на главный недостаток вашей реализации. Нет, это не загрузка проца.

Главный недостаток: им практически невозможно пользоваться. Поясняю, что я имею в виду: Допустим я хочу нажать тег справа. Пока я его ловлю он быстро едет в центр и далее налево. Слева его поймать тоже невозможно, потому, что он едет обратно. Т.е. пользователь через десяток секунд неизменно понимает, что ловить теги нужно в центре. ;-)

Вот на снимке я играю в игру «поймай CMS». Как видно в Опере не такая уж большая загрузка проца. 25% от старенького, слабенького двухядерника.

Т.е. вам нужно улучшить удобство использования скрипта в первую очередь. Сравните с исходным: там есть около четырёх секунд, чтобы нажать ссылку, да и сами ссылки гораздо крупнее.
0
Anarki #
Юзабилити на высоте конечно… неплохо было бы как-то уметь скорость подкручивать, чтобы выбрать быстро облако на другой стороне сферы.
0
Anarki #
*тег а не облако
0
Aeron #
Спасибо, прям как на заказ — сильно вовремя =)
0
dasty #
Систему тормозит очень сильно. Думаю что такую штуку можно спокойно флешу доверить. Будет и «легче» и приятнее.
0
nekufa #
Ну флэш-то не у всех есть. А так есть уверенность, что люди даже без ява-скрипта увидят список тэгов.
Конечно, надо оптимизировать сильно, но, вроде, в какую сторону копать ясно из комментов :)
0
zw0rk #
Еще вот подумалось. Надо бы прикрутить методы start и stop, чтобы можно было скрывать/раскрывать блок с облаком тегов.
0
darkside #
здорово сделано, да. только на моей не самой слабой машинке подтормаживает оно слегка.

а вообще… зачем оно, это облако? в статичном варианте оно хоть как-то юзабильно, но в таком варианте, как мне кажется — просто лишний код, никакого юзабилити и не особо красиво оно само по себе.
0
maxic #
Красиво, но пользователи нетбуков вас не поймут.

Надо «что-то» делать с производительностью.
Оптимизировать.
0
danilissimus #
хабраэффект!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.