Need help with dom-align?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

yiminghe
273 Stars 49 Forks MIT License 103 Commits 13 Opened issues

Description

Align DOM Node Flexibly

Services available

!
?

Need anything else?

Contributors list

# 517
React
TypeScr...
React N...
Less
44 commits
# 135
React
TypeScr...
antd
Less
14 commits
# 116
React
TypeScr...
antd
ant-des...
13 commits
# 8
React
TypeScr...
antd
ant-des...
4 commits
# 1,418
React
TypeScr...
Less
ui-libr...
3 commits
# 683,054
JavaScr...
1 commit
# 22,409
egg
egg-plu...
gzip
Mongoos...
1 commit
# 171,081
image-p...
Objecti...
TypeScr...
React N...
1 commit

dom-align


align source html element with target html element flexibly.

NPM version build status Test coverage gemnasium deps npm download

Screenshot

Install

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

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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.