Quantcast
Channel: JavaScript | かちびと.net
Viewing all 295 articles
Browse latest View live

uilangやAlpine.js等にインスパイアされた、簡単なDOM操作を手軽に行える超軽量スクリプト・「Fluor.js」

$
0
0

Fluor.js


Fluor.jsはちょっとしたDOM操作を手軽に行える超軽量スクリプトです。uilangAlpine.js等にインスパイアされたそう

classの付与/除去やクリックイベント、トグルなどなど需要の高そうな操作を簡単なコードで可能にしてくれます

というわけでためしに使ってみました

Sample

クリックイベントの動作サンプルです。学習コストが殆どなさそうなのが良さげでした

<script type="module" src="//cdn.jsdelivr.net/npm/fluor@latest/dist/fluor.min.js"></script>

スクリプトを読み込みます。(※まだβというか実験段階らしいのでCDNを使う場合はバージョンに気を付けてください)

つぎにコードを書くんですが、<script type="fluor">というようにtype=”fluorを追加します

<script type="fluor">
    setup("clicks", 0)
    on("click", "button", set("clicks", n => n + 1))
  </script>

上のサンプルではクリックイベントを設定してあります

他いろいろ機能揃えられています。ユーティリティライブラリとして十分機能してくれそうですね。とても軽量で他ライブラリへの依存もないので使いやすい印象です

ライセンスの明記はGithubにはありませんでしたがjsDelivrにはMITとの明記がありました。不安なら開発者に尋ねてみてください

Fluor.js


シンプルで扱いやすいHTMLテーブルライブラリ・「Grid.js」

$
0
0

Grid.js

Grid.jsはシンプルで扱いやすいHTMLテーブルライブラリです。ReactやAngular、Vueなどは勿論、バニラでも問題なく動作します

9kbと非常に軽量で使い方もすごく簡単です。データを元に自動で指定した要素にtableを作成します。

ソート機能や検索、ページネーション機能なども付いてます。試しに使ってみました

example

データが少ないのでページングは飾りになってしまっています。あと、現段階で、ソートは数値をうまくソートできないみたいです。

Grid.jsの使い方はとても簡単です。

<link href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css" rel="stylesheet" />
<script src="https://unpkg.com/gridjs"></script>

CSSとJSを読み込みます。CDNも用意されていますので今回はCDNを使います

new gridjs.Grid({
	columns: ["名前", "住まい", "好きな物"],
	sort: true,
	search: true,
	pagination: true,
	data: [
		["たかし", "東京", "ぶどう"],
		["ゆみ", "東京", "もも"],
		["ジョン", "福岡", "りんご"],
		["あきら", "青森", "なし"],
		["あかり", "宮崎", "さんま"]
	]
}).render(document.getElementById("wrapper"));

columnsでthを定義します。sort、search、paginationはそれぞれtrue/falseで機能のon/offを設定します

最後にdataで各データを入力し、最後に要素を指定すればOK

<div id="wrapper"></div>

要素を用意すればHTMLテーブルが実装されます

server: {
    url: 'https://example.com/api/films/',
    then: data => data.results.map(movie => [movie.title, movie.director, movie.producer])
  } 

サーバーからデータを読み込む事も可能です

多機能ではないものの、最低限欲しい機能は揃えられている印象です。膨大なデータの処理という訳でも無いならこの手のライブラリが軽くて学習コストも低いので扱いやすいかなぁと思います。

ライセンスはMITとの事です

Grid.js

チャートも含める事が出来るテーブルライブラリ・「AnyGrids」

$
0
0

AnyGrids


AnyGridsはチャートも含める事が出来るテーブル生成JavaScriptライブラリです。サンプルのように簡単なチャートをテーブルに含める事が出来ます

テーブルといっても厳密にはtable要素ではなくdivをflexboxで並べているのでテーブルでは無いのですが便宜上このように書いてます

以下使用方法です

Ads
<script src="https://unpkg.com/anygrids@latest/anygrids.js"></script>

AnyGridsを読み込みます

チャートのデータはJSONで書きます

