CSS関連

お手軽ロールオーバー

メモ

画像のロールオーバーは、Javascriptを使うと楽です。特にCSS HappyLifeさんのサイトの

smartRollover.js

なんかは非常に簡単にロールオーバーを実現できます。

ただ画像のロールオーバーといっても、明度が上がる程度のものであれば、わざわざ2枚用意するのも面倒です。

そういう場合はスタイルシートで解決しましょう。

1.imgタグを囲んだaタグに「class="opacity"」を記述します。

<a href="#"  class="opacity"><img src="hoge.jpg" /></a>

2.スタイルシートに以下を記述します

a.opacity{
   background-color:#FFF;
   display:inline-block;
}

a.opacity:hover img,
a.opacity:active img{
    -moz-opacity:0.7;
   opacity:0.7;
   filter:alpha(opacity=70);
}

要するに、画像の透明度を上げて、白の背景色と混ぜ合わせれば明るく見えるというわけですね。

■サンプル(明るく:background-color:#FFF;)

反対に暗く見せたい場合は、背景色を暗くすれば良いので、「a.opacity」の「background-color」を「#000」にしてください。

■サンプル(暗く:background-color:#000;)

その他の色についても、背景色の設定次第で様々なバリエーションが可能です。

■サンプル(赤:background-color:#F00;)

■サンプル(緑:background-color:#0F0;)

■サンプル(青:background-color:#00F;)

PIEで「Multiple background images」

IEでもCSS3 その2(PIE)」で「Multiple background images」のやり方がわからないと書いたのですが、ようやくやり方がわかりました。サンプル

PIEにて「Multiple background images」を実行させる方法は以下の通りです。

.multiple_box{
background-color:#FFFFFF;
width:640px;
height:480px;

/*Firefox等用*/
background:
url(img/Winter.jpg) no-repeat top left,
url(img/Waterlilies.jpg) no-repeat center center,
url(img/Blue_hills.jpg) no-repeat 100% 100%;

/*PIE用*/
-pie-background:
url(img/Winter.jpg) no-repeat top left,
url(img/Waterlilies.jpg) no-repeat center center,
url(img/Blue_hills.jpg) no-repeat 100% 100%;

behavior: url(PIE.htc);
}

「background」ではなく「-pie-background」と記述しなければならなかったわけです。

グラデーションの記述方法にヒントがあったのに、今の今まで気づかなかったのは我ながらアホとしか言いようがありませんが、とりあえず解決!

サンプル [新しいウィンドウで開く]

nandani | 2010年11月10日 | コメント(0) | トラックバック(0) | CSS関連

IE9ベータ版でCSS3テスト

先日ノートパソコンが手に入り、それのOSがwindows7だったので早速IE9ベータ版をダウンロードしてインストールしてみました。

IE9ベータ版のダウンロードページ

で、CSS3の動作をチェックしてみたのですが、以下がその結果画像です。

実際にIE9ベータ版をインストールしている方はこちら:サンプル

見事にIE9ではCSS3に対応していますね~

ただし!対応しているのは

  • 角丸
  • ドロップシャドウ
  • マルチプルバックグラウンドイメージ

のみで、以下のスタイルには対応できていません。

  • グラデーション
  • ボーダーイメージ
  • テキストシャドウ

単に記述方法が違うだけかもしれませんが。

ともあれ、まだまだベータ版ということなので今後に期待します。

nandani | 2010年09月25日 | コメント(0) | トラックバック(1) | CSS関連

PIEバグレポート

複数のタグの中にあるブロック要素のタグを角丸にする場合、角丸が効かない場合があります。

例)

<div class="box_outer">
    <div class="box">
        PIEではIEでも<br />
       角丸・ドロップシャドウ・グラデーションを<br />
       実行できます。
   </div>
 </div>

この要素の各スタイルは以下の通り

.box_outer{
   padding:20px;
   background-color:#FFF;
}
 
.box {
   padding:20px;
   background-color:#EEE;
   border:solid 1px #000;
  
   /*角丸*/
   -moz-border-radius: 15px; /*FireFox*/
   -webkit-border-radius: 15px; /* Safari and Chrome */
   border-radius: 15px; /* Opera 10.5+, IE */
  
  
   behavior: url(PIE.htc);
}

これを実行すると、以下のようになります。

サンプル

サンプルをFireFoxなどで見ていただければわかると思いますが、白い部分の中に灰色の角丸ブロックが表示されます。

しかしIEでみると角丸にならないどころか、background-colorの設定が無効になってしまっています。

どうやら外のタグでbackground-colorを設定するとこのようにバグるようです。(他にも原因なるかもしれませんが)

解決方法としては、角丸にするタグのスタイルで「position:relative;」を設定してください。

.box_outer{
   padding:20px;
   background-color:#FFF;
}
 
.box {
   padding:20px;
   background-color:#EEE;
   border:solid 1px #000;
   position:relative;
  
   /*角丸*/
   -moz-border-radius: 15px; /*FireFox*/
   -webkit-border-radius: 15px; /* Safari and Chrome */
   border-radius: 15px; /* Opera 10.5+, IE */
  
  
   behavior: url(PIE.htc);
}

これでとりあえず解決するようです。

サンプル

nandani | 2010年09月10日 | コメント(0) | トラックバック(1) | CSS関連

inline-blockを使うときはinline要素からアプローチせよ!

inline-blockといえば、インライン要素でありながら、ブロック要素であるwidthやheight、marginやpaddingなどを使えるようになるというスタイルです。

たとえば

<p class="e_date">2010.09.08</p>

<p class="e_title">記事のタイトル</p>

というhtml記述に対して

<style>

.e_date{
display:inline-block;
width:72px;
height:20px;
padding:5px;
background-color:#000000;
color:#FFFFFF;
}

.e_title{
display:inline-block;
width:200px;
}

</style>

というスタイルを設定すると以下のようになります。

サンプル

しかし、Firefoxなどモダンブラウザでは使用できますが、IE6、7ではまだ実装が不十分です。IE8でもサーバによってはなぜか実現できたりできなかったりします。(このサクラインターネットでは使えませんでした。)

これをIEでも実現させるには、ブロック要素をinline-blockにするのではなく、インライン要素をinline-blockにしてみてください。

<span class="e_date">2010.09.08</span>

<span class="e_title">記事のタイトル</span>

スタイルは上記のと同じです。

以下実行結果

サンプル2

nandani | 2010年09月08日 | コメント(0) | トラックバック(0) | CSS関連 | HTML関連

htcが効かないサーバの場合

「IEでもCSS3」シリーズの記事で「PIE.htc」「ie-css3.htc」「css3shadow.htc」を紹介しましたが、サーバによっては効かない場合があります。

これはサーバが「htc」という拡張子のファイルを正しく認識できていないためです。
これを認識させる方法は以下の通りになります。

1.テキストエディタを開いて

AddType text/x-component .htc

と記述します。

2.ファイル名を「.htaccess」とします。この名前で保存できない場合はとりあえず「ht.access」と保存します。

3.ホームページを設置しているサーバにアップロードします。もし「ht.access」で保存した場合は、アップロードした後「.htaccess」にリネームしてください。

以上で「htc」が使えるようになります。

すでにhtaccessというファイルがある場合は、そのファイルに1.を追記してください。

 

今回参考にさせていただいたサイト

美美美コム デザイナーブログ:該当記事「htcファイルが使えないときの解消法

「input」タグの「submit」ボタンを画像にかえる方法

<input type="submit" class="button" value="検索" />

というようなボタンを画像に差し替える場合、このようにスタイルを設定します。

input.button{
 background-image:url("images/search_button.png");
 background-repeat:no-repeat;
 background-color:#000000;
 border:none;
 width:28px;
 height:28px;
 text-indent: -9999px;
 cursor: pointer;
}

サンプル [新しいウィンドウで開く]

nandani | 2010年08月04日 | コメント(1) | トラックバック(1) | CSS関連 | HTML関連

IE対策で必要なJavascript同士の干渉報告 その1

IEでも「getElementsByClassName」を利用できるようになるスクリプト「getElementsByClassName.js(ダウンロードサイト)」と、IEでも角丸やドロップシャドウが使えるようになる「PIE.htc(ダウンロードサイト)」はお互い干渉するのか、同時に使用するとIE8が落ちる・・・(IE7ではたぶん大丈夫)

IEのためのスクリプトなのに・・・IE○ね~~~~~!!

おとなしく「getElementsByClassName.js」はやめて、「prototype.js」か「jquery.js」で代用するのが良いようです。

IEでもCSS3 その3(css3shadow)

今回の方法では、ドロップシャドウ・テキストシャドウができます。

 

「css3shadow」を利用する方法。(参考サイト:ppBlogさんのサイト

css3shadowでできるCSS3機能は以下のとおりです。

  • -moz-box-shadow または -webkit-box-shadow : ドロップシャドウ
  • text-shadow : テキストシャドウ

css3shadowのIE用ドロップシャドウでは「box-shadow」ではなく、「-moz-box-shadow」または「-webkit-box-shadow」で記述します。もちろん両方書いていても大丈夫です。

 

手順

1.まずはこちらのサイトから「css3shadow」をダウンロードしてください。(リンク先の下のほうにある「添付ファイル:css3shadow.htc」をクリックしてください。)

2.htmlファイルに以下を記述し、「css3shadow.htc」を呼び出してください。(css3shadowではbehaviorで呼び出しても有効になりません)

<!--[if IE]>
<script type="text/javascript" src="css3shadow.htc"></script>
<![endif]-->

3.スタイルシートを設定してください。なお、css3shadowではinsetによる内部シャドウが使用できます。
(ie-css3とPIEでは現在確認したところ、できませんでした)
通常のドロップシャドウにする場合はこの「inset」を削除してください。

.box{
padding:20px;
background-color:#FFF;
border: solid 10px #999;
width: 500px;
  
font: 18px Arial; color: #555;
-moz-box-shadow: inset 0px 0px 12px rgba(10, 10, 10, 0.95);
-webkit-box-shadow: inset 0px 0px 12px rgba(10, 10, 10, 0.95);
text-shadow: 0px 2px 3px rgba(10, 30, 100, 0.3);
}

4.スタイルは、ドロップシャドウ・テキストシャドウともにclass「box」という名前にしていますので、body内にそれぞれを含んだタグを記述してください。(以下例)

<div class="box">
<p>「css3shadow」では、insetによる内部シャドウが使用できます。</p>
<p>「css3shadow.htc」を呼び出す場合は、behaviorではなく、scriptタグで呼び出してください。</p>
</div>

これで、IEでも対応できるようになります。

サンプル [新しいウィンドウで開く]

※サンプルではinsetによる内部シャドウを使用しています。

 

注意事項

シャドウを設定しているクラスで「text-align:center;」を使うと、「こちら」のようにとんでもない結果になります。使う場合はそのクラスの中にもうひとつタグを入れてそちらで「text-align:center;」を使ってください。

上記の問題、ご対応いただけたようです。製作者様ありがとうございました^^

 

今回参考にさせていただいたサイト

ppBlog : 該当記事「IEでCSS3のドロップシャドウを使いたい

nandani | 2010年07月22日 | コメント(2) | トラックバック(1) | CSS関連

IEでもCSS3 その2(PIE)

今回は、角丸・ドロップシャドウ・グラデーションを行います。

※印刷にて重大なバグあり。使用にはご注意を!

※印刷バグは「version1.0 beta4」においてある程度解消されましたが、その代わり、印刷においてPIEは実行されません。(試しに当サイトをIEで印刷プレビューをご覧ください。角丸の効果がなくなっています。)

 

「PIE」を利用する方法。(参考サイト:コリスさんのサイト

PIEでできるCSS3機能は以下のとおりです。

  • border-radius:角丸
  • box-shadow:ドロップシャドウ
  • linear-gradient:グラデーション
  • border-image:ボーダー画像
  • multiple background images:1つのクラス・IDに複数の画像を設定

※「ボーダー画像」について、あまりピンとこない方はこちらのサイトをご参照ください。非常にわかりやすく説明されています。 「PXT255;さん」のサイト

 

手順

1.まずはこちらのサイトから「PIE」をダウンロードしてください。

2.次にスタイルにて、各設定を行います。(今回ははじめからbehavior: url(PIE.htc);を入力しておきます。)

.box {

padding:10px;

/*角丸*/
-moz-border-radius: 15px; /*FireFox*/
-webkit-border-radius: 15px; /* Safari and Chrome */
border-radius: 15px; /* Opera 10.5+, IE */

/*ドロップシャドウ*/
-moz-box-shadow: 5px 5px 15px #000; /* Firefox */
-webkit-box-shadow: 5px 5px 15px #000; /* Safari and Chrome */
box-shadow: 5px 5px 15px #000; /* Opera 10.5+, IE */

/*グラデーション*/
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#FFFFFF), to(#999999));
background: -moz-linear-gradient(#FFFFFF, #999999);
-pie-background: linear-gradient(#FFFFFF, #999999);

behavior: url(PIE.htc);
}

/*border-image*/
.bi_text{

padding:10px;

border: 1px solid #a3a3a2;
-moz-border-image: url(img/scotch-tape.png) 2 8 2 8 / 2px 8px 2px 5px;
-webkit-border-image: url(img/scotch-tape.png) 2 8 2 8 / 2px 8px 2px 5px;
border-image: url(img/scotch-tape.png) 2 8 2 8 / 2px 8px 2px 5px;

behavior: url(PIE.htc);
}

/*Multiple background images*/
.multiple_box{

width:600px;
height:400px;

/*Firefox等用*/
background:
url(img/Winter.jpg) no-repeat top left,
url(img/Waterlilies.jpg) no-repeat center center,
url(img/Blue_hills.jpg) no-repeat 100% 100%;

/*PIE用*/
-pie-background:
url(img/Winter.jpg) no-repeat top left,
url(img/Waterlilies.jpg) no-repeat center center,
url(img/Blue_hills.jpg) no-repeat 100% 100%;

behavior: url(PIE.htc);
}

※2010/11/09 : PIE用のMultiple background imagesの記述を追記しました。

各クラスの最後に、1.でダウンロードした「behavior: url("PIE.htcへのパス");」を記述するのを忘れないよう注意してください。

※なおグラデーションは、Firefoxの場合3.6以上でないと表示されませんのでご注意ください。

3.スタイルの設定は

  • 「角丸」「ドロップシャドウ」「グラデーション」はclass「box」
  • 「border-image」はclass「bi_text」
  • 「Multiple background images」はclass「multiple_box」

というclass名にしていますので、body内にそれぞれを含んだタグを記述してください。(以下例)

<h2>border-radius/box-shadow/linear-gradient</h2>
<div class="box">角丸とドロップシャドウ、グラデーション</div>

<h2>border-image</h2>
<p class="bi_text">border-imageとはボーダーに画像を適応させるもの</p>

<h2>multiple background images</h2>
<div class="multiple_box"></div>

これで、IE8でも対応できるようになります。

サンプル [新しいウィンドウで開く]

※サンプルでは見やすいようにタグのスタイルをあらかじめ設定しています。

※サンプルの「border-image」の背景に使用している画像「scotch-tape.png」は「2xup.org blog」さんのサイトから借用しました。正常に表示されればなかなかかっこいい背景になります。

と言いたいところなんですが、「border-image」と「multiple background images(※1)はなぜか、IEで正常に動作しませんでした。できるはずなんですけどねぇ・・・;

こちらについてはもうしばらく調べてみます。

 

今回参考にさせていただいたサイト

nandani | 2010年07月21日 | コメント(0) | トラックバック(5) | CSS関連 | HTML関連

Copyright(c) 2010 - 2024 ダリの雑記