Code Monkey home page Code Monkey logo

dom-align's Introduction

@rc-component/dom-align


Align source html element with target html element flexibly.

NPM version Test coverage npm download Build Status @rc-component/dom-align

Screenshot

Install

@rc-component/dom-align

Feature

  • support Edge Chrome Firefox
  • support align points and offset
  • support auto adjust according to visible area

Usage

import domAlign from '@rc-component/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

pnpm install
pnpm start

Example

http://localhost:8000/

License

@rc-component/dom-align is released under the MIT license.

dom-align's People

Contributors

afc163 avatar benjycui avatar dependabot[bot] avatar gavinxgu avatar hewenguang avatar popomore avatar raohai avatar roopen219 avatar tinyfind avatar yiminghe avatar zombiej avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.