[d565449] | 1 | <div align="center">
|
---|
| 2 | <H1>@xobotyi/scrollbar-width</H1>
|
---|
| 3 | <p>A tool to get browser's scrollbars width.</p>
|
---|
| 4 | <p>
|
---|
| 5 | <a href="https://www.npmjs.com/package/@xobotyi/scrollbar-width">
|
---|
| 6 | <img src="https://flat.badgen.net/travis/xobotyi/scrollbar-width" alt="Build status"/>
|
---|
| 7 | </a>
|
---|
| 8 | <a href="https://www.npmjs.com/package/@xobotyi/scrollbar-width">
|
---|
| 9 | <img src="https://flat.badgen.net/npm/v/@xobotyi/scrollbar-width" alt="NPM version"/>
|
---|
| 10 | </a>
|
---|
| 11 | <a href="https://www.npmjs.com/package/@xobotyi/scrollbar-width">
|
---|
| 12 | <img src="https://flat.badgen.net/npm/dw/@xobotyi/scrollbar-width" alt="NPM weekly downloads"/>
|
---|
| 13 | </a>
|
---|
| 14 | <a href="https://www.npmjs.com/package/@xobotyi/scrollbar-width">
|
---|
| 15 | <img src="https://flat.badgen.net/npm/license/@xobotyi/scrollbar-width" alt="License"/>
|
---|
| 16 | </a>
|
---|
| 17 | <a href="https://www.npmjs.com/package/@xobotyi/scrollbar-width">
|
---|
| 18 | <img src="https://flat.badgen.net/npm/types/@xobotyi/scrollbar-width" alt="Types definition"/>
|
---|
| 19 | </a>
|
---|
| 20 | <a href="https://www.npmjs.com/package/@xobotyi/scrollbar-width">
|
---|
| 21 | <img src="https://flat.badgen.net/codacy/grade/1bc2560a1b614f9595b718169c969b4d" alt="Codacy Code Grade"/>
|
---|
| 22 | </a>
|
---|
| 23 | <a href="https://www.npmjs.com/package/@xobotyi/scrollbar-width">
|
---|
| 24 | <img src="https://flat.badgen.net/codacy/coverage/1bc2560a1b614f9595b718169c969b4d" alt="Tests LOC"/>
|
---|
| 25 | </a>
|
---|
| 26 | </p>
|
---|
| 27 | <p>× <strong><a href="https://codesandbox.io/s/xobotyiscrollbar-width-live-demo-bp5no">LIVE EXAMPLE</a></strong> ×</p>
|
---|
| 28 | </div>
|
---|
| 29 |
|
---|
| 30 | ---
|
---|
| 31 |
|
---|
| 32 | <div align="center">❤️Please consider starring this project to show your love and support.🙌</div>
|
---|
| 33 |
|
---|
| 34 | ---
|
---|
| 35 |
|
---|
| 36 | ## Installation
|
---|
| 37 |
|
---|
| 38 | ```bash
|
---|
| 39 | npm install @xobotyi/scrollbar-width
|
---|
| 40 | # or via yarn
|
---|
| 41 | yarn add @xobotyi/scrollbar-width
|
---|
| 42 | ```
|
---|
| 43 | _INSTALLATION NOTE:_
|
---|
| 44 | This lib is written in TypeScript and delivered with both, transpiled and untranspiled ES versions:
|
---|
| 45 |
|
---|
| 46 | - `main` field of package.json is pointing to transpiled ES5-compatible version with CJS modules resolution;
|
---|
| 47 | - `module` field is pointing to transpiled ES5-compatible version with ES modules resolution;
|
---|
| 48 | - `esnext` field is pointing to the ESnext version with ES modules resolution;
|
---|
| 49 |
|
---|
| 50 |
|
---|
| 51 | **OR**
|
---|
| 52 | you can add it directly to your site via the `<script />` with help of [UNPKG](https://unpkg.com):
|
---|
| 53 | ```html
|
---|
| 54 | <script src="https://unpkg.com/@xobotyi/scrollbar-width/dist/index.min.js"/>
|
---|
| 55 | ```
|
---|
| 56 | After that you will be able to use the function as `xobotyi.scrollbarWidth()`
|
---|
| 57 |
|
---|
| 58 | ## Usage
|
---|
| 59 |
|
---|
| 60 | ```javascript
|
---|
| 61 | import { scrollbarWidth } from '@xobotyi/scrollbar-width';
|
---|
| 62 |
|
---|
| 63 | scrollbarWidth(); // for most browsers will return 17 and 0 for SSR environment
|
---|
| 64 | // or undefined if to call it too early [read below]
|
---|
| 65 | ```
|
---|
| 66 |
|
---|
| 67 | This function caches the value to avoid increased resources usage. In case you want to get re-calculated value - pass `true` as first call parameter.
|
---|
| 68 |
|
---|
| 69 | >**NOTE:**
|
---|
| 70 | >Function will return `undefined` in case being called before the DOM is ready.
|
---|
| 71 |
|
---|
| 72 | #### One more clarification
|
---|
| 73 | This function has inner cache due to scrollbars width is not intended to be changed since initial call, but it can in case you toggle the device emulation.
|
---|
| 74 | If you need function to recalculate the width call it with `true` parameter and get new value or set `scrollbarWidth.__cache` to `undefined` and next call will return the fresh value.
|
---|
| 75 |
|
---|
| 76 | ## Related projects
|
---|
| 77 |
|
---|
| 78 | - [react-scrollbars-custom](https://www.npmjs.com/package/react-scrollbars-custom) — The best React custom scrollbars component. Allows you to customise scrollbars as you like it, crossbrowser!
|
---|
| 79 | - [zoom-level](https://www.npmjs.com/package/zoom-level) — A comprehensive cross-browser package that allow you to determine page's and element's zoom level.
|
---|
| 80 | - [@xobotyi/should-reverse-rtl-scroll](https://www.npmjs.com/package/@xobotyi/should-reverse-rtl-scroll) — A tool detecting if RTL scroll value should be negative.
|
---|