1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zyanggc-rc-bullets

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Реакт субтитры

🌈 Основан на CSS3 Animation, использует React для построения, расширяемый и высокопроизводительный.

NPM NPM downloads twitter

Пример использования

👉zerosoul.github.io/rc-bullets/

demo gif

Установка

npm install --save rc-bullets

Инициализация простого примера субтитров

import React, { useEffect, useState } from 'react';
import BulletScreen, { StyledBullet } from 'rc-bullets';

const headUrl = 'https://zerosoul.github.io/rc-bullets/assets/img/heads/girl.jpg';
export default function Demo() {
  // Экран субтитров
  const [screen, setScreen] = useState(null);
  // Содержание субтитра
  const [bullet, setBullet] = useState('');

  useEffect(() => {
    // Инициализация экрана субтитров для определенного элемента страницы, обычно это большой блок. Настройки здесь применяются глобально
    let s = new BulletScreen('.screen', { duration: 20 });
    // или
    // let s = new BulletScreen(document.querySelector('.screen'));
    setScreen(s);
  }, []);

  // Обработка события изменения содержания субтитра
  const handleChange = ({ target: { value } }) => {
    setBullet(value);
  };

  // Отправка субтитра
  const handleSend = () => {
    if (bullet) {
      // Добавление чистого текста
      screen.push(bullet);
      // или использование StyledBullet
    }
  };
}
```      screen.push(
        <StyledBullet
          head={headUrl}
          msg={bullet}
          backgroundColor={'#fff'}
          size='large'
        />
      );
      // or you can use this way, the effect is similar to using the StyledBullet component
      screen.push({msg: bullet, head: headUrl, color: "#eee", size: "large", backgroundColor: "rgba(2,2,2,.3)"})
    }
  };
  return (
    <main>
      <div className="screen" style={{ width: '100vw', height: '80vh' }}></div>
      <input value={bullet} onChange={handleChange} />
      <button onClick={handleSend}>Отправить</button>
    </main>
  );
}
```## Возможности

- Поддерживает передачу React-компонентов, что позволяет гибко контролировать содержание и внешний вид субтитров, а также предоставляет встроенную компоненту стилей `<StyledBullet />`.
- Управление экраном субтитров: очистка, приостановка, скрытие (в будущем могут быть добавлены возможности управления отдельными субтитрами).
- Параметризация анимации субтитров: функции движения (постоянная скорость/ease/шаговая/cubic-bezier), длительность (в секундах), количество повторений, задержка и т.д.
- При наведении указателя мыши на субтитр он приостанавливается.

## Часто используемые API

- Инициализация экрана с буллетами: `const screen = new BulletScreen(<queryString>|<HTMLElement>, [<option>])`, где параметр `option` используется также в других местах, обычно для глобальной инициализации. Если параметр `option` не указан, используются значения по умолчанию. При отправке каждого нового сообщения буллета, если параметр `option` не передается, используются либо значения по умолчанию, либо глобальные настройки.
- Отправка буллета: `const bulletId = screen.push(<string>|<ReactElement>, [<option>])````markdown
`option`:| Опция         | Значение             | Тип значения     | По умолчанию | Примечание                                                                                                                     |
 | -------------- | -------------------- | ----------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------|
 | top            | Расположение субтитров | строка           | неопределено | Устанавливает расстояние от верха, аналогично CSS свойству `top`                                                              |
 | trackHeight    | Высота дорожки       | строка           | 50px         | Указывает высоту каждой дорожки                                                                                              |
 | onStart        | Функция начала анимации | функция         | null         | Например, `(bulletId, screen) => { // выполните что-то }`. Можно задать свои действия, такие как воспроизведение звука или приостановка субтитра: `screen.pause(bulletId)` |
 | onEnd          | Функция завершения анимации | функция         | null         | Например, `(bulletId, screen) => { // выполните что-то }`. Можно задать свои действия, такие как воспроизведение звука                                                               |
 | pauseOnClick   | Приостановление по клику | логическое значение | false       | Второй клик продолжает                                                                               |
 | pauseOnHover   | Приостановление по наведению мыши | логическое значение | true        | При входе в область приостановка, при выходе продолжение                                                                       |

| loopCount | Количество повторений | число/строка | 1 | Значение 'infinite' указывает на бесконечное количество повторений | | duration | Длительность прокрутки | число/строка | 10 | Число указывает длительность в секундах, строка поддерживает единицы времени '10s' и '300ms' | | delay | Задержка | число/строка | 0 | Число указывает задержку в секундах, строка поддерживает единицы времени '10s' и '300ms'. Поддерживает все значения CSS свойства animation-delay| | direction | Анимационное направление | string | normal | animation-direction поддерживает все значения | | animateTimeFun | Анимационная функция | string | linear | animation-timing-function поддерживает все значения |

Замечено, что некоторые строки содержали лишние символы после закрывающей скобки ], они были удалены для корректного отображения таблицы.Примечание: В данном случае "linear" было переведено как "линейная", что является наиболее подходящим термином в контексте CSS анимаций.

  • Очистка экрана от буллетов: screen.clear([<bulletId>]). Если аргумент не указан, очистит весь экран.
  • Пауза буллетов: screen.pause([<bulletId>]). Если аргумент не указан, приостановит все буллеты.
  • Продолжение буллетов: screen.resume([<bulletId>]). Если аргument не указан, продолжит все буллеты.
  • Скрытие буллетов (продолжение прокрутки): screen.hide([<bulletId>]). Если аргумент не указан, скроет все буллеты.
  • Отображение буллетов: screen.show([<bulletId>]). Если аргумент не указан, покажет все буллеты.
  • Встроенный компонент стилизованных буллетов: <StyledBullet msg="<текст буллета>" head="<адрес аватара>" color="<цвет шрифта>" backgroundColor="<цвет фона>" size="<размер: small | normal | large | huge | пользовательский размер, основан на em, значение по умолчанию - normal>">

КОМПЛЕКСНЫЕ ЗАДАЧИ

  • Обработка перекрытия при большом количестве буллетов
  • Версия с использованием React Hooks: useBulletScreen

Делай сам, будь в радости

Клонирование проекта

git clone https://github.com/zerosoul/rc-bullets.git && cd rc-bullets

Локальное сборочное окружение

npm i && npm run start

Локальный пример

cd example && npm i && npm run start

Поддержите проект

QR-код для пожертвований

Лицензия

MIT © zerosoul

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zyanggc-rc-bullets.git
git@api.gitlife.ru:oschina-mirror/zyanggc-rc-bullets.git
oschina-mirror
zyanggc-rc-bullets
zyanggc-rc-bullets
master