Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/njleonzhang/dom-align-wujie
https://github.com/njleonzhang/dom-align-wujie
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/njleonzhang/dom-align-wujie
- Owner: njleonzhang
- License: mit
- Created: 2023-11-30T08:59:17.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-30T09:18:30.000Z (about 1 year ago)
- Last Synced: 2024-04-15T04:38:09.545Z (8 months ago)
- Size: 46.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# dom-align
---align source html element with target html element flexibly.
[![NPM version][npm-image]][npm-url]
[![build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
[![gemnasium deps][gemnasium-image]][gemnasium-url]
[![npm download][download-image]][download-url][npm-image]: http://img.shields.io/npm/v/dom-align.svg?style=flat-square
[npm-url]: http://npmjs.org/package/dom-align
[travis-image]: https://img.shields.io/travis/yiminghe/dom-align.svg?style=flat-square
[travis-url]: https://travis-ci.org/yiminghe/dom-align
[coveralls-image]: https://img.shields.io/coveralls/yiminghe/dom-align.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/yiminghe/dom-align?branch=master
[gemnasium-image]: http://img.shields.io/gemnasium/yiminghe/dom-align.svg?style=flat-square
[gemnasium-url]: https://gemnasium.com/yiminghe/dom-align
[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square
[node-url]: http://nodejs.org/download/
[download-image]: https://img.shields.io/npm/dm/dom-align.svg?style=flat-square
[download-url]: https://npmjs.org/package/dom-align## Screenshot
## Install
[![dom-align](https://nodei.co/npm/dom-align.png)](https://npmjs.org/package/dom-align)
## Feature
* support IE9+ chrome firefox
* support align points and offset
* support auto adjust according to visible area## Online Demo
* http://yiminghe.github.io/dom-align/
## Usage
```js
import domAlign from 'dom-align';// use domAlign
// sourceNode's initial style should be position:absolute;left:-9999px;top:-9999px;const alignConfig = {
points: ['tl', 'tr'], // align top left point of sourceNode with top right point of targetNode
offset: [10, 20], // the offset sourceNode by 10px in x and 20px in y,
targetOffset: ['30%','40%'], // the offset targetNode by 30% of targetNode width in x and 40% of targetNode height in y,
overflow: { adjustX: true, adjustY: true }, // auto adjust position when sourceNode is overflowed
};domAlign(sourceNode, targetNode, alignConfig);
```## API
### void domAlign(source: HTMLElement, target: HTMLElement, alignConfig: Object):Function
#### alignConfig object details
name
type
description
points
String[2]
move point of source node to align with point of target node, such as ['tr','cc'],
align top right point of source node with center point of target node.
point can be 't'(top), 'b'(bottom), 'c'(center), 'l'(left), 'r'(right)
offset
Number[2]
offset source node by offset[0] in x and offset[1] in y.
If offset contains percentage string value, it is relative to sourceNode region.
targetOffset
Number[2]
offset target node by offset[0] in x and offset[1] in y.
If targetOffset contains percentage string value, it is relative to targetNode region.
overflow
Object: `{ adjustX: boolean, adjustY: boolean, alwaysByViewport:boolean }`
if adjustX field is true, then will adjust source node in x direction if source node is invisible.
if adjustY field is true, then will adjust source node in y direction if source node is invisible.
if alwaysByViewport is true, the it will adjust if node is not inside viewport
useCssRight
Boolean
whether use css right instead of left to position
useCssBottom
Boolean
whether use css bottom instead of top to position
useCssTransform
Boolean
whether use css transform instead of left/top/right/bottom to position if browser supports.
Defaults to false.
## Development
```
npm install
npm start
```## Example
http://localhost:8020/examples/
## Test Case
```
npm test
npm run chrome-test
```## Coverage
```
npm run coverage
```open coverage/ dir
## License
dom-align is released under the MIT license.