はじめに
Image Compare Viewerは、ビフォーアフターの画像比較を簡単に実装できる便利なライブラリです。しかし、iOSデバイスで使用する際に特有のバグが発生することがあります。
解決方法
バージョン1.5への ダウングレード
最も確実な解決方法は、Image Compare Viewerのバージョンを1.5に戻すことです。
npm install img-comparison-slider@1.5.0
Image Compare Viewerは、ビフォーアフターの画像比較を簡単に実装できる便利なライブラリです。しかし、iOSデバイスで使用する際に特有のバグが発生することがあります。
最も確実な解決方法は、Image Compare Viewerのバージョンを1.5に戻すことです。
npm install img-comparison-slider@1.5.0
Web開発において、要素の位置調整は頻繁に行う作業の一つです。特に中央寄せは多くの場面で必要となりますが、transform: translate()
の使い方によって結果が大きく変わります。
今回は、transform: translate(-50%, -50%);
、transform: translate(-50%);
、そしてtransform: translateX(-50%);
の違いについて詳しく解説します。
実は、translate(-50%)
とtranslateX(-50%)
は全く同じ結果になります。
/* これらは同じ効果 */
.method1 { transform: translate(-50%); }
.method2 { transform: translateX(-50%); }
違いは記述の意図の明確性にあります:
translate(-50%)
:汎用的な書き方translateX(-50%)
:X軸のみの移動であることを明示.center-both {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
この方法は、要素を画面の完全な中央に配置したい場合に使用します。モーダルウィンドウやローディング画面などでよく見られるパターンです。
/* 方法1: translate()を使用 */
.center-horizontal-1 {
position: absolute;
left: 50%;
transform: translate(-50%);
}
/* 方法2: translateX()を使用 */
.center-horizontal-2 {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
どちらも同じ効果ですが、translateX()
を使うことで「X軸のみの移動」という意図が明確になります。
/* 個別制御の例 */
.element {
transform: translateX(-50%) translateY(20px) rotate(45deg);
}
効果の違い:
translate(-50%, -50%)
:完全な中央寄せが必要な場合translate(-50%)
:水平方向のみの中央寄せが必要な場合translateX(-50%)
:水平方向のみの中央寄せ(意図が明確)translate(-50%)とtranslateX(-50%)の使い分け:
translateX()
適切な使い分けにより、より柔軟で効率的なレイアウトを実現できます。特にレスポンシブデザインにおいて、この技術は非常に有用です。
TailwindCSSでCSS変数を使用する際、text-[var(--custom-variable)]
のような記法で思わぬ問題に遭遇することがあります。この記事では、その問題の原因と効果的な解決方法を解説します。
TailwindCSSで以下のような記述をした場合:
<div class="text-[var(--custom-size)]">テキスト</div>
この記述は期待通りに動作しない可能性があります。なぜなら、Tailwindのtext-[]
記法は自動的にcolorプロパティとして解釈される傾向があるためです。
TailwindCSSのtext-[]
記法は、以下のような優先順位で解釈されます:
text-[#ff0000]
、text-[red]
などtext-[16px/1.5]
などCSS変数を使用した場合、Tailwindは変数の内容を事前に判断できないため、予期しない動作をする可能性があります。
最も確実な方法は、設定したいCSSプロパティを明示的に指定することです:
<!-- font-sizeを設定したい場合 -->
<div class="[font-size:var(--custom-size)]">テキスト</div>
<!-- line-heightを設定したい場合 -->
<div class="[line-height:var(--custom-height)]">テキスト</div>
<!-- 複数のプロパティを同時に設定 -->
<div class="[font-size:var(--custom-size)] [line-height:var(--custom-height)]">
テキスト
</div>
tailwind.config.js
でCSS変数を定義し、Tailwindのクラス名として使用する方法:
// tailwind.config.js
module.exports = {
theme: {
extend: {
fontSize: {
'custom-sm': 'var(--text-sm)',
'custom-md': 'var(--text-md)',
'custom-lg': 'var(--text-lg)',
},
lineHeight: {
'custom-tight': 'var(--line-height-tight)',
'custom-normal': 'var(--line-height-normal)',
}
}
}
}
使用例:
<div class="text-custom-md leading-custom-normal">テキスト</div>
TailwindCSSでCSS変数を使用する際は、text-[]
記法の制限を理解し、適切な方法を選択することが重要です。プロジェクトの要件に応じて、最適な解決方法を選択してください。
明示的なプロパティ指定やTailwindの設定ファイルでの定義など、複数の選択肢があることを覚えておけば、柔軟で保守性の高いスタイリングが可能になります。
モーダルのフェードイン処理で動作が重くなる問題にハマったので、解決方法を記録しておきます。
jQueryのfadeIn()
メソッドを使ってモーダルを表示する際、CSSでtransition
プロパティを設定していると、アニメーションが二重に動作してしまい、パフォーマンスが悪化することがあります。
$('.open-btn').on('click', function () {
$('.modal').fadeIn().css('display', 'flex');
});
$('.close-btn').on('click', function () {
$('.modal').fadeOut();
});
.modal {
position: fixed;
width: 100vw;
height: 100svh;
z-index: 999999;
left: 0;
top: 0;
display: flex;
align-items: center;
justify-content: center;
overflow: scroll;
display: none;
background: black;
transition: .3s; /* ←この行が問題 */
}
上記のコードでは以下の問題が発生していました:
fadeIn()
とCSSのtransition
が同時に動作CSSのtransition
プロパティを削除するだけで解決できます。
.modal {
position: fixed;
width: 100vw;
height: 100svh;
z-index: 999999;
left: 0;
top: 0;
display: flex;
align-items: center;
justify-content: center;
overflow: scroll;
display: none;
background: black;
/* transition: .3s; ←この行を削除 */
}
// 変更なし
$('.open-btn').on('click', function () {
$('.modal').fadeIn().css('display', 'flex');
});
$('.close-btn').on('click', function () {
$('.modal').fadeOut();
});
jQueryのアニメーションメソッドを使用する際は、CSSのtransition
プロパティとの競合に注意が必要です。シンプルな解決策として、不要なtransition
を削除するだけで大幅にパフォーマンスが改善されることがあります。
WordPressサイトを引越しした際、HTTP-Authプラグインで設定したBasic認証が機能しなくなることがあります。正しいユーザー名とパスワードを入力しても認証が通らないので対策が必要です。
引越し作業をやり直したくない時に有効です。
WordPress引越し時のBasic認証問題は、事前の準備により回避できます。最も確実な方法は方法1のプラグイン無効化・有効化です。データベース操作が必要な場合は、必ずバックアップを取ってから実行してください。
.hoge:nth-of-type(-n+2) {
}
.hoge:nth-of-type(n+3) {
}
少しはまったので備忘録
$('.open-btn').on('click', function () {
$('.modal').fadeIn().css('display', 'flex');
});
$('.close-btn').on('click', function () {
$('.modal').fadeOut();
});
.modal {
position: fixed;
width: 100vw;
height: 100svh;
z-index: 999999;
left: 0;
top: 0;
display: flex;
align-items: center;
justify-content: center;
overflow: scroll;
display: none;
background: black;
transition: .3s;
}
jQueryは変えずにCSSのtransitionを削除
.modal {
position: fixed;
width: 100vw;
height: 100svh;
z-index: 999999;
left: 0;
top: 0;
display: flex;
align-items: center;
justify-content: center;
overflow: scroll;
display: none;
background: black;
/* transition: .3s; ここを削除 */
}