質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

0回答

1052閲覧

【JavaScript】によるスクロールバー 制御の計算

_T_S

総合スコア27

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/10/01 02:29

スマホで画像を横スクロールにし、スクロールバーも画像に合わせてスクロールする様にjsで制御したいです。

デザインされたスクロールバーなのでcssだけでは難しい感じです。
progressBarとprgoressCircleという2つの要素が画像の横スクロールに合わせて伸びていく様な実装をしたいです。
(Circleの方は移動していくイメージ)

cssでBarとCircleをそれぞれwidth0とleft0にして、javascriptで、画像のスクロール値を取得して、widthとleftに代入して伸ばしていく実装をしたいです。
数値までは取れたのですが、12%ほどで止まってしまうので、ちゃんとスクロールに合わせて伸びたり縮んだりするスクロールバーにしたいです。

pug

1.lSolution-flowFigure 2 +cImg({src: 'https://placehold.jp/700x400.png'}).lSolution-flowImage 3 .lSolution-progress._sp 4 .lSolution-progressBar 5 .lSolution-progressCircle

scss

1.lSolution { 2 &-flowFigure { 3 overflow-x: auto; 4 overflow-y: hidden; 5 white-space: nowrap; 6 } 7 &::-webkit-scrollbar { 8 display: none; 9 } 10 } 11 &-progress { 12 position: relative; 13 background-color: rgba(#000, 0.4); 14 margin-left: auto; 15 height: 2px; 16 width: calc(100% - 4px); 17 } 18 &-progressBar { 19 position: absolute; 20 background: linear-gradient( 21 to left, 22 transparent calc(4 * 1.5), 23 $color-font calc(4 * 1.5) 24 ); 25 width: 0; 26 top: 50%; 27 transform: translateY(-50%); 28 @include media-sp { 29 height: 4; 30 } 31 } 32 &-progressCircle { 33 position: absolute; 34 background-color: #000; 35 top: 0; 36 bottom: 0; 37 margin-top: auto; 38 margin-bottom: 0; 39 @include media-sp { 40 width: 4px; 41 height: 4px; 42 border-radius: 50; 43 transform: translateX(-3); 44 } 45 } 46}

javascript

1class PageCurrent extends Page { 2 3 onInit() { 4 this.figure = document.querySelector('.lSolution-flowFigure') 5 this.image = document.querySelector('.lSolution-flowImage') 6 this._progress = document.querySelector('.lSolution-progress') 7 this.progressCircle = document.querySelector('.lSolution-progressCircle') 8 this.progressBar = document.querySelector('.lSolution-progressBar') 9 10 this.progressTotal = this._progress.getBoundingClientRect().width 11 this.progressStart = this._progress.scrollLeft 12 this.progressOffset = this._progress.offsetLeft 13 this.initEvent() 14 } 15 16 17 initEvent() { 18 this.figure.addEventListener('scroll', () => { 19 this.progressValue = 20 (this.progressOffset - this.progressStart) / this.progressTotal 21 this._setProgress(this.progressValue * 100 + '%') 22 }) 23 } 24 /** 25 * 26 */ 27 _setProgress(_x) { 28 gsap.set(this.progressBar, { 29 width: _x, 30 }) 31 gsap.set(this.progressCircle, { 32 left: _x, 33 }) 34 gsap.to(this.progressBar, { 35 width: _x, 36 duration: 0.5, 37 ease: 'ease2.out', 38 }) 39 gsap.to(this.progressCircle, { 40 left: _x, 41 duration: 0.5, 42 ease: 'ease2.out', 43 }) 44 } 45} 46 47new PageCurrent()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問