青いやつの進捗日記。

メモとしてべんきょうのしんちょくをかいていきます。あとで自分が検索しやすいもん

Reactで良い感じにページ内アンカー(ページ内遷移)を実装する

www.npmjs.com github.com これ便利。 import { Element, Link as ScrollLink } from 'react-scroll' <ScrollLink to="section" smooth={true} duration={500}> TextText </ScrollLink> <Element name="section"> Section </Element> これでScrollLink to="section"を押下時にスムーススクロールでElement name="section"まで遷移してくれる。 import { anima…

yakuhanjp、3.3→3.4で地味に破壊的変更があった scssのパスの指定が変わっておるよ

github.com (とかの約物を半角に出来るフォント。便利。 で、10日前に3.4.0がリリースされました。マイナーアップデートですね。 なので開発環境もアップデートしてみる…と、なんとそのままでは動きません。おそらく、Scss使ってるならCSSがビルドできなく…

ページ下部にトップに戻るボタンとか設置する時に気をつけるべきこと。iOSでセーフエリア、Safariで下部のステータスバー

iOSのSafariはブラウザ開いた際に出るステータスバー分、タップできないエリアが存在する。ここの領域はステータスバーが出ていないときはタップが無効になる。 また、iPhoneX以降はセーフエリアというのが存在する。周囲のノッチの周囲あたりがセーフエリア…

GithubのPullRequestで画像を小さく貼りたい…

って思うじゃないですか。で、探したら qiita.com あーこれ!!まさにこれ。 だいたい修正前と修正後をスクショして貼るとか、テーブルにして横並びに出来ると見やすいし便利。

Visibility:hidden; と display:none; の、アクセシビリティ的な違い

よく要素をopacityで消したりすると思うのですが、opacityで消すと要素は残るのでタブで移動とかするとカーソルがあたってしまうのです。なので、アクセシビリティ気にする必要あるのであればopacityでは厳しい。 なので、その場合はカーソル当たらない状態…

IE11やSafariでmatchMediaのaddEventListener('change' は効かない

developer.mozilla.org matchmediaありますよね。上記を見てIE11も対応しているので油断していました。 window.matchMedia(`screen and (max-width: 768px)`).addEventListener('change', () => { }); 上記のようにmatchmediaの閾値を検出するのをaddEventLi…

lodashでイベントを間引く。イベントの終了後にしたり、イベントを何秒ごとに区切ったり。

qiita.com この記事が参考になります。 throttleを使うと、何秒ごとにイベントを起こす、のように出来ます。 this.elms.forEach(elm => { window.addEventListener( 'scroll', throttle(() => { elm.style.left = `-${pageXOffset}px`; }, 20) ); }); 上記の…

JavaScriptで高さを小数点まで含めて取得したいときに

qiita.com 上記の記事が参考になります。 qiita.com のように、高さ取得したかったらoffsetHeightとか使うと思いますが、これ丸めちゃって整数になるんですね。まあだいたい計算出来れば良いならそれで良いのですが、 tech.motoki-watanabe.net でparseFloat…

getComputedStyleでスタイルを取得し、parseIntやparseFloatで数字にする

qiita.com const elm = document.querySelector('.elm'); const style: CSSStyleDeclaration = window.getComputedStyle(elm); const lineHeight = style.lineHeight; のように、して、実際に計算された後のCSSの値をとってこれます。 こちらの結果は21pxの…

WindowsのGoogleChromeでタイムゾーンのバグあったみたいだけどもう治ってるっぽい。

あー PCは Google Chrome ですか?だとすると、時間表示(タイムゾーン)がおかしくなるケースが発生しているとか…(原因調査中?)https://t.co/oGtvIR73ANだとすると、他のブラウザか端末で購入しておくのもよいかな…と。— PKS|通りすがり (@JustApasserby00) 2…

Safariでのバグ。z-indexとtransformの組み合わせにおるz軸での戦い

Safariで、 .layer1 { transform: rotateX(45deg) } .layer2 { z-index: 1; } rotateXさせている.layer1の上に.layer2を乗せたい時。 Chromeなどでは問題なかったのだが、Safariではなんと、.layer1が上に来る。 どうやら、Safariではz-indexよりtransformの…

Reactで数字入ってるかを条件に&&で出し分けようとすると、0が描画される→なぜなら0はfalseだから…!

どういう状況の話かと言うと、 num && ( <Text>{list[num]}</Text> ) のように、型がnumberの変数numが入っていたらlist[num]を描画したい、という状況。 で、numに1とか入ったら意図通り<Text>list[1]</Text>が描画されるのだけど、numに0が入ると、<Text>list[0]</Text>ではなく、なぜか0だけ描画…

yupでnumberだけどnullも許す感じでバリデーションしたいとき

cpoint-lab.co.jp React Hook Formとyupでフォームにバリデーションかけてます。 で、問題は、inputのtypeがnumberで、yupではnumber or nullでバリデーションかけたいとき。 yup.number() yup.number().nullable() だと、数字はいけますが、nullが入りませ…

【メモ】仮想スクロールってものがある

web.dev VirtualScrollはパフォーマンスめちゃ上がるらしい。けどなんだ仮想スクロールって。 qiita.com つまり、見えている範囲だけスクロールイベントを起こす、のようなものらしい

removeEventListenerでscrollイベントを消す

qiita.com teratail.com scrollイベントを動かしたいが、目的達成したら消したい。で、また目的が出来たら動かしたい。 const closeFunc = () => { isOpened = false; // NOTE: scrollイベントを消す target.removeEventListener("scroll", closeFunc); }; t…

TypeScriptでinstallしたのにパッケージが見つからない…→型定義ファイルを入れる必要

www.npmjs.com これを入れたのにTypescriptで import ScrollBooster from 'scrollbooster' としても、そもそも'scrollbooster'が見つからない。 どうやら、型定義ファイルがなかったから、でした。 qiita.com www.npmjs.com 今回は@typesから入れられたので…

scrollboosterでドラッグで横スクロールする機能を実装。IE11にも対応。

一番ありそうな場面は、 テーブルで、左列がstickyで固定されていて、2列目以降がスクロール出来るやつ。縦に長いテーブルだと横スクロール出来る入力デバイスを持っていないとスクロールバーをクリックしないとスクロール出来ないので操作がかなりめんどく…

【メモ】そのページのHTML5の見出しレベルなど、文書構造を簡単に確認できるChrome拡張機能

nelog.jp

IEでoverflowとpadding-bottomを同時に使うとpadding効かない

note.com neos21.net tamagondq10.blogspot.com タイトル通り、 overflow: scroll と padding-bottom を同時に使うとpadding-bottomが効かないらしい。 なので、display: blockで高さある疑似要素をafterとかで入れてあげると解決する。

地味にどうやるのか知らなかった、inputのinputmodeをメモっておく

developer.mozilla.org

JSDocでコメントを書く メモ

たいへんお恥ずかしながら。JSDocってつい最近知りました。 ReactでPropsの説明を type Props = { /** 名前 */ name: string } みたいに書くとコンポーネント使う際にPropsに説明が出たりします。あとStorybookでコンポーネントのPropsの説明が出る。 っての…

React.Fragmentにkeyを入れる必要がある場面がある

qiita.com わざわざ<React.Fragment>って書く場面あるのかなとか思って全て<>にしてました。ありました。 mapとかでreturnする際にkeyを指定しておく必要ありますが、一番外側に必要なので、その際にFragmentが一番外の場合は<>だとkeyを指定できないので <React.Fragment key={hoge}> </React.Fragment> のようにする必要</react.fragment>…

Next.jsでlocalStorageを使う

Next.jsでStorageオブジェクトを使う これが参考になります あと、localStorageとかのキー名は1つのファイルにまとめておいたほうが管理的に良い

ReactでSNSシェア機能をreact-shareというライブラリで

yurufuwa-tech.hatenablog.com ReactでSNSのシェアをしたいときに、 github.com これが便利。 TwitterのツイートボタンとかはHTMLだとTwitterのなんかそれ用のページでぽちぽちするとタグを生成できるのでそれを埋め込むだけだが、ReactだとTwitter用のJSを…

数字を丸めていく

qiita.com 普通はMath.roundだけでOK。

時間関係の関数のテスト まとめメモ

t-wada.hatenablog.jp qiita.com そもそもの書き方 sbfl.net Date.now = jest.fn(() => 1000000000) みたいにするとDate.now()をテストの際に固定出来る(じゃないと意図通りのテスト出来ないからね)

タイムゾーンまわりの検証のために、GoogleChromeで位置情報を偽装して検証する

digitalidentity.co.jp このブログのとおりやると出来ます。 このブログの通りChromeのDeveloperToolのSensorsから、いま自分がベルリンやサンフランシスコにいることに出来ちゃいます。 日本時間24時になったら見れなくする、とか日本でデータ入れて日本で…

date-fns-tzでタイムゾーンを扱う

www.npmjs.com qiita.com これ。date-fnsとはまた別のものを入れる必要があります。 utcToZonedTimeでUTCで入っている時刻をどこかのタイムゾーンの時刻に変換できます。 とある時間データの日本時間当日24時を知りたいとき、utcToZonedTimeでAsia/Tokyoにし…

styled-componentsでforwardedAsを使ってコンポーネント拡張した上でタグを変更する

qiita.com <EventButton forwardedAs="p"> dummydummy </EventButton> const EventButton = styled(Button)` width: 320px; height: 53px; ` ↑pages/page.tsx export const Button = (props: Props, as: any) => { <Container forwardedAs={as} > const Container = styled.button`` ↑Button.tsx これで、buttonタグで作られているforw</container>…

Firefoxでbackground-colorとborderが同時に指定してあるtdでborderが消える

[CSS] Firefoxでborderが表示されない場合の対処 | metrograph.jp position: relative; border background-color このかみ合わせがIEやFirefoxで悪い… Firefoxに関して言えば、z-index: -1;を指定してあげることでbackground-colorがborderの下にいってくれ…