const data = [
	{
		id: 1,
		email: "hogehoge",
		first_name: "foo",
		last_name: "bar",
		avatar: "https://picsum.photos/100/100",
		linear: [0, 30, 5, 29, 34],
		bar: [0, 30, 5, 29, 34],
		pie: [0.25, 0.3, 0.45],
		orders: 5
	},
	{
		id: 2,
		email: "piyopiyo",
		first_name: "huga",
		last_name: "hugahuga",
		avatar: "https://picsum.photos/50/50",
		linear: [10, 30, 50, 9, 34],
		bar: [10, 30, 50, 9, 34],
		pie: [0.25, 0.3, 0.45],
		orders: 25
	}
];

テーブルの雛型は以下のように設定します

document.addEventListener("DOMContentLoaded", function () {
	new AnyGrids({
		container: "anygrids", //テーブルを挿入する要素
		data, //JSONデータ
		pagination: {//ページネーション設定
			perPage: 2
		},
		rows: {
			child: {//雛型
				template:
					'<div><img src="avatar"> <div style="display:flex;">first_name last_name</div></div>pie_render'
			}
		},
		columns: [//各カラム設定
			{ field: "id", title: "ID", type: "string", width: 30, sortable: true },
			{ field: "email", title: "メールアドレス", type: "string", width: 200 },
			{
				field: "first_name",
				title: "姓",
				type: "string",
				width: 200,
				sortable: true
			},
			{
				field: "last_name",
				title: "名",
				type: "string",
				width: 100,
				sortable: true
			},
			{
				field: "avatar",
				title: "画像",
				type: "image",
				width: 50,
				class: "avatar"
			},
			{
				field: "linear",
				title: "線グラフ",
				type: "sparklines-linear",
				width: 150
			},
			{ field: "bar", title: "棒グラフ", type: "sparklines-bar", width: 150 },
			{ field: "pie", title: "円グラフ", type: "sparklines-pie", width: 150 },
			{
				field: "orders",
				title: "数",
				type: "number",
				width: 150,
				total: { show: true, label: "合計: " }
			}
		]
	});
});

CSSは書かなくてもスタイリングしてくれましたのでライブラリ側で読み込んでるっぽいです。スタイルを変える時は便宜調整してください。ライセンスは独自ライセンスのようなので使用する場合は目を通してください

AnyGrids

Animate.cssを使用してスクロールに応じてコンテンツにアニメーションエフェクトを追加できる軽量スクリプト・「Josh.js」

$
0
0

Josh.js


Josh.jsはAnimate.cssを使用してスクロールに応じてコンテンツにアニメーションエフェクトを追加できる軽量スクリプトです

他のJSライブラリを必要としない非依存型で、アニメーションにはAnimate.cssを使用するため2kbと非常に軽量です

使い方も簡単です

Ads
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.0/animate.min.css" />
<script src="https://cdn.jsdelivr.net/npm/joshjs@1.0.0/dist/josh.min.js"></script>

Animate.cssとJosh.jsを読み込みます

const josh = new Josh({
        initClass: "foo",
        animateInMobile: true,
        offset: 0.3,
        onDOMChange: true
      });

セッティングします

      <div
        class="foo"
        data-josh-anim-name="zoomInDown"
        data-josh-anim-delay="3.5s"
      >
        hoge
      </div>

各要素でもセッティングすれば完了です。簡単で良いですね。ライセンスはMITとの事です

Josh.js

手軽に扱えるタッチフレンドリーで汎用的なカルーセルライブラリ・「keen-slider」

$
0
0

keen-slider


keen-sliderは手軽に扱えるタッチフレンドリーで汎用的なカルーセルライブラリです。

他ライブラリを必要としない非依存型でタッチデバイスファーストな設計となっています。操作もシンプルで様々な用途に使えそうな印象でした。

という訳で動作テストしてみました。

サンプル

使い方は従来通りです。

<link rel="stylesheet" href="keen-slider.min.css" />
<script src="keen-slider.js"></script>

CSSとライブラリを読み込みます。

var slider = new KeenSlider('#my-keen-slider')

読込先を指定します。

