v6.0.0Iterates over items and apply callback on each one.
(any) The iterable.
(forEachCallback) The callback to call for each iteratee.
([boolean]
(default false)
) Respect items order.
(Array | NodeList | HTMLCollection):
items for chaining.
//esnext
import { forEach } from 'chirashi'
const items = forEach([0, 1, 2], (item, i) => console.log(`${i}: ${item + 1}`)) //returns: [0, 1, 2]
// logs:
// 2: 3
// 1: 2
// 0: 1
forEach(items, (item, i) => console.log(`${i}: ${item + 1}`), true) //returns: [0, 1, 2]
// logs:
// 0: 1
// 1: 2
// 2: 3
forEach(0, (item, i) => console.log(`${i}: ${item + 1}`)) //returns: [0]
// 0: 1
//es5
var items = Chirashi.forEach([0, 1, 2], function (item, i) { console.log(i+': '+(item + 1)) }) //returns: [0, 1, 2]
// logs:
// 2: 3
// 1: 2
// 0: 1
Chirashi.forEach(items, function (item, i) { console.log(i+': '+(item + 1)) }, true) //returns: [0, 1, 2]
// logs:
// 0: 1
// 1: 2
// 2: 3
Chirashi.forEach(0, function (item, i) { console.log(i+': '+(item + 1)) }) //returns: [0]
// logs:
// 0: 1
Callback to apply on item.
(any)
(number) Index of item in items.
Iterates over dom elements and apply callback on each one.
((string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement | Text)) The iterable, selector or elements.
(forElementsCallback) The function to call for each element.
([boolean]
(default false)
) Respect elements order.
(Array | NodeList | HTMLCollection):
items for chaining.
//esnext
import { createElement, append, forElements } from 'chirashi'
const sushi = createElement('.sushi')
const unagi = createElement('.unagi')
const yakitori = createElement('.yakitori')
const sashimi = createElement('.sashimi')
append(document.body, [sushi, unagi, yakitori, sashimi])
forElements('div', console.log) //returns: [<div class="sushi"></div>, <div class="unagi"></div>, <div class="yakitori"></div>, <div class="sashimi"></div>]
// logs:
// <div class="sashimi"></div> 3
// <div class="yakitori"></div> 2
// <div class="unagi"></div> 1
// <div class="sushi"></div> 0
forElements([yakitori, sashimi], console.log, true) //returns: [<div class="yakitori"></div>, <div class="sashimi"></div>]
// logs:
// <div class="yakitori"></div> 0
// <div class="sashimi"></div> 1
//es5
var sushi = Chirashi.createElement('.sushi')
var unagi = Chirashi.createElement('.unagi')
var yakitori = Chirashi.createElement('.yakitori')
var sashimi = Chirashi.createElement('.sashimi')
Chirashi.append(document.body, [sushi, unagi, yakitori, sashimi])
Chirashi.forElements('div', console.log) //returns: [<div class="sushi"></div>, <div class="unagi"></div>, <div class="yakitori"></div>, <div class="sashimi"></div>]
// logs:
// <div class="sashimi"></div> 3
// <div class="yakitori"></div> 2
// <div class="unagi"></div> 1
// <div class="sushi"></div> 0
Chirashi.forElements([yakitori, sashimi], console.log, true) //returns: [<div class="yakitori"></div>, <div class="sashimi"></div>]
// logs:
// <div class="yakitori"></div> 0
// <div class="sashimi"></div> 1
Callback to apply on element.
((window | document | HTMLElement | SVGElement | Text))
(number) Index of element in elements.
Iterates over object's keys and apply callback on each one.
(Object) The iterable.
(forInCallback) The function to call for each key-value pair.
([boolean]
(default false)
) Respect keys order.
Object:
object - The iterable for chaining.
//esnext
import { forIn } from 'chirashi'
const californiaRoll = { name: 'California Roll', price: 4.25, recipe: ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed'] }
forIn(californiaRoll, (key, value) => {
console.log(`${key} -> ${value}`)
}) //returns: { name: 'California Roll', price: 4.25, recipe: ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed'] }
// LOGS:
// recipe -> ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed']
// price -> 4.25
// name -> California Roll
forIn(californiaRoll, (key, value) => {
console.log(`${key} -> ${value}`)
}, true) //returns: { name: 'California Roll', price: 4.25, recipe: ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed'] }
// LOGS:
// name -> California Roll
// price -> 4.25
// recipe -> ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed']
//es5
var californiaRoll = { name: 'California Roll', price: 4.25, recipe: ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed'] }
Chirashi.forIn(californiaRoll, (key, value) => {
console.log(key + ' -> ' + value)
}) //returns: { name: 'California Roll', price: 4.25, recipe: ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed'] }
// LOGS:
// recipe -> ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed']
// price -> 4.25
// name -> California Roll
Chirashi.forIn(californiaRoll, (key, value) => {
console.log(key + ' -> ' + value)
}, true) //returns: { name: 'California Roll', price: 4.25, recipe: ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed'] }
// LOGS:
// name -> California Roll
// price -> 4.25
// recipe -> ['avocado', 'cucumber', 'crab', 'mayonnaise', 'sushi rice', 'seaweed']
Callback to apply on each key-value pair.
(string)
(any)
Get first dom element from iterable or selector.
((string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement | Text)) The iterable, selector or elements.
(window | document | HTMLElement | SVGElement | Text | boolean):
element - The dom element from input.
//esnext
import { createElement, append, getElement } from 'chirashi'
const sushi = createElement('.sushi')
const unagi = createElement('.unagi')
const yakitori = createElement('.yakitori')
const sashimi = createElement('.sashimi')
append(document.body, [sushi, unagi, yakitori, sashimi])
getElement('div') //returns: <div class="sushi"></div>
getElement('.yakitori, .sashimi') //returns: <div class="yakitori"></div>
getElement([sushi, unagi, '.sashimi', '.unknown']) //returns: <div class="sushi"></div>
getElement('.wasabi') //returns: undefined
//es5
var sushi = Chirashi.createElement('.sushi')
var unagi = Chirashi.createElement('.unagi')
var yakitori = Chirashi.createElement('.yakitori')
var sashimi = Chirashi.createElement('.sashimi')
Chirashi.append(document.body, [sushi, unagi, yakitori, sashimi])
Chirashi.getElement('div') //returns: <div class="sushi"></div>
Chirashi.getElement('.yakitori, .sashimi') //returns: <div class="yakitori"></div>
Chirashi.getElement([sushi, unagi, '.sashimi', '.unknown']) //returns: <div class="sushi"></div>
Chirashi.getElement('.wasabi') //returns: undefined
Get dom element recursively from iterable or selector. Note that to improve performances, the NodeList returned will be live if the selector allow it.
((string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement | Text)) The iterable, selector or elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from input.
//esnext
import { createElement, append, getElements } from 'chirashi'
const sushi = createElement('.sushi')
const unagi = createElement('.unagi')
const yakitori = createElement('.yakitori')
const sashimi = createElement('.sashimi')
append(document.body, [sushi, unagi, yakitori, sashimi])
getElements('div') //returns: [<div class="sushi"></div>, <div class="unagi"></div>, <div class="yakitori"></div>, <div class="sashimi"></div>]
getElements('.yakitori, .sashimi') //returns: [<div class="yakitori"></div>, <div class="sashimi"></div>]
getElements([sushi, unagi, '.sashimi', '.wasabi']) //returns: [<div class="sushi"></div>, <div class="unagi"></div>, <div class="sashimi"></div>]
getElements('.wasabi') //returns: []
//es5
var sushi = Chirashi.createElement('.sushi')
var unagi = Chirashi.createElement('.unagi')
var yakitori = Chirashi.createElement('.yakitori')
var sashimi = Chirashi.createElement('.sashimi')
Chirashi.append(document.body, [sushi, unagi, yakitori, sashimi])
Chirashi.getElements('div') //returns: [<div class="sushi"></div>, <div class="unagi"></div>, <div class="yakitori"></div>, <div class="sashimi"></div>]
Chirashi.getElements('.yakitori, .sashimi') //returns: [<div class="yakitori"></div>, <div class="sashimi"></div>]
Chirashi.getElements([sushi, unagi, '.sashimi', '.wasabi']) //returns: [<div class="sushi"></div>, <div class="unagi"></div>, <div class="sashimi"></div>]
Chirashi.getElements('.wasabi') //returns: []
Test if element is a dom element. Doesn't resolve selectors.
(any) The element to test.
boolean:
isDomElement - true if element is HTMLElement, SVGElement, window, document or Text.
//esnext
import { createElement, append, isDomElement } from 'chirashi'
const sushi = createElement('.sushi')
append(document.body, sushi)
isDomElement(window) //returns: true
isDomElement(sushi) //returns: true
isDomElement('.sushi') //returns: false
//es5
var sushi = Chirashi.createElement('.sushi')
Chirashi.append(document.body, sushi)
Chirashi.isDomElement(window) //returns: true
Chirashi.isDomElement(sushi) //returns: true
Chirashi.isDomElement('.sushi') //returns: false
Iterates over classes and add it on each element of elements.
((string | Array | NodeList | HTMLCollection | HTMLElement | SVGElement)) The iterable, selector or elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, addClass } from 'chirashi'
const maki = createElement('div')
addClass(maki, 'wasabi') //returns: <div class="wasabi"></div>
addClass(maki, 'seaweed, cheese') //returns: <div class="wasabi seaweed cheese"></div>
addClass(maki, 'avocado salmon') //returns: <div class="wasabi seaweed cheese avocado salmon"></div>
addClass(maki, ['egg', 'tuna']) //returns: <div class="wasabi seaweed cheese avocado salmon egg tuna"></div>
//es5
var maki = Chirashi.createElement('div')
Chirashi.addClass(maki, 'wasabi') //returns: <div class="wasabi"></div>
Chirashi.addClass(maki, 'seaweed, cheese') //returns: <div class="wasabi seaweed cheese"></div>
Chirashi.addClass(maki, 'avocado salmon') //returns: <div class="wasabi seaweed cheese avocado salmon"></div>
Chirashi.addClass(maki, ['egg', 'tuna']) //returns: <div class="wasabi seaweed cheese avocado salmon egg tuna"></div>
Appends each node to element.
((string | HTMLElement | SVGElement)) Selector or element.
((Array | string | HTMLElement | SVGElement | Text)) Dom element, string or array of dom elements or strings. Strings will be passed to createElement then append.
(HTMLElement | SVGElement | boolean):
element - The element for chaining or false if nodes can't be appended.
//esnext
import { createElement, append } from 'chirashi'
const maki = createElement('.maki')
append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
const avocado = createElement('.avocado')
append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
var avocado = Chirashi.createElement('.avocado')
Chirashi.append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
Returns an element's children.
((string | HTMLElement | SVGElement)) Selector or element.
HTMLCollection:
children - Element's children or null if elements has no children property or isn't a dom element.
//esnext
import { createElement, append, children } from 'chirashi'
const maki = createElement('.maki')
append(maki, ['.salmon', '.avocado'])
children(maki) //returns: [<div class="salmon"></div>, <div class="avocado"></div>]
//es5
const maki = Chirashi.createElement('.maki')
Chirashi.append(maki, ['.salmon', '.avocado'])
Chirashi.children(maki) //returns: [<div class="salmon"></div>, <div class="avocado"></div>]
Clones element.
((string | HTMLElement | SVGElement)) Selector or element.
(string | HTMLElement | SVGElement | boolean):
clone - element's clone or false if element isn't a dom element or can't be cloned.
//esnext
import { createElement, append, clone } from 'chirashi'
const maki = createElement('.maki')
clone(maki) //returns: <div class="maki"></div>
const sushi = createElement('.sushi')
append(document.body, sushi)
clone('.sushi') //returns: <div class="sushi"></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.clone(maki) //returns: <div class="maki"></div>
var sushi = Chirashi.createElement('.sushi')
Chirashi.append(document.body, sushi)
Chirashi.clone('.sushi') //returns: <div class="sushi"></div>
Get closest element matching the tested selector or tested element traveling up the DOM tree from element to limit.
((string | HTMLElement | SVGElement | Text)) Selector or element.
((string | HTMLElement | SVGElement | Text)) The selector or dom element to match.
([(string | document | HTMLElement | SVGElement)]
(default document)
) Returns false when this selector or element is reached.
(boolean | HTMLElement | SVGElement | Text):
matchedElement - The matched element or false.
//esnext
import { createElement, append, closest } from 'chirashi'
const maki = createElement('.maki')
const cheese = createElement('.cheese')
append(maki, cheese)
append(cheese, '.avocado')
append(document.body, maki)
closest('.avocado', '.maki') //returns: <div class="maki"></div>
closest('.avocado', '.maki', '.cheese') //returns: false
//es5
var maki = Chirashi.createElement('.maki')
var cheese = Chirashi.createElement('.cheese')
Chirashi.append(maki, cheese)
Chirashi.append(cheese, '.avocado')
Chirashi.append(document.body, maki)
Chirashi.closest('.avocado', '.maki') //returns: <div class="maki"></div>
Chirashi.closest('.avocado', '.maki', '.cheese') //returns: false
Creates a dom element from an HTML string, tag or css selector.
(string) The html string, tag or css selector.
(HTMLElement | SVGElement):
element - The dom element created from the string.
//esnext
import { createElement } from 'chirashi'
const maki = createElement('a#sushi.link[data-href="chirashijs.org"][data-link]') //returns: <a class="link" id="sushi" data-href="chirashijs.org" data-link></a>
const greetings = createElement('<h1>Hello <strong>World</strong>!</h1>') //returns: <h1>Hello <strong>World</strong>!</h1>
//es5
var maki = Chirashi.createElement('a#sushi.link[data-href="chirashijs.org"][data-link]') //returns: <a class="link" id="sushi" data-href="chirashijs.org" data-link></a>
var greetings = Chirashi.createElement('<h1>Hello <strong>World</strong>!</h1>') //returns: <h1>Hello <strong>World</strong>!</h1>
Iterates over elements, returning an array of all elements matching tested selector.
((string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement | Text)) The iterable, selector or elements.
((string | HTMLElement | SVGElement | Text)) The selector or dom element to match.
Array:
matching - The array of filtered elements.
//esnext
import { createElement, append, filter } from 'chirashi'
const salmonMaki = createElement('.salmon.maki')
const tunaMaki = createElement('.tuna.maki')
const salmonSushi = createElement('.salmon.sushi')
const tunaSushi = createElement('.tuna.sushi')
append(document.body, [salmonMaki, tunaMaki, salmonSushi, tunaSushi])
filter('div', '.salmon') //returns: [<div class="salmon sushi"></div>, <div class="salmon maki"></div>]
filter([salmonMaki, tunaMaki, salmonSushi, tunaSushi], '.maki') //returns: [<div class="salmon maki"></div>, <div class="tuna maki"></div>]
filter('div', '.salmon') //returns: [<div class="salmon sushi"></div>, <div class="salmon maki"></div>]
//es5
var salmonMaki = Chirashi.createElement('.salmon.maki')
var tunaMaki = Chirashi.createElement('.tuna.maki')
var salmonSushi = Chirashi.createElement('.salmon.sushi')
var tunaSushi = Chirashi.createElement('.tuna.sushi')
Chirashi.append(document.body, [salmonMaki, tunaMaki, salmonSushi, tunaSushi])
Chirashi.filter('div', '.salmon') //returns: [<div class="salmon sushi"></div>, <div class="salmon maki"></div>]
Chirashi.filter([salmonMaki, tunaMaki, salmonSushi, tunaSushi], '.maki') //returns: [<div class="salmon maki"></div>, <div class="tuna maki"></div>]
Chirashi.filter('div', '.salmon') //returns: [<div class="salmon sushi"></div>, <div class="salmon maki"></div>]
Iterates over each element of elements and returns an array containing all elements' children matching a selector.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The iterable, selector or elements.
(string) The selector.
(Array | NodeList | HTMLCollection):
found - The elements' descendants matching the selector.
//esnext
import { createElement, append, find } from 'chirashi'
const maki = createElement('.maki')
append(maki, ['.salmon[data-fish][data-inside]', '.avocado[data-inside]'])
const roll = createElement('.roll')
append(roll, '.tuna[data-fish][data-inside]')
append(document.body, [maki, roll])
find('div', '[data-fish]') //returns: [<div class="salmon" data-fish data-inside></div>, <div class="tuna" data-fish data-inside></div>]
find(maki, '[data-inside]') //returns: [<div class="salmon" data-fish data-inside></div>, <div class="avocado" data-inside></div>]
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(maki, ['.salmon[data-fish][data-inside]', '.avocado[data-inside]'])
var roll = Chirashi.createElement('.roll')
Chirashi.append(roll, '.tuna[data-fish][data-inside]')
Chirashi.append(document.body, [maki, roll])
Chirashi.find('div', '[data-fish]') //returns: [<div class="salmon" data-fish data-inside></div>, <div class="tuna" data-fish data-inside></div>]
Chirashi.find(maki, '[data-inside]') //returns: [<div class="salmon" data-fish data-inside></div>, <div class="avocado" data-inside></div>]
Find the first element's child matching the selector.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The iterable, selector or elements.
(string) The selector to match.
(any)
(HTMLElement | SVGElement | null):
element - The first child of elements matching the selector or null.
//esnext
import { createElement, append, find } from 'chirashi'
const maki = createElement('.maki')
append(maki, ['.salmon[data-fish][data-inside]', '.avocado[data-inside]'])
const roll = createElement('.roll')
append(roll, '.tuna[data-fish][data-inside]')
append(document.body, [maki, roll])
findOne('div', '[data-fish]') //returns: <div class="salmon" data-fish data-inside></div>
findOne(maki, '[data-inside]') //returns: <div class="salmon" data-fish data-inside></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(maki, ['.salmon[data-fish][data-inside]', '.avocado[data-inside]'])
var roll = Chirashi.createElement('.roll')
Chirashi.append(roll, '.tuna[data-fish][data-inside]')
Chirashi.append(document.body, [maki, roll])
Chirashi.findOne('div', '[data-fish]') //returns: <div class="salmon" data-fish data-inside></div>
Chirashi.findOne(maki, '[data-inside]') //returns: <div class="salmon" data-fish data-inside></div>
Get value for named attribute of element.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(string) The attribute's name.
(string | boolean):
value - The value for the attribute or false if no element found.
//esnext
import { createElement, getAttr } from 'chirashi'
const maki = createElement('.maki[data-fish="salmon"]')
getAttr(maki, 'data-fish') //returns: "salmon"
//es5
const maki = Chirashi.createElement('.maki[data-fish="salmon"]')
Chirashi.getAttr(maki, 'data-fish') //returns: "salmon"
Alias on getAttr prefixing name with 'data-'.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(string) The data-attribute's name.
(string | boolean):
value - The value for the data-attribute or false if no element found.
//esnext
import { createElement, getData } from 'chirashi'
const maki = createElement('.maki[data-fish="salmon"]')
getData(maki, 'fish') //returns: "salmon"
//es5
const maki = Chirashi.createElement('.maki[data-fish="salmon"]')
Chirashi.getData(maki, 'fish') //returns: "salmon"
Get the inner html of an element.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(string | null):
innerHTML - The inner html of the element or null if no element found.
//esnext
import { createElement, setHtml, getHtml } from 'chirashi'
const maki = createElement('p.maki')
setHtml(maki, 'salmon')
getHtml(maki) //returns: "salmon"
//es5
var maki = createElement('p.maki')
setHtml(maki, 'salmon')
getHtml(maki) //returns: "salmon"
Get the value for the property name on the element.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(string) The name of the property.
any:
value - The value for the property or null if no element found.
//esnext
import { createElement, append, getProp } from 'chirashi'
const maki = createElement('.maki')
append(maki, '.salmon')
getProp(maki, 'firstChild') //returns: <div class="salmon"></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(maki, '.salmon')
Chirashi.getProp(maki, 'firstChild') //returns: <div class="salmon"></div>
Iterates over classes and test if element has each.
((string | HTMLElement | SVGElement)) The selector or dom element.
boolean:
hasClass - Is true if element has all classes.
//esnext
import { createElement, hasClass } from 'chirashi'
const maki = createElement('.salmon.cheese.maki')
hasClass(maki, 'salmon cheese') //returns: true
hasClass(maki, ['salmon', 'avocado']) //returns: false
//es5
var maki = Chirashi.createElement('.salmon.cheese.maki')
Chirashi.hasClass(maki, 'salmon cheese') //returns: true
Chirashi.hasClass(maki, ['salmon', 'avocado']) //returns: false
Returns index of element in parent's children.
((string | HTMLElement | SVGElement | Text)) The selector or dom element.
(number | null):
index - The position of element in his parent's children or null if no element found.
//esnext
import { createElement, append, indexInParent } from 'chirashi'
const maki = createElement('.maki')
append(document.body, maki)
append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="cheese" data-cheese="cream"></div></div>
indexInParent('.cheese') //returns: 1
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(document.body, maki)
Chirashi.append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="cheese" data-cheese="cream"></div></div>
Chirashi.indexInParent('.cheese') //returns: 1
Insert nodes after element in his parent.
((string | HTMLElement | SVGElement | Text)) The selector or dom element.
((Array | string | HTMLElement | SVGElement | Text)) Array of dom elements or string to create it using createElement.
(HTMLElement | SVGElement | undefined):
element - The element for chaining or undefined if no element found or element has no parent.
//esnext
import { createElement, append, insertAfter } from 'chirashi'
const maki = createElement('.maki')
append(document.body, maki)
append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]'])
insertAfter('.salmon', ['.avocado', '.wasabi']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="wasabi"></div><div class="cheese" data-cheese="cream"></div></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(document.body, maki)
Chirashi.append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]'])
Chirashi.insertAfter('.salmon', ['.avocado', '.wasabi']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="wasabi"></div><div class="cheese" data-cheese="cream"></div></div>
Insert nodes before element in his parent.
((string | HTMLElement | SVGElement | Text)) The selector or dom element.
((Array | string | HTMLElement | SVGElement | Text)) Array of dom elements or string to create it using createElement.
(HTMLElement | SVGElement | undefined):
element - The element for chaining or undefined if no element found or element has no parent.
//esnext
import { createElement, append, insertBefore } from 'chirashi'
const maki = createElement('.maki')
append(document.body, maki)
append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]'])
insertBefore('.cheese', ['.avocado', '.wasabi']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="wasabi"></div><div class="cheese" data-cheese="cream"></div></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(document.body, maki)
Chirashi.append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]'])
Chirashi.insertBefore('.cheese', ['.avocado', '.wasabi']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="wasabi"></div><div class="cheese" data-cheese="cream"></div></div>
Get the next sibling of element.
((string | HTMLElement | SVGElement | Text)) The selector or dom element.
(HTMLElement | SVGElement | Text | null):
nextElement - The element's next sibling or null if no element found.
//esnext
import { createElement, append, next } from 'chirashi'
const maki = createElement('.maki')
append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
const avocado = createElement('.avocado')
append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
next(avocado) //returns: <div class="cheese" data-cheese="cream"></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
var avocado = Chirashi.createElement('.avocado')
Chirashi.append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
Chirashi.next(avocado) //returns: <div class="cheese" data-cheese="cream"></div>
Returns the parent node of the element.
((string | document | HTMLElement | SVGElement | Text)) The selector or dom element.
(document | HTMLElement | SVGElement | null):
parentElement - The parent node or null if no element found.
//esnext
import { createElement, append, parent } from 'chirashi'
const maki = createElement('.maki')
append(document.body, maki)
append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
parent('.salmon') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
//es5
var maki = Chirashi.createElement('.maki')
append(maki
Chirashi.append(document.body, maki)
Chirashi.append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
Chirashi.parent('.salmon') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
Get the previous sibling of element.
((string | HTMLElement | SVGElement | Text)) The selector or dom element.
(HTMLElement | SVGElement | Text | null):
previousElement - The element's previous sibling or null if no element found.
//esnext
import { createElement, append, prev } from 'chirashi'
const maki = createElement('.maki')
append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
const avocado = createElement('.avocado')
append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
prev(avocado) //returns: <div class="salmon" data-fish="salmon"></div>
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
var avocado = Chirashi.createElement('.avocado')
Chirashi.append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
Chirashi.prev(avocado) //returns: <div class="salmon" data-fish="salmon"></div>
Iterates over elements and removes it from DOM.
((string | HTMLElement | SVGElement | Text)) The selector or dom element.
(any)
(Array | NodeList | HTMLCollection):
removedElements - The array or nodelist of removed dom elements.
//esnext
import { createElement, append, remove } from 'chirashi'
const maki = createElement('.maki')
append(document.body, maki)
append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
const avocado = createElement('.avocado')
append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
remove('.cheese') //returns: [<div class="cheese" data-cheese="cream"></div>]
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(document.body, maki)
Chirashi.append(maki, '.salmon[data-fish="salmon"]') //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div></div>
var avocado = Chirashi.createElement('.avocado')
Chirashi.append(maki, [avocado, '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="avocado"></div><div class="cheese" data-cheese="cream"></div></div>
Chirashi.remove('.cheese') //returns: [<div class="cheese" data-cheese="cream"></div>]
Iterates over attributes and removes it from each element of elements.
((string | Array | NodeList | HTMLCollection | HTMLElement | SVGElement)) The iterable, selector or elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, append, removeAttr } from 'chirashi'
const maki = createElement('.maki')
append(document.body, maki)
append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="cheese" data-cheese="cream"></div></div>
removeAttr('.salmon', 'data-fish') //returns: [<div class="salmon"></div>]
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(document.body, maki)
Chirashi.append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="cheese" data-cheese="cream"></div></div>
Chirashi.removeAttr('.salmon', 'data-fish') //returns: [<div class="salmon"></div>]
Iterates over classes and remove it from each element of elements.
((string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement | Text)) The iterable, selector or elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, removeClass } from 'chirashi'
const maki = createElement('.maki.salmon.cheese.wasabi') //returns: <div class="maki salmon cheese wasabi"></div>
removeClass(maki, 'cheese, wasabi') //returns: [<div class="maki salmon"></div>]
//es5
var maki = Chirashi.createElement('.maki.salmon.cheese.wasabi') //returns: <div class="maki salmon cheese wasabi"></div>
Chirashi.removeClass(maki, 'cheese, wasabi') //returns: [<div class="maki salmon"></div>]
Iterates over attributes and removes it from each element of elements.
((string | Array | NodeList | HTMLCollection | HTMLElement | SVGElement)) The iterable, selector or elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, append, removeData } from 'chirashi'
const maki = createElement('.maki')
append(document.body, maki)
append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="cheese" data-cheese="cream"></div></div>
removeData('.salmon', 'fish') //returns: [<div class="salmon"></div>]
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.append(document.body, maki)
Chirashi.append(maki, ['.salmon[data-fish="salmon"]', '.cheese[data-cheese="cream"]']) //returns: <div class="maki"><div class="salmon" data-fish="salmon"></div><div class="cheese" data-cheese="cream"></div></div>
Chirashi.removeData('.salmon', 'fish') //returns: [<div class="salmon"></div>]
Iterates over attributes as key value pairs and apply on each element of elements.
((Array | string | HTMLElement | SVGElement)) The iterable, selector or elements.
(any) The attributes key value pairs.
(any)
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, setAttr } from 'chirashi'
const maki = createElement('.maki')
setAttr(maki, {
dataFish: 'salmon'
}) //returns: [<div class="maki" data-fish="salmon">]
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.setAttr(maki, {
dataFish: 'salmon'
}) //returns: [<div class="maki" data-fish="salmon">]
Iterates over data-attributes as key value pairs and apply on each element of elements.
((Array | string | HTMLElement | SVGElement)) The iterable, selector or elements.
(any) The data-attributes key value pairs.
(any)
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, setData } from 'chirashi'
const maki = createElement('.maki')
setData(maki, {
fish: 'salmon'
}) //returns: [<div class="maki" data-fish="salmon">]
//es5
var maki = Chirashi.createElement('.maki')
Chirashi.setData(maki, {
fish: 'salmon'
}) //returns: [<div class="maki" data-fish="salmon">]
Set the inner html of elements.
((Array | string | HTMLElement | SVGElement)) The iterable, selector or elements.
(string) The html to insert.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, setHtml, getHtml } from 'chirashi'
const maki = createElement('p.maki')
setHtml(maki, 'salmon') //returns: [<p class="maki">salmon</p>]
getHtml(maki) //returns: "salmon"
//es5
var maki = createElement('p.maki')
setHtml(maki, 'salmon') //returns: [<p class="maki">salmon</p>]
getHtml(maki) //returns: "salmon"
Apply props as key value pairs on each element of elements.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The iterable, selector or elements.
(any) The props key value pairs.
(any)
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, setProp, getProp } from 'chirashi'
const maki = createElement('input.maki')
setProp(maki, { value: 'こんにちは世界' })
getProp(maki, 'value') //returns: こんにちは世界
//es5
var maki = Chirashi.createElement('input.maki')
Chirashi.setProp(maki, { value: 'こんにちは世界' })
Chirashi.getProp(maki, 'value') //returns: こんにちは世界
Iterates over classes and toggle it on each element of elements.
((string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement | Text)) The iterable, selector or elements.
(any)
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, toggleClass, clone, setData, getData } from 'chirashi'
const maki = createElement('.wasabi.salmon.maki') //returns: <div class="maki salmon wasabi"></div>
const sushi = createElement('.salmon.sushi') //returns: <div class="sushi salmon"></div>
toggleClass([maki, sushi], 'wasabi') //returns: [<div class="maki salmon"></div>, <div class="sushi salmon wasabi"></div>]
const scdMaki = clone(maki)
setData(maki, { for: 'leonard' })
setData(scdMaki, { for: 'sheldon' })
toggleClass([maki, scdMaki], {
cheese: element => {
return getData(element, 'for') !== 'leonard'
}
}) //returns: [<div class="maki salmon cheese" data-for="sheldon"></div>, <div class="maki salmon" data-for="leonard"></div>]
//es5
var maki = Chirashi.createElement('.wasabi.salmon.maki') //returns: <div class="wasabi salmon maki"></div>
var sushi = Chirashi.createElement('.salmon.sushi') //returns: <div class="salmon sushi"></div>
Chirashi.toggleClass([maki, sushi], 'wasabi') //returns: [<div class="maki salmon"></div>, <div class="sushi salmon wasabi"></div>]
var scdMaki = Chirashi.clone(maki)
Chirashi.setData(maki, { for: 'leonard' })
Chirashi.setData(scdMaki, { for: 'sheldon' })
Chirashi.toggleClass([maki, scdMaki], {
cheese: function (element) {
return Chirashi.getData(element, 'for') !== 'leonard'
}
}) //returns: [<div class="maki salmon cheese" data-for="sheldon"></div>, <div class="maki salmon" data-for="leonard"></div>]
Bind events listener on delegate and execute callback when target matches selector (targets doesn't have to be in the DOM at binding).
(string) The selector to match.
(Object<string, bindCallback>) An object in which keys are events to bind seperated with coma and/or spaces and values are bindCallbacks.
(any
(default document.body)
)
Object:
object - An object with unbind method for unbinding.
unbindCallback:
object.unbind - The unbind method.
//esnext
import { createElement, append, bind, trigger } from 'chirashi'
const listener = bind('.cheese, .wasabi', {
click(e, target) => {
console.log('clicked', target)
},
'mouseenter mousemove': (e, target) => {
console.log('mouse in', target)
}
})
const maki = createElement('a.cheese.maki')
const sushi = createElement('a.wasabi.sushi')
append(document.body, [maki, sushi])
trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
listener.unbind('mouseenter mousemove') //remove mouseenter and mousemove listeners
listener.unbind() //remove all listeners
//es5
var listener = Chirashi.bind('.cheese, .wasabi', {
'click': function (e, target) {
console.log('clicked', target)
},
'mouseenter mousemove': function(e, target) {
console.log('mouse in', target)
}
})
var maki = Chirashi.createElement('a.cheese.maki')
var sushi = Chirashi.createElement('a.wasabi.sushi')
Chirashi.append(document.body, [maki, sushi])
Chirashi.trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
Chirashi.trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
listener.unbind('mouseenter mousemove') //remove mouseenter and mousemove listeners
listener.unbind() //remove all listeners
Callback to execute on event using delegate.
(Event) Triggered event.
((HTMLElement | SVGElement)) Target of the event.
Called to unbind one or all events.
([string]) The events to unbind. Must be provided in the same syntax as in input.
Called to remove one or all events listeners of one or all elements.
([(string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement)]) The iterable, selector or elements to unbind.
([string]) The events to unbind. Must be provided in the same syntax as in input.
Callback to execute on event.
(Event) Triggered event.
Bind events listener on each element of elements.
((string | Array | NodeList | HTMLCollection | window | document | HTMLElement | SVGElement)) The iterable, selector or elements.
(Object<string, eventCallback>) An object in which keys are events to bind seperated with coma and/or spaces and values are eventCallbacks.
Object:
object - An object with off method to remove events listeners.
offCallback:
object.off - The off method.
//esnext
import { createElement, append, on, trigger } from 'chirashi'
const maki = createElement('a.cheese.maki')
const sushi = createElement('a.wasabi.sushi')
append(document.body, [maki, sushi])
const listener = on('.cheese, .wasabi', {
click(e, target) {
console.log('clicked', target)
},
'mouseenter mousemove': (e, target) => {
console.log('mouse in', target)
}
})
trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
listener.off(maki, 'click') //remove click event listener on maki
listener.off() //remove all listeners from all elements
//es5
var listener = Chirashi.bind('.cheese, .wasabi', {
'click': function (e, target) {
console.log('clicked', target)
},
'mouseenter mousemove': function(e, target) {
console.log('mouse in', target)
}
})
var maki = Chirashi.createElement('a.cheese.maki')
var sushi = Chirashi.createElement('a.wasabi.sushi')
Chirashi.append(document.body, [maki, sushi])
Chirashi.trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
Chirashi.trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
listener.off(maki, 'click') //remove click event listener on maki
listener.off() //remove all listeners from all elements
Bind events listener on each element of elements and unbind after first triggered.
(Object<string, eventCallback>) An object in which keys are events to bind seperated with coma and/or spaces and values are eventCallbacks.
([boolean]
(default false)
) If true only current target's events listeners will be removed after trigger.
([boolean]
(default false)
) If true only triggered event group of events listeners will be removed.
Object:
cancelObject - An object with cancel method for unbinding.
Object.cancel:
cancel - cancel method.
//esnext
import { createElement, append, once, trigger } from 'chirashi'
const maki = createElement('a.cheese.maki')
const sushi = createElement('a.wasabi.sushi')
append(document.body, [maki, sushi])
const listener = once('.cheese, .wasabi', {
click(e, target) => {
console.log('clicked', target)
},
'mouseenter mousemove': (e, target) => {
console.log('mouse in', target)
}
}, true, true)
trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
// click event listener was auto-removed from maki
trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
// click event listener was auto-removed from sushi
listener.cancel() //remove all listeners from all elements
const listener2 = once('.cheese, .wasabi', {
click(e, target) => {
console.log('clicked', target)
}
})
trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
// all events listeners were auto-removed from all elements
trigger(sushi, 'click') //simulate user's click
// won't log anything
//es5
var maki = Chirashi.createElement('a.cheese.maki')
var sushi = Chirashi.createElement('a.wasabi.sushi')
Chirashi.append(document.body, [maki, sushi])
var listener = Chirashi.once('.cheese, .wasabi', {
click: function (e, target) {
console.log('clicked', target)
},
'mouseenter mousemove': function (e, target) {
console.log('mouse in', target)
}
}, true, true)
Chirashi.trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
// click event listener was auto-removed from maki
Chirashi.trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
// click event listener was auto-removed from sushi
listener.cancel() //remove all listeners from all elements
var listener2 = Chirashi.once('.cheese, .wasabi', {
click: function (e, target) {
console.log('clicked', target)
}
})
Chirashi.trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
// all events listeners were auto-removed from all elements
Chirashi.trigger(sushi, 'click') //simulate user's click
// won't log anything
Execute callback when dom is ready.
(eventCallback) The callback.
//esnext
import { ready } from 'chirashi'
ready(() => {
console.log('Hello World!')
})
// Dom already complete or event fired.
// LOGS: "Hello World!"
//es5
Chirashi.ready(function () {
console.log('Hello World!')
})
// Dom already complete or event fired.
// LOGS: "Hello World!"
Trigger events on elements with data
(string) The events that should be tiggered seperated with spaces
(Object) The events' data
(any
(default {})
)
(string | Array | NodeList | HTMLCollection):
elements - The iterable for chaining
//esnext
import { createElement, append, on, trigger } from 'chirashi'
const maki = createElement('a.cheese.maki')
const sushi = createElement('a.wasabi.sushi')
append(document.body, [maki, sushi])
const listener = on('.cheese, .wasabi', {
click(e, target) => {
console.log('clicked', target)
}
})
trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
//es5
var listener = Chirashi.bind('.cheese, .wasabi', {
'click': function (e, target) {
console.log('clicked', target)
}
})
var maki = Chirashi.createElement('a.cheese.maki')
var sushi = Chirashi.createElement('a.wasabi.sushi')
Chirashi.append(document.body, [maki, sushi])
Chirashi.trigger(maki, 'click') //simulate user's click
// LOGS: "clicked" <a class="maki cheese"></a>
Chirashi.trigger(sushi, 'click') //simulate user's click
// LOGS: "clicked" <a class="sushi wasabi"></a>
Clear inline style properties from elements.
(any)
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { createElement, setStyle, clearStyle } from 'chirashi'
const maki = createElement('a.cheese.maki')
setStyle(maki, {
position: 'absolute',
top: 10,
width: 200,
height: 200,
background: 'red'
})
clearStyle(maki, ['position', top])
clearStyle(maki, 'width, height, background')
//es5
var maki = Chirashi.createElement('a.cheese.maki')
Chirashi.setStyle(maki, {
position: 'absolute',
top: 10,
width: 200,
height: 200,
background: 'red'
})
Chirashi.clearStyle(maki, ['position', top])
Chirashi.clearStyle(maki, 'width, height, background')
Return the screen relative position of an element.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(Object | boolean):
clientRect - Element's screen position or false if no element found.
Object.bottom:
bottom - Y-coordinate, relative to the viewport origin, of the bottom of the rectangle box.
Object.height:
height - Height of the rectangle box (This is identical to bottom minus top).
Object.left:
left - X-coordinate, relative to the viewport origin, of the left of the rectangle box.
Object.right:
right - X-coordinate, relative to the viewport origin, of the right of the rectangle box.
Object.top:
top - Y-coordinate, relative to the viewport origin, of the top of the rectangle box.
Object.width:
width - Width of the rectangle box (This is identical to right minus left).
esnext
import { setStyle, append, clientRect } from 'chirashi'
setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
append(document.body, '.poulp')
const poulp = setStyle('.poulp', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
background: 'red'
})
clientRect(poulp) // returns: { bottom: 300, height: 100, left: 240, right: 0, top: 200, width: 100 }
es5
Chirashi.setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
Chirashi.append(document.body, '.poulp')
var poulp = Chirashi.setStyle('.poulp', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
background: 'red'
})
Chirashi.clientRect(poulp) // returns: { bottom: 300, height: 100, left: 240, right: 0, top: 200, width: 100 }
Get element's height in pixels.
((string | HTMLElement | SVGElement)) Selector or element.
([boolean]
(default false)
) If true height will include scrollbar and borders to size.
number:
height - The height in pixels.
//esnext
import { append, setStyle, getHeight } from 'chirashi'
append(document.body, '.maki')
const maki = setStyle('.maki', {
display: 'block',
border: '20px solid red',
padding: 10,
height: 200,
width: 200
})
getHeight(maki, true) //returns: 260
getHeight(maki) //returns: 220
//es5
Chirashi.append(document.body, '.maki')
var maki = Chirashi.setStyle('.maki', {
display: 'block',
border: '20px solid red',
padding: 10,
height: 200,
width: 200
})
Chirashi.getHeight(maki, true) //returns: 260
Chirashi.getHeight(maki) //returns: 220
Get element's size in pixels.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element
([boolean]
(default false)
) If true size will include scrollbar and borders.
number:
size - The size in pixels.
//esnext
import { append, setStyle, getSize } from 'chirashi'
append(document.body, '.maki')
const maki = setStyle('.maki', {
display: 'block',
border: '20px solid red',
padding: 10,
height: 200,
width: 200
})
getSize(maki, true) //returns: { width: 260, height: 260 }
getSize(maki) //returns: { width: 220, height: 220 }
//es5
Chirashi.append(document.body, '.maki')
var maki = Chirashi.setStyle('.maki', {
display: 'block',
border: '20px solid red',
padding: 10,
height: 200,
width: 200
})
Chirashi.getSize(maki, true) //returns: { width: 260, height: 260 }
Chirashi.getSize(maki) //returns: { width: 220, height: 220 }
Get style property of element.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element
(any)
number:
value - The value for the property
//esnext
import { append, setStyle, getStyle } from 'chirashi'
append(document.body, '.maki')
const maki = setStyle('.maki', {
display: 'block',
position: 'relative',
top: 10
})
getStyle(maki, 'display') //returns: "block"
getStyle(maki, 'top') //returns: 10
//es5
Chirashi.append(document.body, '.maki')
var maki = Chirashi.setStyle('.maki', {
display: 'block',
position: 'relative',
top: 10
})
Chirashi.getStyle(maki, 'display') //returns: "block"
Chirashi.getStyle(maki, 'top') //returns: 10
Get element's width in pixels.
((string | HTMLElement | SVGElement)) Selector or element.
([boolean]
(default false)
) If true width will include scrollbar and borders to size.
number:
width - The width in pixels.
//esnext
import { append, setStyle, getWidth } from 'chirashi'
append(document.body, '.maki')
const maki = setStyle('.maki', {
display: 'block',
border: '20px solid red',
padding: 10,
height: 200,
width: 200
})
getWidth(maki, true) //returns: 260
getWidth(maki) //returns: 220
//es5
Chirashi.append(document.body, '.maki')
var maki = Chirashi.setStyle('.maki', {
display: 'block',
border: '20px solid red',
padding: 10,
height: 200,
width: 200
})
Chirashi.getWidth(maki, true) //returns: 260
Chirashi.getWidth(maki) //returns: 220
Hide each element of elements using visibility.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { append, hide, getStyle }
append(document.body, '.maki')
const maki = hide('.maki')
getStyle(maki, 'visibility') // returns: "hidden"
//es5
Chirashi.append(document.body, '.maki')
var maki = Chirashi.hide('.maki')
Chirashi.getStyle(maki, 'visibility') // returns: "hidden"
Returns the top and left offset of an element. Offset is relative to web page.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(Object | boolean):
offset - Offset object or false if no element found.
Object.top:
top - Top offset in pixels.
Object.left:
left - Left offset in pixels.
//esnext
import { setStyle, append, offset }
setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
append(document.body, '.sushi')
const sushi = setStyle('.sushi', {
display: 'block',
width: 100,
height: 100,
position: 'absolute',
top: 200,
left: 240,
background: 'red'
})
offset(sushi) // returns: { top: 200, left: 240 }
//es5
Chirashi.setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
Chirashi.append(document.body, '.sushi')
var sushi = Chirashi.setStyle('.sushi', {
display: 'block',
width: 100,
height: 100,
position: 'absolute',
top: 200,
left: 240,
background: 'red'
})
Chirashi.offset(sushi) // returns: { top: 200, left: 240 }
Return the top and left position of an element. Position is relative to parent.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(Object | boolean):
offset - Offset object or false if no element found.
Object.top:
top - Top position in pixels.
Object.left:
left - Left position in pixels.
//esnext
import { append, setStyle, position } from 'chirashi'
setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
append(document.body, '.maki')
append('.maki', '.salmon')
setStyle('.maki', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
borderRadius: '50%',
background: 'black'
})
const salmon = setStyle('.salmon', {
display: 'block',
position: 'absolute',
top: 20,
left: 10,
width: 10,
height: 10,
borderRadius: '50%',
background: 'pink'
})
position(salmon) // returns: { top: 20, left: 10 }
//es5
Chirashi.setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
Chirashi.append(document.body, '.maki')
Chirashi.append('.maki', '.salmon')
Chirashi.setStyle('.maki', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
borderRadius: '50%',
background: 'black'
})
var salmon = Chirashi.setStyle('.salmon', {
display: 'block',
position: 'absolute',
top: 20,
left: 10,
width: 10,
height: 10,
borderRadius: '50%',
background: 'pink'
})
Chirashi.position(salmon) // returns: { top: 20, left: 10 }
Return the screen relative position of an element.
((string | Array | NodeList | HTMLCollection | document | HTMLElement | SVGElement)) The selector or dom element.
(Object | boolean):
screenPosition - Element's screen position or false if no element found.
Object.top:
top - Y-coordinate, relative to the viewport origin, of the top of the rectangle box.
Object.left:
left - X-coordinate, relative to the viewport origin, of the left of the rectangle box.
esnext
import { setStyle, append, screenPosition } from 'chirashi'
setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
append(document.body, '.poulp')
const poulp = setStyle('.poulp', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
background: 'red'
})
screenPosition(poulp) // returns: { top: 200, left: 240 }
es5
Chirashi.setStyle([document.documentElement, document.body], {
position: 'relative',
margin: 0,
padding: 0
})
Chirashi.append(document.body, '.poulp')
var poulp = Chirashi.setStyle('.poulp', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
background: 'red'
})
Chirashi.screenPosition(poulp) // returns: { top: 200, left: 240 }
Set the provided height to elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { append, setHeight } from 'chirashi'
append(document.body, '.maki')
setHeight('.maki', 20) // returns: [<div class="maki" style="height: 20px;"></div>]
setHeight('.maki', '100%') // returns: [<div class="maki" style="height: 100%;"></div>]
//es5
Chirashi.append(document.body, '.maki')
Chirashi.setHeight('.maki', 20) // returns: [<div class="maki" style="height: 20px;"></div>]
Chirashi.setHeight('.maki', '100%') // returns: [<div class="maki" style="height: 100%;"></div>]
Set the provided size to elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { append, setSize } from 'chirashi'
append(document.body, '.maki')
setSize('.maki', 20, '100%') // returns: [<div class="maki" style="width: 20px; height: 100%;"></div>]
//es5
Chirashi.append(document.body, '.maki')
Chirashi.setSize('.maki', 20, '100%') // returns: [<div class="maki" style="width: 20px; height: 100%;"></div>]
Set the provided style to elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { append, setStyle, position } from 'chirashi'
append(document.body, '.maki')
append('.maki', '.salmon')
setStyle('.maki', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
borderRadius: '50%',
background: 'black'
}) // returns: [<div class="maki" style="display: block; position: absolute; top: 200px; left: 240px; width: 100px; height: 100px; border-radius: 50%; background: black;"><div class="salmon"></div></div>]
const salmon = setStyle('.salmon', {
display: 'block',
position: 'absolute',
top: 20,
left: 10,
width: 10,
height: 10,
borderRadius: '50%',
background: 'pink'
}) // returns: [<div class="salmon" style="display: block; position: absolute; top: 20px; left: 10px; width: 10px; height: 10px; border-radius: 50%; background: pink;"></div>]
//es5
Chirashi.append(document.body, '.maki')
Chirashi.append('.maki', '.salmon')
Chirashi.setStyle('.maki', {
display: 'block',
position: 'absolute',
top: 200,
left: 240,
width: 100,
height: 100,
borderRadius: '50%',
background: 'black'
}) // returns: [<div class="maki" style="display: block; position: absolute; top: 200px; left: 240px; width: 100px; height: 100px; border-radius: 50%; background: black;"><div class="salmon"></div></div>]
const salmon = Chirashi.setStyle('.salmon', {
display: 'block',
position: 'absolute',
top: 20,
left: 10,
width: 10,
height: 10,
borderRadius: '50%',
background: 'pink'
}) // returns: [<div class="salmon" style="display: block; position: absolute; top: 20px; left: 10px; width: 10px; height: 10px; border-radius: 50%; background: pink;"></div>]
Set the provided width to elements.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { append, setWidth } from 'chirashi'
append(document.body, '.maki')
setWidth('.maki', 20) // returns: [<div class="maki" style="width: 20px;"></div>]
setWidth('.maki', '100%') // returns: [<div class="maki" style="width: 100%;"></div>]
//es5
Chirashi.append(document.body, '.maki')
Chirashi.setWidth('.maki', 20) // returns: [<div class="maki" style="width: 20px;"></div>]
Chirashi.setWidth('.maki', '100%') // returns: [<div class="maki" style="width: 100%;"></div>]
Show each element of elements using visibility.
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
//esnext
import { append, show, getStyle }
append(document.body, '.maki')
const maki = show('.maki')
getStyle(maki, 'visibility') // returns: "hidden"
//es5
Chirashi.append(document.body, '.maki')
var maki = Chirashi.show('.maki')
Chirashi.getStyle(maki, 'visibility') // returns: "visible"
Compute and apply 3d transform matrix from provided transformation to each element of elements.
(Transformation) The transformation as an object
(Array | NodeList | HTMLCollection):
domElements - The array or nodelist of dom elements from elements.
function:
domElements.chrshPush - Methods to push dom elements into the array. Accepts same input as getElements.
//esnext
import { createElement, setHtml, transform } from 'chirashi'
const wasabiPea = createElement('p')
setHtml(wasabiPea, 'Wasabi')
transform(wasabiPea, {}) // returns: [<p style="transform: "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
transform(wasabiPea, {x: 5, y: 6, z: 7}) // returns: [<p style="transform: "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,5,6,7,1)">Wasabi</p>]
transform(wasabiPea, {scale: 2}) // returns: [<p style="transform: "matrix3d(2,0,0,0,0,2,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
transform(wasabiPea, {scale: {x: 2, y: 3, z: 4}}) // returns: [<p style="transform: "matrix3d(2,0,0,0,0,3,0,0,0,0,4,0,0,0,0,1)">Wasabi</p>]
transform(wasabiPea, {rotate: 45}) // returns: [<p style="transform: "matrix3d(0.53,0.85,0,0,-0.85,0.53,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
transform(wasabiPea, {rotate: {x: 45, y: 20, z: 15}}) // returns: [<p style="transform: "matrix3d(-0.31,0.65,-0.91,0,-0.65,-0.4,0.85,0,0.91,-0.85,0.21,0,0,0,0,1)">Wasabi</p>]
transform(wasabiPea, {skew: 45}) // returns: [<p style="transform: "matrix3d(1,1.62,0,0,1.62,1,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
transform(wasabiPea, {skew: {x: 25, y: 45}}) // returns: [<p style="transform: "matrix3d(1,1.62,0,0,-0.13,1,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
transform(wasabiPea, {x: 5, y: 6, z: 7, scale: {x: 2, y: 3}, rotate: {x: 45, y: 20, z: 15}, skew: {x: 25, y: 45}}) // returns: [<p style="transform: "matrix3d(-0.62,2.27,-0.91,0,-0.78,-1.2,0.85,0,0.91,-0.85,0.21,0,5,6,7,1)">Wasabi</p>]
//es5
var wasabiPea = Chirashi.createElement('p')
Chirashi.setHtml(wasabiPea, 'Wasabi')
Chirashi.transform(wasabiPea, {}) // returns: [<p style="transform: "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {x: 5, y: 6, z: 7}) // returns: [<p style="transform: "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,5,6,7,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {scale: 2}) // returns: [<p style="transform: "matrix3d(2,0,0,0,0,2,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {scale: {x: 2, y: 3, z: 4}}) // returns: [<p style="transform: "matrix3d(2,0,0,0,0,3,0,0,0,0,4,0,0,0,0,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {rotate: 45}) // returns: [<p style="transform: "matrix3d(0.53,0.85,0,0,-0.85,0.53,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {rotate: {x: 45, y: 20, z: 15}}) // returns: [<p style="transform: "matrix3d(-0.31,0.65,-0.91,0,-0.65,-0.4,0.85,0,0.91,-0.85,0.21,0,0,0,0,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {skew: 45}) // returns: [<p style="transform: "matrix3d(1,1.62,0,0,1.62,1,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {skew: {x: 25, y: 45}}) // returns: [<p style="transform: "matrix3d(1,1.62,0,0,-0.13,1,0,0,0,0,1,0,0,0,0,1)">Wasabi</p>]
Chirashi.transform(wasabiPea, {x: 5, y: 6, z: 7, scale: {x: 2, y: 3}, rotate: {x: 45, y: 20, z: 15}, skew: {x: 25, y: 45}}) // returns: [<p style="transform: "matrix3d(-0.62,2.27,-0.91,0,-0.78,-1.2,0.85,0,0.91,-0.85,0.21,0,5,6,7,1)">Wasabi</p>]
([number])
: Translation value on x axis in pixels.
([number])
: Translation value on y axis in pixels.
([number])
: Translation value on z axis in pixels.