toc-helper
— это плагин для автоматического создания оглавления статей.
data-level
.body
, прокручиваются только элементы div
с содержимым).React, Vue, Svelte
.<script src="lib/umd/index.js"></script>
esmodule
импортируетlib/es/index.js
new TocHelper(el [, options])
npm install toc-helper --save
# или
yarn add toc-helper
require
const TocHelper = require('toc-helper')
new TocHelper(el [, options])
import
import TocHelper from 'toc-helper'
new TocHelper(el [, options])
React
import TocHelper from 'toc-helper'
class App extends React.PureComponent{
constructor(props){
super(props)
this.ref = null
}
componentDidMount(){
new TocHelper(this.ref [, options])
}
render(){
return <div ref={ref => this.ref = ref} />
}
}
import TocHelper from 'toc-helper'
export default App(){
const ref = useRef()
useEffect(()=>{
new TocHelper(ref [, options])
})
return <div ref={ref} />
}
vue
v3
<script>
import TocHelper from 'toc-helper'
setup(props, { emit }) {
const toc = ref(null);
let helper = null;
onMounted(function () {
helper = new TocHelper(toc [, options]);
});
return { toc };
},
</script>
<template>
<div ref="toc"></div>
</template>
svelte
<script>
import TocHelper from 'toc-helper'
let toc = null
let helper = null
onMount(function(){
helper = new TocHelper(toc [, options])
})
</script>
<div bind:this={toc}/>
TocHelper(selector [, options])
Конструктор метода, может быть создан только с помощью new.
selector
Тип: string
| HTMLElement
Значение по умолчанию: нет
Обязательно: да
Если selector является строкой, он должен быть селектором, который можно получить с помощью document.querySelector, иначе будет выдана ошибка.
options
Тип: object
| undefined
Значение по умолчанию: нет
Обязательно: необязательно
reset
Без параметров
Метод экземпляра, после вызова будет повторно проанализирован heading
, если данные загружаются асинхронно, этот метод будет полезен.
isEmpty
Без параметров
Метод экземпляра, определяет, есть ли heading
.
syncScroll
Без параметров
Метод экземпляра, синхронизирует прокрутку, скрывает и показывает, можно вызвать этот метод для синхронизации.
options
contentSelector
Тип: string
| HTMLElement
Значение по умолчанию: document.body
Если это строка, она должна быть селектором, который можно получить с помощью
ducument.querySelector
.
Анализирует содержимое каталога элементов.
scrollSelector
Тип: string
| HTMLElement
Значение по умолчанию: document.body
Если это строка, то она должна быть селектором, который можно получить через
ducument.querySelector
.
Селектор элемента прокрутки; если содержимое не является всем документом, а прокрутка также не является всем документом, это контейнер внутри документа, который прокручивается, тогда необходимо указать это значение, иначе каталог не сможет синхронизироваться с прокруткой.
fixedSelector
Тип: string
| HTMLElement
Значение по умолчанию: каталог сам
Документ прокручивается до позиции этого селектора, и он фиксируется в верхней части.
headingSelector
Тип: string
Значение по умолчанию: h1, h2, h3, h4, h5, h6
Содержимое элемента анализируется с использованием всех каталогов.
- Может быть не тегом
h
, но тег должен предоставлять атрибутdata-level
, чтобы указать текущий уровень каталога.- Конкретное использование —
[contentSelector].querySelectorAll(headingSelector)
, поэтому необходимо правильно настроитьcontentSelector
иheadingSelector
, иначе проанализированный каталог будет пустым.
collapsedLevel
Тип: number
Значение по умолчанию: 3
Каталоги выше этого уровня будут свернуты (скрыты) по умолчанию, и они будут автоматически развёрнуты при прокрутке до этой позиции или при нажатии на них, а затем снова свернутся.
idPrefix
Тип: string
Значение по умолчанию: bitoc-heading-
Префикс идентификатора каталога.
Влияет только на сам каталог, не влияет на содержание.
levelClassPrefix
Тип: string
Значение по умолчанию: bitoc-ml-
Смещение стиля уровня по умолчанию, уровень 2 каталога (bitoc-ml-2
) смещается на 1rem
, уровень 3 каталога (bitoc-ml-3
) смещается на 2rem
, и так далее; можно использовать стиль для изменения, имя стиля по умолчанию.
bitoc-ml-1
bitoc-ml-2
bitoc-ml-3
bitoc-ml-4
bitoc-ml-5
bitoc-ml-6
scrollDuration
Тип: number
Значение по умолчанию: 200
По умолчанию поддерживается прокрутка анимации, продолжительность анимации контролируется этим значением.
scrollOffset
Тип: number
Значение по умолчанию: 0
Величина смещения прокрутки.
Это значение относится только к содержимому, при щелчке по каталогу содержимое автоматически прокручивается в соответствующую позицию; если в верхней части содержимого есть фиксированный или абсолютный элемент позиционирования, позиция прокрутки будет иметь смещение, решение состоит из двух частей: Предположим, что фиксированная высота элемента позиционирования равна
64px
:
css
, чтобы все заголовки padding-top
были равны высоте заголовка, margin-top
равны противоположному значению высоты заголовка; пример кода css
выглядит следующим образом
[contentSelector] h1,
[contentSelector] h2,
[contentSelector] h3,
[contentSelector] h4,
... 10. fixedOffset
Тип: number | false Значение по умолчанию: динамическое вычисление
При достижении этой позиции каталог автоматически закрепляется в верхней части.
11. fixedClassName
Тип: string Значение по умолчанию: .bitoc-fixed
Стиль закрепления каталога в верхней части по умолчанию.
.bitoc-fixed{
position: fixed !important;
}
12. beforeFixed
Тип: Function(isFixed: boolean) => false|void Значение по умолчанию: null
Функция-перехватчик перед закреплением каталога.
isFixed = true — закрепление. isFixed = false — отмена закрепления. Если возвращается false, операция закрепления отменяется, и afterFixed также не вызывается.
13. afterFixed
Тип: Function(isFixed: boolean) => void Значение по умолчанию: null
Функция-перехватчик после закрепления каталога.
isFixed = true — успешное закрепление. isFixed = false — успешная отмена закрепления.
.bitoc-fixed {
top: 3.875rem;
}
.bitoc-fixed {
max-width: 27rem;
}
Для обеспечения адаптивности пример:
@media screen and (min-width: 1024px) and (max-width: 1216px) {
#toc-box.bitoc-fixed {
max-width: 19rem;
}
}
.bitoc {
max-height: 20.5rem;
}
git clone https://github.com/itlangzi/toc-helper
cd toc-helper
yarn dev --open
После выполнения команды перейдите по адресу http://localhost:3000/demo.
yarn build
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )