css-vars-ポニーフィル CSS 変数を使用して Web ページのスキニングを実現すると、互換性の問題が発生する可能性があります。 IE、QQ、Baiduブラウザなどの互換性問題を解決するために、css-vars-ponyfillが導入されました。しかし、IEブラウザでは、css-vars-ponyfillはnextjsでのパフォーマンスが低下します。主な欠陥は、ページがサーバー側でレンダリングされるため、ユーザーがインターフェイスを見た後、動的なテーマカラーやその他のスタイルをすばやくレンダリングできず、遷移時間があり(css-vars-ponyfillはクライアント側のみをサポート)、明らかな色の置き換えプロセスが発生し、ユーザーエクスペリエンスが低下します。ソース コードを読むと、cssVars はブラウザー コンテンツが読み込まれるまで待機してからトリガーされる必要があることがわかります。そうしないと、dom のデータ コンテンツ イベントをリッスンし続けることになり、エクスペリエンス上の問題が発生します。 解決 1. 解析速度
2. 分析の安定性 ファイルの解析場所を手動で変更し、ソースコードの条件トリガーメカニズムに関連する変更を加えることで、ホームページのカラーレンダリング速度がある程度向上しました。しかし、まだ問題があります。つまり、ルートジャンプインターフェースを通じて新しいスタイルチャンクが挿入されると、効果的な CSS 変数解析が実行できません (MutationObserver をオンにするために cssVars オプションを設定しようとしました)。 したがって、解決策は、IE などのブラウザー内のすべてのルートを a タグを介してリダイレクトし、css-ponyfill の再解析と実行をトリガーできるように UA を決定することです。 エクスポート関数ブラウザ() { 定数 UA = window.navigator.userAgent if (UA.includes("qqbrowser")) は "qqbrowser" を返します if (UA.includes("baidu")) は "baidu" を返します if (UA.includes("Opera")) は "Opera" を返します if (UA.includes("Edge")) は "Edge" を返します (UA.includes("MSIE") || (UA.includes("Trident") && UA.includes("rv:11.0")) の場合 「IE」を返す if (UA.includes("Firefox")) は "Firefox" を返します if (UA.includes("Chrome")) は "Chrome" を返します if (UA.includes("Safari")) は "Safari" を返します } タイプ CommonLinkProps = { 子: ReactElement href?: 文字列 ターゲット?: 文字列 アウターリンク?: ブール値 スタイル: 不明 } デフォルトの関数 CustomLink(props: CommonLinkProps) をエクスポートします。 const { children, href, target, as, outerLink, styles = emptyStyles } = props const [isIE, setIE] = useState<boolean>(false) const cloneEl = (c: ReactElement、props?: any) => React.cloneElement(c, { href: ?? href, target, ...props }) の複製 使用効果(() => { if (["IE", "qqbrowser", "baidu"].includes(browser())) { IEをtrueに設定する } }, []) 関数renderLink() { (Children.only(children).type === "a")の場合{ const ノード = cloneEl(ReactElement の子) 戻りノード } それ以外 { fn: () => void | null = null とします if (アウターリンク) { 関数 = () => { window.open(?? href として) } } それ以外 { 関数 = () => { window.location.href = ??href として } } const node = cloneEl(children as ReactElement, { クリック時: () => { 関数() }, }) 戻りノード } } 戻る ( <> {!href ? ( 子供たち ) : isIE ? ( レンダリングリンク() ) : ( <リンク {...props}>{children}</リンク> )} <style jsx>{スタイル}</style> </> ) } ここで、 children の型は、スロットで通常サポートされている 要約する IE 環境 (nextjs ビルド) での css-vars-ponyfill の使用に関する記事はこれで終了です。より関連性の高い css-vars-ponyfill の使用コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: JS 内の Json 文字列 + Cookie + ローカルストレージ
>>: Docker での FastAPI デプロイの詳細なプロセス
この記事では、Vueログイン用画像認証コードの具体的なコードを例として紹介します。具体的な内容は以下...
序文div またはモジュールに overflow: scroll 属性を使用すると、iOS フォンで...
よく使用されるデータベースである MySQL では、多くの操作が必要です。デジタル操作には非常に便利...
次のコードは、MySQL 5.7.22 バイナリ パッケージのインストール方法を紹介しています。具体...
1. CSS背景タグ1.背景色を設定するbackground-ground-color プロパティは...
最近、仕事でサウンド ファイルを再生するために Web ページにプレーヤーを埋め込む必要に迫られまし...
序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...
目次1. 実施の背景2. 実装のアイデア3. 実施プロセス1. 実施の背景先週、ユーザーがタスクを完...
1. dockerfileを作成するときにsshパスワードを設定するには、次のコマンドを使用します。...
MySQLユーザー権限を表示する2つの方法を紹介します1. MySQL grantsコマンドを使用す...
ここでは、samba (ファイル共有サービス) v4.9.1 + OPENldap (バックエンド ...
検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...
1. カラーマッチング効果のプレビュー下の GIF に示すように、ボタンの背景色が徐々に薄くなると...
目次1. インストール2. videojsの紹介3. コンポーネントでのテストと使用1. 基本的な自...
目次質問分析する解決するAlert() 関数を置き換えるsetTimeOut関数まとめ質問数日前、J...