よらノート

よらノート

Webデザインやコーディングネタに関する関連リンク、HTML、CSS、JSなどを取り上げています。

Amebaでブログを始めよう!

Adobeの定番デザインソフト「Fireworks」はデフォルトだと6000pxより大きい画像を開けません。
また、カンバスサイズも6000pxより大きくはできません。
これだとランディングページなど縦長のページをデザインするのに困りますよね。

そんな時に簡単に制限を解除する方法をご紹介します。


1)Fireworksを閉じる

ファイルを編集中だったら、まず落ち着いてFireworksを保存して閉じます。
Fireworksが立ち上がった状態だと、設定ファイルを保存しても再度Fireworksを立ち上げた際に保存前の状態に戻されてしまいます。


2)設定ファイルを開く

Fireworks CS5 Preferences.txt」というファイルを開きます。
場所は下記になります。

C:¥Documents and Settings¥<ユーザー名>¥Application Data¥Adobe¥Fireworks CS5¥Japanese¥Fireworks CS5 Preferences.txt


※注意

「Application Data」もしくは「AppData」というフォルダはフォルダオプションで「隠しフォルダを表示する」設定にしておかないと表示されないので、見当たらない場合はコントロールパネルのフォルダオプションから設定してみてください。


3)該当箇所を編集する

10秒もあれば終わります。
編集箇所は

<key>MaxDocSizeInPixels</key>
<integer>6000</integer>

という部分の数値です。『Ctrl + Fキー』で検索ボックスを出して「6000」と入力し検索します。一発で該当箇所に辿り着くので、これを適当な数値に編集して保存してください。
これだけです。


4)Fireworksを起動

Fireworksを起動してカンバスサイズを変更して確認してみてください。上手くいっていれば6000pxより大きな数値を使えるようになっているはずです。もし出来ないようであれば、設定ファイルの編集・保存ができていない可能性があるので、もう一度試してみてください。

IE6への透過pngの対処法は色々ありますが、有名かつとても実用的で私もよくお世話になっている「DD_belatedPNG_0.0.8a.js」についての使い方とハマりやすい注意点を挙げたいと思います。



  1. 特徴

  2. ダウンロード

  3. 使い方

  4. 注意点

  5. その他の対処法





特徴


IE6以下に対しても透過pngがちゃんと透過して表示できるようにしてくれるJavascriptです。
また設定がとっても簡単で使いやすいです。そして重要なポイントとして背景画像に「透過png」を指定してもちゃんと透過してくれるという点。さらに、background-positionプロパティにも対応しています。




ダウンロード


ダウンロード先は下記から
http://www.dillerdesign.com/experiment/DD_belatedPNG/




使い方


jqueryなどに依存せず単独で動作するので便利です。
内で「DD_belatedPNG.js」を読み込みます。IE6のみに読み込ませたい時は下記のように条件分岐コメントで囲みます。



<!--[if IE 6]>
<script src="○○○/DD_belatedPNG.js"></script>
<script>
        DD_belatedPNG.fix('img, .png_bg');
</script>
<!--[endif]-->


そして、DD_belatedPNG.fix('');の中に適用したいセレクタを記載します。上記のように複数指定することも出来ます。上記の場合は「imgタグ」と「png_bgクラス」に対して適用している例です。imgタグ全てに適用すると重いという場合は指定から外してしまって、html上で適用するimgタグに上記で指定したクラスを付加してあげれば大丈夫です。




注意点


とても便利なスクリプトですが、知っていないとハマることがある注意点を記載します。私はモロにハマりました・・・。



body,tr,tdの背景には使えない


効かない!!という時に結構あるのがこのパターンです。背景画像にも使えるって書いてあるのに使えないじゃないか!とならないように注意しましょう。
背景全体に透過pngを使用する際は全体を「#wrapper」などのdivで囲ってあげれば解決します。






その他の対処法


透過png対策は他にもいろいろありますが、透過png対策もできて、その他のバグやcssに対応してくれる「ie9.js」というものがgoogleから配布されています。ie7.jsからの派生ですね。使用する際はhead内に下記のように記述します。



ie9.jsの使い方



<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<!--[endif]-->


これだけでOKです。上記の場合はIE9より下、つまり「IE8以下に」読み込ませるという記述です。ちなみにgoogleなどから持ってこれるライブラリはgzip圧縮されたものなので読み込みも早いです。


このie9.jsを使うとオールドIEでも「:before,:after擬似要素」が使えたり、「子セレクタ」「兄弟セレクタ」「間接セレクタ」などが使えたり、他にも「クラスの重複指定」「opacityがfilter要らず」で効くようになったりする素敵なライブラリなのですが、透過pngを使う場合画像のファイル名の末尾に「-trans」と付けるだけで透過してくれるようになります。


例)「sample.png」の場合・・・「sample-trans.png」





注意!background-positionが効かない


注意すべきは背景の位置を指定している場合です。背景画像はきれいに透過してくれているのですが、画像が全て(0,0)の位置になってしまいます。
これ結構致命的ですよね・・・。
まぁただ、決まった枠サイズぴったりで透過pngを使用する時にはクラスを付ける必要もないのでhtmlも汚さないし、お手軽かもしれません。








何が原因か分かりませんが、
Fireworksでフォントのプロパティが日本語表記だったのが全て英語表記になってしまう事がたまにあります。


フォントのプロパティが全て英語表記になってしまった状態


