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

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

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

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

CSS

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

Q&A

0回答

388閲覧

[JS][CSS] resizeがmouseupをキャッチできていない

achasute

総合スコア9

JavaScript

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

CSS

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

0グッド

0クリップ

投稿2021/12/11 05:51

2つのhtmlを横並びに表示し、その幅をドラッグで変えられるhtmlを作成しようとしました。
左側のdivにresizeを設定して、resizeに応じて右側の幅を変えるようにしました。

おおむね動くのですが、左のdivの右下のつまみを掴んでドラッグした後、
**つまみの上でmouseupしないと、**その後ページのまったく関係ないところをドラッグしてもresizeされてしまうようになります。
(ChromeとEdgeで確認しました)

憶測ですが、resizeはmouseupイベントを使用していて、そのmouseupイベントが、ドラッグを開始した要素上でmouseupしないと走らないことが原因なのかな…と考えています。

  • 憶測が正しいか
  • これを回避するにはどうするのが良いか

ご教授いただけないでしょうか。

html

1<html> 2 3<head> 4 <link rel="stylesheet" href="style.css"> 5</head> 6 7<body> 8 <div class="wrap-box"> 9 <div class="left cell"><iframe src="TodaysFlow.html" class="left frame"></iframe></div> 10 <div class="right cell"><iframe src="CurrentStatus.html" class="right frame"></iframe></div> 11 </div> 12 <script> 13 const leftbox = document.querySelector('.left', '.cell'); 14 const rightbox = document.querySelector('.right', '.cell'); 15 //イベント登録 16 document.addEventListener('DOMContentLoaded', () => { 17 //要素のリサイズイベント取得 18 const observer = new MutationObserver(() => { 19 //要素のサイズ確認 20 rightbox.style.width = `calc(99% - ${leftbox.style.width})`; 21 }) 22 observer.observe(leftbox, { 23 attriblutes: true, 24 attributeFilter: ["style"] 25 }) 26 }, false) 27 </script> 28</body> 29 30</html>

css

1.box { 2 width: 100%; 3 height: 100%; 4 font-size: 0; 5} 6 7.cell{ 8 display: inline-block; 9 width: 48%; 10 height: 100%; 11 box-sizing: border-box; 12 margin: 0%; 13 overflow: hidden; 14} 15 16.cell.left{ 17 resize: horizontal; 18 margin-right: 5px; 19} 20 21.frame{ 22 width: 100%; 23 height: 100%; 24}

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

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

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

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

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

Lhankor_Mhy

2021/12/13 00:55

問題が再現しませんでした。もう少し再現手順を詳しくお願いできますか?
achasute

2021/12/13 09:59

Lhankor_Mhy様 手順としては、 1. 記載のhtmlとstyle.cssを準備する 2. inframeに入れるhtmlを2つ作成する(大きさは十分大きなものでお願いします:1000pxとか) 3. htmlファイルを開いて、左側のinframeの、右下のつまみをドラッグし、つまみ以外の場所でマウスアップする 4. 任意の場所、例えばを右側のinframeのスクロールバーなどをドラッグする →左側のinfarmeがresizeされる というものになります。 お手数おかけいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問