Skip to content

imgが横幅を超える場合に横スクロールを可能にする#119

Merged
faithandbrave merged 2 commits into
masterfrom
make-img-scrollable
Oct 10, 2022
Merged

imgが横幅を超える場合に横スクロールを可能にする#119
faithandbrave merged 2 commits into
masterfrom
make-img-scrollable

Conversation

@nekko1119

@nekko1119 nekko1119 commented Jan 10, 2022

Copy link
Copy Markdown
Member

モバイルなどで閲覧したとき、画像が表示横幅を超える場合にはみ出した右側部分をページ内では見られませんでした。
(画像を別タブで開けば見ることはできました)

そのため画像が横幅を超える時は横スクロール可能としました。見栄えのためスクロールバーは非表示にしたのでページの見た目は従来と変わらない想定です。

修正後のスクリーンショットです。PCのChrome,Firefox表示とChromeのdevtoolのiPhone12Proは確認しました。
上記以外のブラウザや実機のモバイルでの確認はしていません。

Chrome
image

Firefox
image

Comment thread js/kunai/ui/content.js Outdated
@nekko1119 nekko1119 force-pushed the make-img-scrollable branch from 9cc9502 to 10ba73b Compare January 10, 2022 12:13
@yumetodo

yumetodo commented Jan 10, 2022

Copy link
Copy Markdown
Member

https://cpprefjp.github.io/reference/random/discrete_distribution.html

のように画像が複数あるページでdevelopper toolでjqueryを読み込んで当該コードを走らせて念の為検証しましたがスクロールできることを確認しました。

懸念点をあえてあげるなら長大なページにおけるfindのコストくらいでしょうか・・・?大抵のケースで問題ない気がします。

image
image

Comment thread js/kunai/ui/content.js
this.log.debug(`found ${Badge.sanitize($('main[role="main"] div[itemtype="http://schema.org/Article"] .content-body span.cpp'))} badges`)

// 横幅を超える画像を横スクロール可能にするためにスクロール用のdivで囲む
$('div[itemprop="articleBody"]').find('img').wrap('<div class="scrollable">')

@yumetodo yumetodo Jan 10, 2022

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これって最初からセレクターでimgタグまで絞り込んだほうが高速になったりしないですかね?(感覚論ですみません)

Suggested change
$('div[itemprop="articleBody"]').find('img').wrap('<div class="scrollable">')
$('div[itemprop="articleBody"] img').wrap('<div class="scrollable">')

@akinomyoga akinomyoga Jan 11, 2022

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

最近の JavaScript 事情はよく知らないですけれど、jQuery ではなくネイティブの document.querySelectorAlldocument.evaluate を使った方が速いのでは。jQuery のソースを検索してみました (querySelectorAll, querySelector, evaluate) が、別に最近のブラウザに合わせて querySelector などを使った実装にしている訳でもない (?) みたいですし。

後 jQuery 3.2.1 が使われているみたいですけれど、もう5年前のバージョンになるみたいですね。 あ、3.2.1 は @yumetodo さんが読み込ませた jQuery で、実際に使われているのは 3.5.1 なのですね。

追記: 後、kunai はホスト側で動いている? だとしたら、上のコメントは全く的外れなこと書いてるかもしれないのでお見捨て置きください。静的コンテンツの生成に使っているだけだったとしたら、効率とか余り考えなくて良さそうですし。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kunaiはユーザー側のブラウザ上で動きます
jqueryのコードは後で調査してみますね

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kunaiはユーザー側のブラウザ上で動きます

なるほど。ありがとうございます。だとすると、疑問が…。この PR による DOM 修正は動的に行う必要のあるものなのでしょうか。静的に HTML を生成する段階で修正するべきの気がします。。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#119 (comment)

はい、静的に生成できるのであればそちらが好ましいと思います。

markdownをhtmlに変換している処理は
https://github.com/cpprefjp/site_generator/blob/master/run.py#L82-L92
あたりになると思うのですが、どのように設定すればimgをdivでラップできるのかわかりませんでした…
自分だと時間がかかるか詰まってしまうかしてしまいそうなため、どなたかにお願いする形になってしまいそうです…

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Markdown -> HTMLの変換ライブラリも依存しすぎるとリプレースが大変なのは確かなので、変換後のHTMLにさらに変換をかけるレイヤーはあってもいい気がしますね。今後がラクになるので。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このPRはそんなに大きくないですし、困っているようであればとりあえずマージしてしまって、別な仕組みを入れる際にrevertするのでもよいと思います。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

とするとそもそもの私の指摘はどうしましょうか

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

画像はそれほど使わないので速度はそこまで重要ではない気がしますが、 @nekko1119 さんどうでしょう。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

長らく放置されてしまいましたが、マージに向けて動きたいです。
私の当初指摘はマージするための阻害要因にはならない認識です。
@faithandbrave

@yumetodo

yumetodo commented Oct 9, 2022

Copy link
Copy Markdown
Member

マージに当たり、conflictだけは解決の必要がありますね・・・

@yumetodo

yumetodo commented Oct 9, 2022

Copy link
Copy Markdown
Member

@faithandbrave conflict解決しましたので確認をお願いします

@faithandbrave faithandbrave merged commit d7efe59 into master Oct 10, 2022
@faithandbrave faithandbrave deleted the make-img-scrollable branch October 10, 2022 13:06
@faithandbrave

Copy link
Copy Markdown
Member

ありがとうございます。マージしました。
cpprefjp/siteもデプロイを走らせておきます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants