ネイティブ js でカスタム スクロール バーを実装する

ネイティブ js でカスタム スクロール バーを実装する

この記事の例では、カスタムスクロールバーを実装するためのjsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

1. HTMLファイル

Div1 はスクロール バー、div2 はスクロール ボール、div3 はテキスト領域コンテナー、div4 はテキスト領域です。

<div id="div">
 <div id="div1">
 <div id="div2"> </div>
 </div>
 <div id="div3">
 <div id="div4">
 <p>CSS3 チュートリアル</p>
 <p>CSS3 チュートリアル</p>
 <p>CSS3 入門</p>
 <p>CSS3 境界線</p>
 <p>CSS3 丸い角</p>
 <p>CSS3 背景</p>
 <p>CSS3 グラデーション</p>
 <p>CSS3 テキスト効果</p>
 <p>CSS3 フォント</p>
 <p>CSS3 2D 変換</p>
 CSS3 3D 変換
 <p>CSS3 トランジション</p>
 <p>CSS3 アニメーション</p>
 <p>CSS3 複数列</p>
 <p>CSS3 ユーザー インターフェース</p>
 <p>CSS3 画像</p>
 <p>CSS3 ボタン</p>
 <p>CSS3 ページネーション</p>
 <p>CSS3 ボックス サイズ</p>
 <p>CSS3 フレキシブル ボックス</p>
 <p>CSS3 マルチメディア クエリ</p>
 <p>CSS3 マルチメディア クエリの例</p>
 </div>
 </div>
</div>

2.cssスタイルファイル

コンテナはオーバーフローによって非表示になり、テキスト領域は絶対位置に配置され、その後、処理のために js に渡されます。

*{パディング: 0; マージン: 0;}
#div{top:200px;left:25%;width: 50%;height: 300px;position: absolute; 
}
#div1{幅: 20px; 高さ: 300px; 位置: 相対; 
背景: #CCCCCC; 境界線の半径: 28px; フロート: 右; カーソル: ポインター;}
#div1 #div2{左: -4px;幅: 28px;高さ: 28px;境界線の半径: 50%;背景: 赤;
位置: 絶対;}

#div3{幅: 90%; 高さ: 300px; 境界線: 2px 実線 #CCCCCC;
位置: 相対; フロート: 左; オーバーフロー: 非表示;}
#div3 #div4{top:0;left:0;width: 100%; position: absolute; font-family: "Microsoft YaHei";
フォントサイズ: 19px; 文字間隔: 1px; パディング: 3px 6px;}

3.js スクリプトコード

window.onload = 関数(){
 var allDiv = document.getElementById('div');
 var oDiv = document.getElementById('div2');
 var aDiv = document.getElementById('div1');
 var textDiv1 = document.getElementById('div3');
 var textDiv2 = document.getElementById('div4');
 
 // プログレスバーがドラッグされ、コンテンツはモーションイベントに従います oDiv.onmousedown = function (ev) {
 var oEvent =ev||イベント;
 
 var disY =oEvent.clientY -oDiv.offsetTop;
 
 oDiv.setCapture の場合 {
 oDiv.onmousemove =マウス移動;
 oDiv.onmouseup =マウスアップ;
 
 oDiv.setCapture();
 }それ以外{
 document.onmousemove =マウス移動;
 document.onmouseup =マウスアップ;
 }
 
 関数mouseMove(ev){
 var oEvent =ev||イベント; 
 var t =oEvent.clientY -disY; 
 var bottomLine = aDiv.offsetHeight - oDiv.offsetHeight; 
 
 
 t < 0の場合{
 t =0;
 }そうでない場合(t >bottomLine){
 t = ボトムライン;
 }
 
  varパーセント =t/272;
  
 oDiv.style.top = t+'px';
 textDiv2.style.top =-(textDiv2.offsetHeight-textDiv1.offsetHeight)*パーセント+'px';
 
 };
 
 関数mouseUp(){
 this.onmousemove = null;
 this.onmouseup = null;
 
 oDiv.releaseCapture の場合 {
 oDiv.releaseCapture();
 }
 };
 
 false を返します。
 };
 
 // プログレスバーをクリックしてタイマーを開始します。ボールが一定の速度でターゲットに到達したら、タイマーをクリアします。aDiv.onmousedown=function(ev){
 var oEvent =ev||イベント; 
 var divY =oEvent.clientY-allDiv.offsetTop;
 var タイマー =null;var 速度 = 10;
 
 
 クリアインターバル(タイマー)
 タイマー = setInterval(関数(){
 var パーセント = oDiv.offsetTop / 272;
 
 
 oDiv.offsetTop<divY-28){
 oDiv.style.top = oDiv.offsetTop + スピード + 'px';
 textDiv2.style.top = -(textDiv2.offsetHeight-textDiv1.offsetHeight)*パーセント + 'px';
 }それ以外の場合(oDiv.offsetTop>divY){
 oDiv.style.top = oDiv.offsetTop - 速度 + 'px';
 textDiv2.style.top = -(textDiv2.offsetHeight-textDiv1.offsetHeight)*パーセント + 'px';
 }それ以外の場合(oDiv.offsetTop>260){
 oDiv.offsetTop = 272+'px';
 タイマーの間隔をクリアします。
 }それ以外の場合(oDiv.offsetTop<10){
 oDiv.offsetTop = 0+'px';
 タイマーの間隔をクリアします。
 }それ以外{
 タイマーの間隔をクリアします。
 }
 
 
 },10);
 
 }
 
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ネイティブ js はカスタム スクロール バー コンポーネントを実装します
  • jsはスクロールバーの自動スクロールを実現します
  • Vue.js デスクトップ カスタム スクロール バー コンポーネント 美化 スクロール バー VScroll
  • JS カスタムスクロールバー効果
  • JavaScript でシンプルなチャット ダイアログ ボックス (スクロール バー付き) を実装します。
  • js ホイール イベントを使用した js カスタム スクロール バーの実装
  • JS はスクロールバーを底まで押してさらに読み込むように実装します
  • js を使用してシンプルなスクロールバーのプロセス分析を実装する
  • スクロールバーを非表示にするlayer.jsオープン例
  • Vue pure jsはスクロールバーを一番下まで監視します
  • JavaScriptはスクロールバーの位置を取得し、ページをアンカーポイントまでスライドします。