<div id="my-keen-slider" class="keen-slider">
      <div class="keen-slider__slide">1</div>
      <div class="keen-slider__slide">2</div>
      <div class="keen-slider__slide">3</div>
</div>

スライダーを作れば完成です。

サンプルのようにループ可能にしたりオート再生したりデイトピッカーに使用したりエフェクト付与、コントロールUIの有無、react等との併用なども可能です。汎用的で良いですね。ライセンスはMITとの事です。

keen-slider

Webアプリ等に手軽にキーバインドを実装できるスクリプト・「whenipress」

$
0
0

whenipress

whenipressは開発したWebアプリ等に手軽にキーバインドを実装できるスクリプトです。
※上記サンプルはiframeなので中をクリックしてから動作テストしてください

軽量で非依存、シンプルなコードでキーバインドを実装する事が出来ます。

<script src="https://cdn.jsdelivr.net/npm/whenipress@1.7.2/dist/whenipress.js"></script>
<script>
whenipress("a", "b", "c").then((e) => alert("aとbとcが同時に押されました!"));
</script>

基本的にはスクリプトを読み込んでキーに対する動作を記述すればOKです。

詳しい使い方はドキュメントをご参照ください。ライセンスはMITです。

whenipress

アニメーションしながら動的に順位が入れ替わるバーチャートを生成できるOSS・「Bar chart race generator」

$
0
0

Bar chart race generator


Bar chart race generatorはアニメーションしながら動的に順位が入れ替わるバーチャートを生成できるOSSです。Bar chart raceって言うんですね。初めて知りました。

JavaScriptとCSSで作られています。CSVからデータを読み込み、アニメーションするバーチャートを生成する事が出来ます。

見せ方としてはなかなか面白いんじゃないかなぁと思います。サービスとして展開するならEmbed出来ると良いですね。ライセンスはMITです。

Bar chart race generator

CSSやHTML、JavaScript等で、似たような挙動をするタグや方法で何が違うのかを解説する・「this vs that」

$
0
0

this vs that


this vs thatはCSSやHTML、JavaScript等で、似たような挙動をするタグや方法で何が違うのかを解説するWebサイトです。

ちょっと何言ってるか分からない、という方もいらっしゃると思いますが、僕の説明が下手で語彙も乏しいためです、すみません。

例えばdisplay:nonehiddenはどう違うのか、style="width:***"width="***"はどう違うのか等、結果として同じように見えるけど実際は何が違うのかを解説する、といったものになります。

フロントエンドのスペシャリストは復習に、学び中の方は勉強の一環として如何でしょうか。尚、書いてあることの全てが正しいかどうか確認してないので誤った事が書かれていたらごめんなさい。

this vs that


簡単な設定で使える軽量でモダンなキーバインドライブラリ・「tinykeys」

$
0
0

tinykeys


tinykeysは簡単な設定で使える軽量でモダンなキーバインドJavaScriptライブラリです。

以前にもwhenipressというライブラリをご紹介しましたがtinykeysの方が若干使いやすい印象でした。

上にサンプルを用意しましたが、反応が無い場合はCodepen内にフォーカスしてからお試しください。

Ads

使い方も非常にシンプルです。

<script src="https://cdn.jsdelivr.net/npm/tinykeys/dist/tinykeys.umd.js"></script>

tinykeysを読み込みます。

tinykeys(window, {
	"Shift+D": () => {
		alert("ShiftとDが押されました!");
	},
	"y e s": () => {
		alert("YES!はいそうです!");
	}
});

キーの設定とキーが押されたときの内容を設定すれば完了です。

Githubに簡単なドキュメントも用意されていますが学習コストは高くなさそうですね。非依存型で単体で動作しますし、サイズも軽量なので使いやすいんじゃないでしょうか。ライセンスはMIT。

tinykeys

Canvas 2Dベースの高速で軽量、さまざまなタイプのチャートに対応できるオープンソースのチャートライブラリ・「μPlot」

$
0
0

μPlot

μPlotは高速で軽量、さまざまなタイプのチャートに対応できるオープンソースのチャートライブラリです。Canvas 2Dベースで描かれます。

