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

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

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

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

Q&A

解決済

1回答

536閲覧

【javascript】取得した要素のwidthを数値に変換する方法

suzu1234

総合スコア41

JavaScript

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

0グッド

1クリップ

投稿2023/03/22 19:21

編集2023/03/23 17:00

実現したいこと

特定の要素のwidthをelement.clientWidthで取得して、取得したwidthの値を数値として使いたいです。

イメージとしましては以下のコードの○○の部分にelement.clientWidthで取得した値を入れて自由に操作する感じです。(要素のwidthが100pxの場合、100px分左右に移動できるようにしたい)

element.style.transform = 'translateX(○○)';

調べたこと

色々調べた結果parseIntを使えばいいという記事を発見したのですが、使い方がイマイチわからず、そもそも自分の意図する動作がparseIntで実現できるのかどうかも分からなかったので質問させていただきました。ご回答いただけますと幸いです。

追加したコードです

<div id="main_visual"> <div id="main_visual_slider"> <img src="https://cdn.pixabay.com/photo/2022/08/12/15/40/rainbow-7381976_960_720.jpg"> <img src="https://cdn.pixabay.com/photo/2014/09/19/12/30/pencils-452238_960_720.jpg"> <img src="https://cdn.pixabay.com/photo/2015/08/28/11/37/painting-911804_960_720.jpg" > <img src="https://cdn.pixabay.com/photo/2017/07/03/20/17/colorful-2468874_960_720.jpg"> <img src="https://cdn.pixabay.com/photo/2016/05/05/02/37/sunset-1373171_960_720.jpg"> </div> <span id="prev_btn"></span> <span id="next_btn"></span> </div>
* { box-sizing: border-box; outline: 1px solid magenta; } img { width: 100%; height: auto; object-fit: cover; max-width: 100%; vertical-align: bottom; } #main_visual { position: relative; width: 900px; height: 500px; max-width: 100%; margin: 0 auto; overflow: hidden; } #main_visual_slider { position: relative; display: flex; width: 900px; max-width: 100%; } #prev_btn, #next_btn { position: absolute; top: calc(50% - 10px); display: block; width: 20px; height: 20px; border-top: 3.5px solid #ffffff; border-left: 3.5px solid #ffffff; transition: all 0.3s ease 0s; opacity: 0; visibility: hidden; } #prev_btn.display, #next_btn.display { opacity: 1; visibility: visible; } #prev_btn { left: 55px; transform: rotate(315deg); } #next_btn { right: 55px; transform: rotate(135deg); }
const mainVisual = document.getElementById('main_visual'); const mainVisualPrevBtn = document.getElementById('prev_btn'); const mainVisualNextBtn = document.getElementById('next_btn'); mainVisual.addEventListener('mouseover', () => { mainVisualPrevBtn.classList.add('display'); mainVisualNextBtn.classList.add('display'); }); mainVisual.addEventListener('mouseout', () => { mainVisualPrevBtn.classList.remove('display'); mainVisualNextBtn.classList.remove('display'); }); const prevBtn = document.getElementById('prev_btn'); const nextBtn = document.getElementById('next_btn'); const main_visual_slider = document.getElementById('main_visual_slider'); const main_visual_slider_w = main_visual_slider.clientWidth; nextBtn.addEventListener('click', () => { main_visual_slider.style.transform = 'translateX(' + main_visual_slider_w + ')'; });

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

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

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

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

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

guest

回答1

0

ベストアンサー

js

1element.style.transform = `translateX(${element.clientWidth}px)`;

js

1element.style.transform = 'translateX(' + element.clientWidth + 'px)';

でよいでしょう。

parseInt() は文字列を数値に変換するものなので、無関係です。

投稿2023/03/22 22:09

編集2023/03/23 21:49
int32_t

総合スコア20880

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

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

suzu1234

2023/03/23 17:02

ご回答ありがとうございます。 element.style.transform = 'translateX(' + element.clientWidth + ')'; こちらのコードを使ってみたのですが、うまく動いてくれませんでした。右側にtranslateXを使いたい場合は+の記述が必要になると思うのですが、どのように記述すればいいでしょうか?
int32_t

2023/03/23 21:49

数値の後に px を付けないといけないかもですね。')' を 'px)' にすればよいかもしれません。 > 右側にtranslateXを使いたい場合は+の記述が必要になると思う 何を仰っているのか不明です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問