<<:  MySQLリモート接続失敗の解決策

>>:  Linux環境でのshadowsocks+polipoグローバルプロキシの設定

推薦する

Vueの7つの値転送メソッドの詳細な説明

1. 父から息子へ子コンポーネントにpropsフィールドを定義し、その型は配列です (フィールド値の...

impress.js プレゼンテーション層フレームワーク (デモツール) - 初めての体験

半年もブログを書いていなかったので、少し恥ずかしいです... 正月休みは、Dota をプレイしたり ...

Vue+SpringBoot で Alipay サンドボックス決済を実装するためのサンプルコード

まず、Alipay サンドボックスから一連のものをダウンロードします。多くのブログで取り上げられてお...

レスポンシブなアコーディオン効果を実現するための CSS3 の詳細な説明

最近、外国人が CSS3 を使用してアコーディオン効果を実現しているビデオを見たので、自分で学習した...

Webpack4プラグインの実装原理についての簡単な説明

目次序文知る練習すれば完璧になる序文wabpack では、ローダーの他にプラグインがコア機能です。プ...

MySQL データベース接続例外の概要 (収集する価値あり)

Centos にプロジェクトをデプロイするときに奇妙な問題が見つかりました。データベース接続で例外...

セマンティックウェブページ XHTML セマンティックマークアップ

構造とプレゼンテーションを分離するもう 1 つの重要な側面は、セマンティック マークアップを使用して...

MySql 8.0.11 のインストール プロセスと Navicat とのリンク時に発生する問題の概要

私のシステムとソフトウェアのバージョンは次のとおりです。システム環境: win7、64ビットMySQ...

25 div+css プログラミングのヒントとコツ

1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...

ウェブデザインの初心者に役立つ学習教材をいくつかお勧めします

勉強中に読んだ本についてもよく聞かれます。以下は初心者におすすめの本です(私が勉強中に読んだ本です。...

Tomcat の設定と Eclipse での起動方法

目次Tomcat8のインストールと設定方法tomcat ダウンロードTomcat マネージャーを有効...

ウェブサイトに最も必要なのは、ターゲットユーザーグループのエクスペリエンスを向上させることです。

「大河は東に流れ、波は歴代の英雄たちを洗い流した。古城の西側は三国時代の周朗の赤壁だと言われている...

nginx の default_server 定義とマッチングルールの詳細な説明

nginx の default_server ディレクティブは、server_name と一致しない...

CSS3 レーダースキャンマップのサンプルコード

CSS3 を使用して、クールなレーダースキャン画像を実現します。 コード上で直接: // インデック...

検索エンジンのウェブサイトの入り口の無料コレクション

1: Baiduウェブサイトログイン入口ウェブサイト: http://www.baidu.com/s...