非依存で単体で動作、マルチ時系列や面グラフ、棒グラフ、折れ線やローソク足の他、様々なタイプのデータをチャート化する事が可能です。

代わりに、軽量高速を実現する為にアニメーションエフェクトやデータの集計や合計、統計処理の他、先発のチャートライブラリによく含まれる「チャートの描写に不要な機能」を削いだみたいです。

以下は他のチャートライブラリとのパフォーマンスの比較表です。

| lib            | size    | done    | js,rend,paint,sys | heap peak,final | interact (10s)      |
| -------------- | ------- | ------- | ----------------- | --------------- | ------------------- |
| uPlot          |   26 KB |   68 ms |   99   3   4   68 |  12 MB   4 MB   |  196  458  135  264 |
| Chart.js-next  |  222 KB |  189 ms |  275   3   3   95 |  32 MB  21 MB   | 3411   35  112 6322 |
| LightningChart |  964 KB |  --- ms |  378   4   2   70 |  24 MB  18 MB   | 9647   32   59  113 |
| dygraphs       |  125 KB |  190 ms |  286   5   3  174 |  57 MB  46 MB   | 2329  272  333  415 |
| CanvasJS       |  477 KB |  320 ms |  400   4   2  103 |  40 MB  25 MB   | 2282  541  337  481 |
| Flot           |  494 KB |  320 ms |  205   7   6  307 |  24 MB  24 MB   | ---                 |
| dvxcharts      |  369 KB |  347 ms |  633  41  45   72 |  42 MB  24 MB   | 1476  891  294  280 |
| Highcharts     |  381 KB |  --- ms |  757   9   2   63 |  27 MB  23 MB   | 1986  780  207  311 |
| Chart.js       |  245 KB |  668 ms |  747   6   7  174 |  82 MB  76 MB   | 5565    5   13 4111 |
| Plotly.js      | 3400 KB |  483 ms |  849  10   4   87 |  39 MB  24 MB   | 1601  216   58  203 |
| ECharts        |  781 KB |  --- ms |  789   4   9 1119 |  79 MB  79 MB   | 2027   64   59 7696 |
| ApexCharts     |  459 KB |  --- ms | 2298  30 135   61 | 151 MB 151 MB   | 2223  259 7802   66 |
| ZingChart      |  857 KB | 2632 ms | 2934   8   1   68 | 121 MB  97 MB   | ---                 |
| amCharts       | 1200 KB | 6147 ms | 7159  56  15  112 | 251 MB 251 MB   | 6244 1163  598  448 |

サンプルもドキュメントも用意があるのでチェックしてみてください。ライセンスはMITとの事です。

μPlot

Pandasライブラリにインスパイアされた、構造化されたデータの操作や処理を行うためのJavaScriptライブラリ・「danfo.js」

$
0
0

danfo.js


danfo.jsは構造化されたデータの操作や処理を行うためのJavaScriptライブラリです。Tensorflow.jsをベースに構築されているそうです。

Pandasにインスパイアされたそうで、同様のAPIを提供している為、Pandasを使い慣れている方なら学習コストが少なく済むそうです。例えば、Pandasの基本ともいえるDataFrameがサポートされています。

上記デモはサンプルデータを元にビジュアライズされたものになります。

サイズの変更やデータの結合、時系列を含んだデータの処理など、パワフルで柔軟なAPIを提供してくれます。

複雑なデータを扱う業務に関わる方はご覧になってみては如何でしょうか。ライセンスはMITとの事です。

danfo.jsドキュメント

滑らかに動くスワイプ可能な非依存型のカルーセルライブラリ・「Embla Carousel」

$
0
0

Embla Carousel

Embla Carouselは滑らかに動くスワイプ可能な非依存型のカルーセルライブラリです。使い方も簡単です。

上にサンプルを用意しました。ベーシックなタイプで無駄もなく、タッチデバイスフレンドリー、汎用性も高くて、とても使いやすい印象です。

動きも滑らかでストレスなく使えます。オプションも豊富で本体スクリプトも軽量となっています。

Ads
<script src='https://unpkg.com/embla-carousel@latest/embla-carousel.umd.js'></script>

