Webコンポーネントのアイデア:カルーセルを構築する
12081 ワード
Carouselは一連の画像を表示するための有用なコンポーネントです.人々はしばしば棚からカルーセルを使用しますが、彼らはあなた自身を構築するために非常に簡単です!このポストでは、私はカルーセルのためにウェブ構成要素を構築するつもりです.
次の前のボタンをクリックすると、画像のシリーズをスクロールしてここで見ることができます.
存在しない要素の構築
Webコンポーネントは、HTMLの一般的なパターンを抽象化するための便利なツールです.Web上で一般的ですが、独自の要素を持っていないユーザーインターフェイスパターンがたくさんあります.代わりに、他の要素から自分自身をビルドする必要があります.
あなた自身がHTMLを繰り返し、または複雑さがあまりにも多くを取得見つける場合は、複雑さを抽象的にすることができます.Webコンポーネントを作成することにより、再利用可能になり、理解しやすくなるきちんとした抽象化を作成できます.プラスそれはあなたのHTMLをはるかにtidierになります!
HTMLはどんな感じですか?
このWebコンポーネントはかなり簡単ですが、それは任意の属性を持っていない-あなただけの中にいくつかの要素を置く.
このアプローチの大きな利点は、Webコンポーネントを使用して、私は私のカルーセルの中に任意のHTMLコンテンツを置くことができることです.それはちょうどHTMLです!プラス私はどんなウェブサイトでも、ライブラリを使用することができます.標準に固執することは、しばしばものをより簡単にします.
テンプレートの作成
まず、このカルーセルを作るために必要な要素を書き留めた.
だから、スタイリングを追加する必要があります.カルーセルのように見えたら、カルーセルのように動くことができます.
以下にスタイルを示します.
また、私はすべての要素を与えている
ここでスタイルを見てみましょう.最初の部分は、要素がaとして表示されるようにします
最後に私たちは
結果は次のようになります.
それはすべてについてです!我々が持っていない唯一の部分はボタンです.
ボタンの配線
ボタンを配線するにはJavaScriptを書く必要があります.最初に、カルーセル要素を作成するためのいくつかのボイラープレートを設定します.
ウェブコンポーネントに興味がある?
話していますPractical Uses for Web Components アットWeb Directions: Code 2017年9月17日・24日.興味がある場合は、バウチャーを使用することができます
次の前のボタンをクリックすると、画像のシリーズをスクロールしてここで見ることができます.
存在しない要素の構築
Webコンポーネントは、HTMLの一般的なパターンを抽象化するための便利なツールです.Web上で一般的ですが、独自の要素を持っていないユーザーインターフェイスパターンがたくさんあります.代わりに、他の要素から自分自身をビルドする必要があります.
あなた自身がHTMLを繰り返し、または複雑さがあまりにも多くを取得見つける場合は、複雑さを抽象的にすることができます.Webコンポーネントを作成することにより、再利用可能になり、理解しやすくなるきちんとした抽象化を作成できます.プラスそれはあなたのHTMLをはるかにtidierになります!
HTMLはどんな感じですか?
このWebコンポーネントはかなり簡単ですが、それは任意の属性を持っていない-あなただけの中にいくつかの要素を置く.
<ben-carousel>
<img src="http://placekitten.com/360/200">
<img src="http://placekitten.com/300/200">
<img src="http://placekitten.com/420/200">
</ben-carousel>
ここでのアイデアは、できるだけ標準的な要素に固執し、それをシンプルに保つことです.カルーセルはカルーセルのような内容を表示することになります.その後、コンテンツ自体は何でもすることができます!この場合、私は異なるサイズで猫の3つのイメージを入れました.このアプローチの大きな利点は、Webコンポーネントを使用して、私は私のカルーセルの中に任意のHTMLコンテンツを置くことができることです.それはちょうどHTMLです!プラス私はどんなウェブサイトでも、ライブラリを使用することができます.標準に固執することは、しばしばものをより簡単にします.
テンプレートの作成
まず、このカルーセルを作るために必要な要素を書き留めた.
<template id="ben-carousel">
<button>Prev</button>
<slot></slot>
<button>Next</button>
</template>
私は2つのボタンを持っていることをここで見ることができる、左に行くための1つと右に行くため.それから私はslot
要素イン、これは内部の内容が行くところです.しかし、それはそれがカルーセルのように見えるのに十分でありません.たった今、これは次のようになります.だから、スタイリングを追加する必要があります.カルーセルのように見えたら、カルーセルのように動くことができます.
以下にスタイルを示します.
<template id="ben-carousel">
<style>
:host {
display: block;
}
#container {
display: flex;
}
#images {
display: flex;
flex-shrink: 1;
overflow: scroll;
}
</style>
<div id="container">
<button id="prev">Prev</button>
<div id="images">
<slot></slot>
</div>
<button id="next">Next</button>
</div>
</template>
最初に追加した余分な要素を見てみましょう.私はdiv
他のすべての要素をラップするには、レイアウトに便利です.それから私は別のdiv
画像の場合、これはそれらのどれだけ表示されるかを制御するのに役立ちます.また、私はすべての要素を与えている
id
. Webコンポーネントを使用している場合は、HTMLとCSSはすべてコンポーネント内にスコープされます.それで、あなたはid
あなたが望む限り、それはあなたのページの他の人と重複しません.これによりJavaScriptとCSSを書くことが非常に簡単になります.ここでスタイルを見てみましょう.最初の部分は、要素がaとして表示されるようにします
block
要素:host {
display: block;
}
次に、私は使用する外側容器をスタイリングしましたdisplay: flex
:#container {
display: flex;
}
これは、3つの子要素(#prev
, #images
, and #next
) すべてのディスプレイの横に横たわる.これは、レイアウト全体のキーです!最後に私たちは
#images
コンテナ.ここではflex-shrink: 1
そうする#images
親の幅が制約された場合、コンテナは縮小します.#images {
flex-shrink: 1;
display: flex;
overflow: scroll;
}
私はまたdisplay: flex
ここで子供たちを作る#images
コンテナ(画像)すべての行のeachotherの横に表示されます.最後にoverflow: scroll
と言う#images
内容がオーバーフローした場合、コンテナはスクロールバーを作成します.結果は次のようになります.
それはすべてについてです!我々が持っていない唯一の部分はボタンです.
ボタンの配線
ボタンを配線するにはJavaScriptを書く必要があります.最初に、カルーセル要素を作成するためのいくつかのボイラープレートを設定します.
class CarouselElement extends HTMLElement {
constructor() {
super();
this.attachShadow({mode: 'open'});
const template = document.getElementById('carousel');
const clone = template.content.cloneNode(true);
this.shadowRoot.appendChild(clone);
}
}
customElements.define('ben-carousel', CarouselElement);
今、我々はイベントを配線したい.我々はすでに我々の要素のそれぞれを与えているのでid
これはかなり簡単です.最初に、我々は我々が必要とする要素の各々を得ますshadowRoot
:// ... inside the constructor
const images = this.shadowRoot.getElementById('images');
const prev = this.shadowRoot.getElementById('prev');
const next = this.shadowRoot.getElementById('next');
次に、イメージコンテナをスクロールするクリックハンドラを設定します.// ... inside the constructor
prev.addEventListener('click', () => {
images.scrollLeft -= 100;
})
nextButton.addEventListener('click', () => {
images.scrollLeft += 100;
})
そして、ビンゴBango我々は、スクロールカルーセルを持っています!ウェブコンポーネントに興味がある?
話していますPractical Uses for Web Components アットWeb Directions: Code 2017年9月17日・24日.興味がある場合は、バウチャーを使用することができます
bensentme
20 %オフになる!Reference
この問題について(Webコンポーネントのアイデア:カルーセルを構築する), 我々は、より多くの情報をここで見つけました https://dev.to/taybenlor/web-component-ideas-building-a-carousel-2dfeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol