かえラボBlog

かえラボBlogはラナデザインアソシエイツのテクニカルチームが運営する技術系ラボプロジェクトです

RaNa design associates, inc.

(X)HTML+CSS :: Recent Entries

February 22, 2011

rgba()とfilterで背景だけを透過させる。

Category :

"背景だけ"を透過させたい時には、background-colorにrgba()で色と不透明度を指定してやるだけでOKです。
・・・最近のブラウザは。

rgba()に対応してないブラウザ、まぁ主にアレですが・・・にもオリジナルな素晴らしい機能filter: alpha()があります。
filter: alpha(opacity=50)とやると要素の不透明度が50%になるというやつです。
0.5じゃなくて50と指定するところもまた強い自己主張を感じますね。昔気質とでも言いましょうか。

しかし、この素敵機能filter: alpha()では、"背景だけ"でなく子要素含め、すべて透過してしまいます。
とても面倒見が良いです。

しかし、今回のように"背景だけ"に透過を適用したい。そんな時は"DirectX FilterのGradient Filter"の出番です。

これを使って背景にグラデーションしないグラデーションを適用してやるのです。

filter: progid:DXImageTransform.Microsoft.Gradient()
progidのコロンの後に空白を入れないように注意!

引数は以下の通り

  • Enabled = 0 / 1
    1(true)でグラデーション機能の有効化。デフォルトは1。
  • GradientType = 0 / 1
    グラデーションの方向。0は縦方向。1は横方向。
  • StartColorStr = #00000000~#FFFFFFFF
    なんかちょっと長いここが今回のポイント!
    グラデーションの開始の透明度+色をaRGB形式で指定します。aは00(透明)~FF(不透明)
  • EndColorStr = #00000000~#FFFFFFFF
    グラデーションの終了の透明度+色。
// 白の半透明
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#99ffffff,EndColorStr=#99ffffff);
background-color: rgba(255, 255, 255, 0.5);

IEはrgba()の指定を無視するので、これで「背景だけに透過」が適用されます。めでたしめでたし。

February 21, 2011

Android 1.6で背景画像の表示が乱れる現象

Category :

Android 1.6(アップデートしていないExperia等)において、CSS Spriteで設定した画像の表示がボヤーッとボケたようになる現象を確認しました。
結論から言うと、これは背景に指定した画像の縦横サイズが一定以上の大きさになった際に起こります。つまり、縦横が大きすぎる背景画像は正しくロードされないよ、ということです。
検証のためにデモを作成しました。(CSS Spriteではありませんが)

EXPERIA(SO-01B)でのスクリーンショット
EXPERIA(SO-01B)でのスクリーンショット

デモでは以下の4つのサイズのJPEG画像を背景に指定してみました。

  • 768×480px
  • 1024×640px
  • 1280×800px
  • 1680×1050px

EXPERIAのスクリーンショットで分かるように、1680×1050pxではかなり画像が乱れています。仕様書を確認できたわけではないので詳細な仕様は分かりませんが、どうやら縦1000pxを超えた辺りから怪しくなるようです。また雰囲気的に、ファイルサイズは関係ないように思います。

もうお気づきかと思いますが対策はシンプルで、画像の縦横サイズを小さくするだけです。CSS Sprite画像の場合は2つに分割するなどして、ファイル1つ辺りの縦横サイズを小さくします。
EXPERIAなどはAndroid 2.1へのアップデートが公開されていますので、Android 1.6のデバイスはこれから減少していくとは思いますが、auのIS01などは依然Android 1.6のままですのでこれからも検証の際にこのような現象にでくわす機会があるかもしれません。

December 25, 2010

マウスオーバーしたら.hover()でふわっと切り替える。

Category :

すっかり最近のマイブームになってしまった、ふわっと切り替えるホバー処理。

マウスオーバーすると、imgの不透明度を0%にして、下の背景を表示させる。
マウスアウトすると、imgの不透明度を100%に戻す。

// HTML
<a href="#" class="hover">
    <img src="...">
</a>

// CSS
a { background: url(...); }

// JS
$(".hover").hover(
    function(){ $("img", this).stop(true).fadeTo(500, 0); },
    function(){ $("img", this).stop(true).fadeTo(500, 1); }
);

November 17, 2010

IE8でmouseoutイベントが正しく動作しない時の対処法

Category :

[2010/11/19 追記]
子孫要素の出入りを考えないなら、mouseoutじゃなくてmouseleaveを使えばよかった!
詳しくは「mouse系イベントあれこれ


IE8だとmouseoutイベントの挙動がおかしい。
アウトしてないのに、イベントが発生する。

IE7だとちゃんと動作するのに、IE8では動作しない。
そんな時のちょっとした対処法。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