サンプルのコードです。CDNが用意されていますので使わせてもらいました。

const emblaNode = document.getElementById("embla");
const options = { loop: true };

const embla = EmblaCarousel(emblaNode, options);

オプションも豊富に用意されており、様々なシーンに対応できます。

カルーセルのスクリプトは星の数ほど出回っていますので今更感が無くもないですが、後発は、より使いやすく設計されているので知って損はないですね。ライセンスはMITとの事です。

Embla Carousel

任意のテキストを自動で3D化するスクリプト・「ztext.js」

$
0
0

ztext.js


ztext.jsは任意のテキストを自動で3D化するスクリプトです。上デモのように見た目に加えてマウスの動きに応じた視差効果も付与してくれます。

仕組みとしては割とシンプルで、指定された設定を元に複数レイヤーを複製して3Dに見せている、という感じ。

デモは設定が下手で微妙な感じになっていますので本スクリプトサイトのサンプルを見た方が良いかもしれません。

Ads
<script src="ztext.min.js"></script>

まず、スクリプトを読み込みます。非依存型なので他のスクリプトは不要です。

<h1>
   <span data-z data-z-layers="3" data-z-depth="0.5em">A</span>
</h1>

HTML要素で制御する場合は上記のようにカスタムデータ属性で制御します。この場合、以下のように展開されます。

<h1 data-z data-z-layers="3" data-z-depth="0.5em">
   <span class="z-text">
      <span class="z-layers">
         <span class="z-layer">A</span>
         <span class="z-layer">A</span>
         <span class="z-layer">A</span>
      </span>
   </span>
</h1>

このように複数のレイヤーを複製して3D化を実現しています。

var ztxt = new Ztextify(".hero-text", {
   depth: "30px",
   layers: 8,
   fade: true,
   direction: "forwards",
   event: "pointer",
   eventRotation: "35deg"
});

また、JavaScriptによる制御も可能です。

また、SVGや画像などの3D化も可能となっていますのでそこまで利用シーンが少ないわけでもないかもしれませんね。

機会がありそうなら触ってみては如何でしょうか。ライセンスはMITです。

ztext.js

GUIで2Dゲーム開発が可能なオープンソースの2Dゲームエディタ・「ct.js」

$
0
0

ct.js


ct.jsはGUIで2Dゲーム開発が可能なオープンソースの2Dゲームエディタです。シューティングやアドベンチャー、パズル、ビジュアルノベルなど様々なゲームを直感的な操作メインで作成する事が出来ます。

基本的にはGUIツールとなっており、マウスによるD&Dでオブジェクトを配置したり、といった流れになりますが、直接JavaScriptを書くことも可能です。

モジュール式になっており、機能を追加する事も可能です。モジュールは豊富に用意されているみたいです。

ゲーム開発は勿論、学習ツールとしても使えるとの事です。ライセンスはMIT。

ct.js

OSSでソースコードも公開されているJavaScript製のシンプルで使いやすいフローチャート作成Webアプリ・「Drawflow」

$
0
0

Drawflow


DrawflowはJavaScript製のシンプルで使いやすいフローチャート作成Webアプリです。オープンソースとしてソースコードも公開されています。他ライブラリへの依存もありません。

左ペインにあらかじめ用意された項目をドラッグでチャートエリアに持っていき、チャートを作成していく、というシンプルな流れ。

項目はHTMLで生成されており、チャートエリアへ移動後に展開されるオブジェクトはJavaScriptで制御されています。

 case 'telegram':
          var telegrambot = `
          <div>
            <div class="title-box"><i class="fab fa-telegram-plane"></i> Telegram bot</div>
            <div class="box">
              <p>Send to telegram</p>
              <p>select channel</p>
              <select df-channel>
                <option value="channel_1">Channel 1</option>
                <option value="channel_2">Channel 2</option>
                <option value="channel_3">Channel 3</option>
                <option value="channel_4">Channel 4</option>
              </select>
            </div>
          </div>
          `;
          editor.addNode('telegram', 1, 0, pos_x, pos_y, 'telegram', { "channel": 'channel_3'}, telegrambot );
          break;