こういう状態のことです。
「HiraginoKaku」がずらっと並んでいますが、このままでは順番で覚えている人以外はどれが「ヒラギノ角ゴ1」でどれが「ヒラギノ角6等幅」なのか分からないですよね。
これだと非常に困ります。


このような時に焦らなくても良いように下記に解決法を書いていきます。日本語表記に戻すのは簡単で5クリックもあれば終わります。



メニューバーの「編集」→「環境設定」


メニューバーの「編集」→「環境設定」を開きます。(これで2クリック)

環境設定を開いた状態


「テキスト」→「フォント名を英語表記」のチェックボックス


環境設定を開いたら左側の「カテゴリ」から「テキスト」を選択します(3クリック目)。すると画像にあるように「フォント名を英語表記」のチェックボックスにチェックが入っていると思われます。
多くの場合こいつが原因です。
このチェックを外します(4クリック目)。



「OK」して確認


そして最後に「OK」ボタンをクリックして完了です(5クリック目)。

日本語表記に戻った状態


めでたしめでたし。

Webサイト制作の現場で常に足を引っ張る存在「IE(インターネットエクスプローラー)」。
この問題児にもCSS3の角丸やボックスシャドウ、テキストシャドウなどを実装できる便利なPIE.htcですが、使ってみると「なぜか効かない!」というときがちょくちょくあるので、その解決策をご紹介します。



■PIE.htcの使い方
PIE.htcの指定方法ですが、とっても簡単です。

まず、外部ファイルにしたcssに各idやclassの指定を通常通りします。
そして指定の最後の行にbehavior属性でPIE.htcファイルのパスを指定するだけです。

例)
■CSS
.pageLink span{
display:inline-block;
padding:3px 20px;
background:#F4C32F;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
cursor:pointer;
behavior: url(/PIE.htc);
}

■HTML
<a href="http://ameblo.jp/yoranote/" class="pageLink"><span>よらノート</span></a>


という感じです。


■PIE.htcが効かない場合の対処法
1)まずはPIEへの絶対パスで指定する。それでダメならhtmlファイルからの相対パスで指定する。

2).htaccessに「AddType text/x-component .htc」を記述して拡張子.htcのファイルがテキスト形式のファイルであることを伝え、サーバーで適切に使用できるようにする。

3)公式ではposition:relative;を使わないと上手く動作しない場合や、同じセレクタ内の他の要素のエラー原因となる場合があると言っているので、使っても良さそうならposition:relative;を指定してみる。


このあたりを試してみると良いと思います。

ちなみに私は2番目の.htaccessの指定をしていなかったため暫くハマりました・・・;;

タイトルが少し分かりにくいですね。
CSSでhover時の背景色を 指定する際に、グラデーションを使いたいという時のお話です。

モダンブラウザでは普通にCSS3の「linear-gradient」に各ベンダープレフィックスを頭に付ければ実装できますが、IEではそうはいきません。

IEでグラデーションを指定する場合は、filterを使います。
======================================================================
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FEFEFE', endColorstr='#DFDFDF',GradientType=0 );
====================================================================== 


これを用いてaタグのhover時に単純なグラデーションを指定してみると下記のようになります。
======================================================================
 a:hover{
background: -webkit-linear-gradient(top, #FEFEFE 0%,#DFDFDF 100%);
background: -moz-linear-gradient(top, #FEFEFE 0%,#DFDFDF 100%);
background: -o-linear-gradient(top, #FEFEFE 0%,#DFDFDF 100%);
background: -ms-linear-gradient(top, #FEFEFE 0%,#DFDFDF 100%);
background: linear-gradient(top, #FEFEFE 0%,#FEFEFE 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FEFEFE', endColorstr='#DFDFDF',GradientType=0 );
}
======================================================================


画像を使わずCSSだけで大きなボタンを作る場合、aタグをdisplay:block;でブロック要素にしてクリック領域を大きくすることがよくあります。
その場合、hover時に上記のような指定をしておくと、IE以外のモダンブラウザではaタグの領域どこにマウスを乗せても一つのブロックとして普通にグラデーションが表示されますが、
IEの場合、aタグで囲まれた要素上(aタグでテキストや画像を囲んでいるのならその要素上)以外の領域にマウスを乗せるとチカチカとチラつきが発生します。

面倒なことにIE9ですら発生します。
IE9の場合、チラつき中はカーソルの形状も「指先」と「矢印」が激しく交互に入れ替わる感じの動作をして落ち着きがありません。


■対処法

結論としては、「先ほどのa:hoverの指定の後にIEのみにbackgroundの指定をしてあげる。」というものです。
これでなぜか綺麗にhoverしてくれます。
理由は知りません。

IEのみにcssを指定する方法はいくつかありますが、私のオススメは条件分岐によって各IEの名前を取ったクラスをhtmlタグに付与させる方法です。
======================================================================  
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="ja" class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="ja" class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="ja" class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="ja" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html lang="ja">
<!--<![endif]-->

<head>



======================================================================  
上記のようにie6~ie9までのクラスをhtmlタグに付与することで、validにcss指定できます。

これを使いIE6~IE9にのみhover時のbackgroundを指定してあげます。
======================================================================
.ie6 a:hover,
.ie7 a:hover,
.ie8 a:hover,
.ie9 a:hover {
background: #ccc;
}
======================================================================
背景指定するカラーは何でも良さそうです。
結局反映されません。


なぜこれでチラつきがなくなり、ちゃんと動作するようになるのか謎ですが、とりあえず解決できたので良しとします。