"IE=7"と指定すればIE7スタンダードモードでのレンダリングを試みる。
コンテンツは互換モードだがHTTPヘッダは"IE=7"が指定されているような場合、互換モードの方もIE7レンダリングで描画されてしまう。
というバグ解消のため、2008年6月のセキュリティアップデートを適用したIE8ベータ1以降に"IE=EmulateIE7"が追加された。
"IE=EmulateIE7"ではIE7レンダリングを採用するものの、互換モードが指定されている場合には互換モードでレンダリングされるようになる。

とのこと。

他には

// IE8標準準拠モードを指定
<meta http-equiv="X-UA-Compatible" content="IE=8">

// IE7標準準拠モードを指定
<meta http-equiv="X-UA-Compatible" content="IE=7">

// Quirksモードを指定
<meta http-equiv="X-UA-Compatible" content="IE=5">

// 最新の標準準拠モードを指定 (IE8の場合はIE8標準準拠モード)
<meta http-equiv="X-UA-Compatible" content="IE=edge">

// 複数を指定した場合は最新の標準準拠モードを用いる
// (この場合はIE8標準準拠モードになる)
<meta http-equiv="X-UA-Compatible" content="IE=5; IE=7; IE=8">

など。

詳しくは、現在のサイトを解決する方法


October 28, 2010

HTMLメルマガの作成時のポイント

Category :

かえラボBlog初投稿です。

今回HTMLメルマガを作成していてハマったポイントをメモ代わりに書いておきます。

メルマガ作成時の基本
・がっつりテーブルコーディング
・CSSは<head>~</head>内に記述
(でもGmailに反映しない。インラインで書くのがよい)
・テーブルのセルには単位を明記する。
・padding、marginなどは使わない。
・backgroundの指定はできない。
・画像はフルパスで記述。
...他にもありましたが、割愛。

今回、上記に則って作成しましたが、firefox+Gmailの環境で、
リンクするimg要素にボーダーが出てしまう、という現象にぶち当たりました。

IE+Gmail、Chrome+Gmailでは問題なし。

リンクするimg要素にはborder="0"を指定して解決しました。

基本中の基本なのかも知れませんが、うっかりもれてしまっていたので、
メルマガ作成時のチェックポイントに加えたいと思います。

それにしてもメルマガはOSとブラウザとウェブメールの組み合わせが多くて気が遠くなります。
前もって「チェックはこの組み合わせで!」という線引きをしないといけないな、と思いました。

October 25, 2010

IE6で画像表示がズレてるときにまずチェックすべき4つのポイント

Category :

なんとなくいまっぽいタイトルにしてみましたw

  • vertical-align を baseline から bottom に。またはその逆。
  • 囲っているブロック要素の font-size を0に。または overflow を hidden に。
  • zoom:1 などで hasLayout を true に。
  • 間にコメントや改行をいれずに並べてみる。


それでもダメならレイアウトを変えてみる。

September 9, 2010

jQueryプラグインなスライダーで作ったプレゼンチャート

Category :

前回の「jQueryプラグインなスライダー」を使って、プレゼン用のページを作ってみました。

Demo (アニメーションあり)
Demo (アニメーションなし。実際は0秒のanimate)

【操作方法】
  • 左クリック、右矢印キー、でページ送り
  • 右クリック、左矢印キー、でページ戻し
  • Esc、で先頭ページへ戻る(画面をリロードしてます)
  • Home、で先頭ページへ戻る(先頭までanimate)
  • End、で最終ページへ進む(最終までanimate)
  • それ以外のキー入力は無効

これに合わせて、オプションにpresentationを追加しました。
{ presentation: true }でスライダーを実行すると関係するオプションを自動で調整します。

他には、HTML5で書いているので、IE用にHTML5の要素をducument.createElementで生成しています。

あと、前回のスライダーの記事で書き忘れてますが、このスライダーを上手く使うには、CSSの設定が鍵になります。
具体的には、フレームとガイドとセルのwidthとheightの部分です。

デモスライドの場合は、 フレームにpadding: 40pxを、セルにmargin-right: 40pxを指定しています。

August 2, 2010

GoogleAPIを使ったiPhone用壁紙検索 その2

Category :

GoogleAPIを使ったiPhone用壁紙検索をちょっとばかり改良してみました。

デモ

変更点は
  • ベースはHTML5+CSS3
  • 検索ボックスをCSSでiPhoneぽく
  • 検索結果一覧を左右にスライド
  • 「iPhone画面を表示する」をオプションに。
  • 元画像URLがすでに無効になっていた場合に「Not Found」用の画像を表示。
たすけあいジャパン
ラナデザインアソシエイツは、「助けあいジャパン」に協力しています。