2024.05.06
OSS
モバイルフレンドリーなイメージビューワー SmartPhoto.js の利用方法
レスポンシブデザインの普及により、デバイスの画面サイズに合わせてコンテンツを動的に調整することが一般的になりました。しかし、このアプローチは、特に <table>要素などの広いコンテンツを含むページで課題を生じさせることがあります。
スマートフォンのような狭い画面では、重要な表データを見やすく表示させることが難しく、収まらない部分をスクロールさせることで解決できないかと考え、その際にスクロールできる事を気づいてもらうために、私たちが開発したのがユーザーに視覚的なヒントを提供するJavaScriptライブラリ「ScrollHint」を作りました。
2018年にリリースし、今では多くのサイトで「スクロールできます」を見かけるようになりました。ありがとうございます。また Google や X で ScrollHint を検索してみると、ブログの記事 や 感想の POST を見つけることができ、大変嬉しく思っております。
デフォルトの設定だと scrollable と英語表記になりますが、オプションでテキストの変更や色などを変更することが可能です。
上記のデモで確認できますが <th> タグに対して背景色にグレーの設定がされているとドロップシャドーが効きません。<th> の背景も全て白背景の際には、ドロップシャドーの設定を有効にすることで、視覚的にさらに分かりやすくなります。
ScrollHintの特徴をいくつか挙げるとすれば、以下のポイントが挙げられます。
これらの特徴により、ScrollHintはウェブサイトやアプリケーションのユーザーエクスペリエンスを向上させるための効果的なツールとなります。
CDN から最新版を読み込み設定と <haed>タグに ScrollHint を動かす Class ( js-scrollable ) を設定する際には、以下のように書きます。
<link rel="stylesheet" href="https://unpkg.com/scroll-hint@latest/css/scroll-hint.css">
<script src="https://unpkg.com/scroll-hint@latest/js/scroll-hint.min.js"></script>
<script>
window.addEventListener('DOMContentLoaded', function () {
new ScrollHint('.js-scrollable');
});
</script>
<table>タグに class="js-scrollable" を設定せず、<div>タグに Class を記述するようにしてください。
<div class="js-scrollable">
<table>
<tr>
<th></th>
<th>スタンダード会員</th>
<th>フルタイム会員</th>
<th>法人会員</th>
</tr>
<tr>
<th>料金</th>
<td>11,000円/月(税込)</td>
<td>16,500円/月(税込)</td>
<td>19,800円/月(税込)</td>
</tr>
<tr>
<th>平日</th>
<td>10:00 - 18:00</td>
<td>8:00 - 23:00</td>
<td>8:00 - 23:00</td>
</tr>
<tr>
<th>土日祝</th>
<td>10:00 - 18:00</td>
<td>8:00 - 18:00</td>
<td>8:00 - 18:00</td>
</tr>
</table>
</div>
またScrollHintにはオプションが用意されており、下のように第二引数にオプションのオブジェクトを設定することができます。
下の例では、アイコンカラーを白にして、デフォルトでは「scrollable」というメッセージを「スクロールできます」に変更しています。
<script>
window.addEventListener('DOMContentLoaded', function () {
new ScrollHint('.js-scrollable', {
scrollHintIconAppendClass: 'scroll-hint-icon-white',
suggestiveShadow: true,
i18n: {
scrollable: "スクロールできます"
}
});
});
</script>
主に以下のようなオプションが利用可能です。
名前 | デフォルト値 | 説明 |
---|---|---|
i18n.scrollable | scrollable | スクロールのメッセージを変更できます。 日本語化する際には、こちらの項目を利用ください。 |
remainingTime | -1 | 一定時間が経ったらアイコンを非表示にします。 |
suggestiveShadow | false | 要素がスクロール可能の場合、アイコンの他にシャドーも表示します。 |
scrollHintBorderWidth | 10 | シャドーが有効場合のシャドーの幅を指定します。 |
applyToParents | false | 指定されたセレクターの親要素に対してJavaScriptが実行されます。 |
offset | 0 | 要素がスクロール可能かどうかの基準を拡張できます。 |
あまり変更することは無いとは思いますが、ライブラリの実行時に付加される Class名を変更できるオプションになります。
名前 | デフォルト値 | 説明 |
---|---|---|
suggestClass | is-active | アイコンがビューポート内に入ってきたときに付与されるクラス名です。 |
scrollableClass | is-scrollable | 要素がスクロールできるときに付与されるクラス名です。 |
scrollableRightClass | is-right-scrollable | 要素が右側にスクロールできるときに付与されるクラス名です。 |
scrollableLeftClass | is-left-scrollable | 要素が左側にスクロールできるときに付与されるクラス名です。 |
scrollHintClass | scroll-hint | 要素に付与されるクラス名です。 |
scrollHintIconClass | scroll-hint-icon | アイコンに付与されるクラス名です。 |
scrollHintIconAppendClass | scroll-hint-icon-white | アイコンに追加される別のクラス名です。 |
scrollHintIconWrapClass | scroll-hint-icon-wrap | アイコンのラッパー要素に追加されるクラス名です。 |
scrollHintText | scroll-hint-text | スクロールメッセージを表示する要素に追加されるクラス名です。 |
CDN を利用しない場合には、https://github.com/appleple からダウンロードください。
もしくは、npm 、yarn を使ったインストールも可能です。
npm install scroll-hint --save
yarn add scroll-hint
npm でのインストール後は、Webpack などの bundle ツールを使った require も可能です。
const ScrollHint = require('scroll-hint');
Babel をお使いの方は import もご利用いただけます。
import ScrollHint from 'scroll-hint';
この記事をリライトしている際に、こうあった方がいいのではないだろうか? と思いついた事を共有しておきます。
scrollable の下の余白が足りないと思いませんか。.scroll-hint-icon { height: 80px; } と設定されているところを少しだけ高さの変更をしようと考えています。
今回の ScrollHint は、レスポンシブデザインのウェブサイトでの利用を考えて作られた JavaScript ライブラリですが、弊社では他にも同様に便利に使えるライブラリを公開しております。よろしければ、そちらもご活用ください。
その他にも、https://github.com/appleple で多くのライブラリなどを公開しておりますので、合わせてご覧ください。また、弊社では有償にはなりますが、JavaScriptのライブラリ開発のお手伝いも行っておりますので、お気軽に お問い合わせフォーム からご相談ください。