項目がそう多くないチャートツールには最適かもしれませんね。ライセンスはMITとの事です。

Drawflow


オープンソースのCalendly代替・「What Time Today?」

$
0
0

What Time Today?


What Time Today?はオープンソースとしてソースコードが公開されているスケジュール管理ツールです。Calendly代替として開発されたそうです。

vimcalAvailableといった類似アプリの存在は把握しているものの、もっと手軽に使えて無料のものが欲しいと言うニーズを開発者も持っていたのがきっかけで開発に至ったみたいです。React/redux、Google OAuth、Google Calendar API、react-big-calendar、moment.jsなどで構築されてるとの事です。

ただ、そこまで活発に開発していく予定もないみたいで、ある程度機能を付けたら完成、使いたい人は使ってね、みたいなスタンスかもしれませんん。

Calendly便利だけど課金するほどではないのに代わりのツールもない、という悩みを持たれている方は触ってみては如何でしょうか。OSSを謳っていますがライセンス明記はありませんでしたので必要な場合は開発者の方にお問い合わせください。

What Time Today?On Github

フレームワーク不要の非依存型で軽量シンプルなカラーピッカーライブラリ・「Vanilla Colorful」

$
0
0

Vanilla Colorful


Vanilla Colorfulはフレームワーク不要の非依存型で軽量シンプルなカラーピッカーライブラリです。

名前の通りバニラなスクリプトで動作しますが、他フレームワークにも柔軟に対応する事も可能です。

実装にはカスタム要素とShadow DOMを使用するので古いブラウザやIE11はサポートされていません。

Ads

特にクセもなく、ユーザーは使いやすいし開発者も導入しやすい印象でした。

もちろん、Vue.jsReactangular.jsなどでも利用可能なのでフレームワークにとらわれない柔軟性の高いスクリプトと言えそうです。

MITライセンスの元、オープンソースとして公開されています。

Vanilla Colorful

未来SFっぽいUIを構築できるWebアプリ向けのUIフレームワーク・「Arwes」

$
0
0

Arwes


Arwesは未来SFっぽいUIを構築できるWebアプリ向けのUIフレームワークです。React.jsベースとなっています。

サイバーパンクのようなものをイメージして作ったみたいです。Webアプリケーション等に使える独特のアニメーションエフェクトやフォントなどが用意されています。

本フレームワークが実際に使われたWebサイト(https://soulextract.com/)もあるのでご興味のある方は合わせてご覧になってみては。ライセンスはMITとの事です。

Arwes

Vue.jsとBulma.cssで構築されたTrelloライクなオープンソースのカンバンツール・「Vue Trello Clone」

$
0
0

Vue Trello Clone


Vue.jsとBulma.cssで構築されたTrelloライクなオープンソースのカンバンツールです。ネーミングそのまんまですが、Trelloと同機能を提供する訳ではなく、シンプルなカンバンアプリといった印象です。

完全互換とは行きませんが、タスク管理やボードのD&Dによる移動、日付ピッカーなどTrelloと同じ基本機能は用意されており、使い勝手も良く動作も軽量、実装も手軽なのでなかなか良さそうです。

使い方そのものはTrelloを含む従来のカンバンツールと相違ありませんので利用する分には学習コストはかからなそうですね。ライセンスはMITとの事です。

Vue Trello Clone

Webサイトに映画のようなスタッフロールを追加できるスクリプト・「QreditRoll」

$
0
0

QreditRoll


QreditRollはWebサイトに映画のようなスタッフロールを追加できるスクリプトです。

ボタンのクリックで自動スクロールするスタッフロールが開始される、というものですが、コナミコマンド(上上下下左右左右BA)でイースターエッグとして仕込む事も出来るみたいです。

スタッフロールはhumans.txtを元に自動生成されますのでhumans.txtがあればスクリプトの読み込みと必要な場合はボタンの設置のみで済むようですね。

Webサイトに必須ではないですけどこういう遊び心があっても良いかもしれませんね。ライセンスはMITとの事です。

QreditRoll

Viewing all 295 articles
Browse latest View live