<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>CSS &amp; xhtml</title>
    <link rel="alternate" type="text/html" href="http://101lab.net/css/" />
    <link rel="self" type="application/atom+xml" href="http://101lab.net/css/atom.xml" />
    <id>tag:101lab.net,2007-09-16:/css//29</id>
    <updated>2010-02-19T23:01:13Z</updated>
    <subtitle>CSSとxhtmlの覚え書きとサンプル</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.261</generator>

<entry>
    <title>IE-winで透過PNGを利用する方法</title>
    <link rel="alternate" type="text/html" href="http://101lab.net/css/2010/02/ie-winpng.html" />
    <id>tag:101lab.net,2010:/css//29.2969</id>

    <published>2010-02-19T22:57:59Z</published>
    <updated>2010-02-19T23:01:13Z</updated>

    <summary>via IE-winで透過PNGを利用する方法 バージョン６までのIEはPNGの...</summary>
    <author>
        <name>101</name>
        <uri>http://101lab.net/</uri>
    </author>
    
        <category term="css" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://101lab.net/css/">
        <![CDATA[<p>via <a title="IE-winで透過PNGを利用する方法 - Archiva" href="http://archiva.jp/web/html-css/alpha-channel_on_ie.html">IE-winで透過PNGを利用する方法</a></p>

<blockquote>

<p>バージョン６までのIEはPNGのアルファチャンネル（半透明）に対応していないので、普通に使うと透過部分が灰色っぽくなり、期待はずれな結果に終わる。IE6でも透過PNGを表示するには、次のように記述する。</p>

<ol class="codelist">
<li class="odd tab0"><code>#overlay {</code></li>
<li class="even tab1"><code>filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(<strong>src=&quot;./overlay.png&quot;</strong>, sizingMethod=&quot;scale&quot;);</code></li>
<li class="odd tab0"><code>}</code></li>
</ol>

<p>これは「<a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/filters/alphaimageloader.asp">AlphaImageLoader Filter</a>」という指定。元は「要素」と「要素の背景」の間に画像を配置する指定で、IEの独自拡張。Direct Xで実現してます。画像にアルファチャンネル（透過度情報を保存するデータ領域）が設定してある場合、これを有効にします。</p>
<p>ただ、このままだとIE以外だと画像が表示されません。実際使うなら、以下のように指定すると良いでしょう。</p>

<ol class="codelist">
<li class="odd tab0"><code>#overlay {</code></li>
<li class="even tab1"><code>background: transparent url(./overlay.png) no-repeat left top !important;</code></li>
<li class="odd tab1"><code><strong>background: none;</strong></code></li>
<li class="even tab1"><code>filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;./overlay.png&quot;, sizingMethod=&quot;scale&quot;);</code></li>
<li class="odd tab0"><code>}</code></li>
</ol>

<p>まず普通にPNG画像を背景画像として指定。次にIEで解除。そしてIE用にPNG画像を指定する。このようにすればIEでも、その他のモダンブラウザでも、概ね同じように「overlay.png」が表示されます。</p>
<p class="memo"><strong>memo: </strong>IE6-win以下は、同一プロパティ内の!important指定に問題があり、常に後に書いたほうが優先される。</p>

<h3>Data</h3>
<table border="1" cellspacing="0" class="portrait">
  <colgroup span="1" width="15%" align="left" />
  <colgroup span="1" width="75%" align="left" />
  <thead>
    <tr>
    <th>属性</th>
    <th>説明</th>
    </tr>
  </thead>
  
  <tbody>
    <tr>
    <td>enabled</td>
    <td>フィルターの有効、無効を指定します。<br />1（true）で有効、0（false）で無効。デフォルト値は<strong>1</strong>。</td>
    </tr>
    <tr>
    <td>sizingMethod</td>
    <td>画像の貼り付け方を指定します。<br />cropはそのまま。imageは要素を画像の大きさに合わせ、scaleは要素の大きさに合わせて画像を拡大（縮小）します。デフォルト値は<strong>image</strong>。</td>
    </tr>
    <tr>
    <td>src</td>
    <td>画像のURLを指定します。<br />デフォルト値は無し。</td>
    </tr>
  </tbody>
</table>
<p>「AlphaImageLoader」が有効なのは、<strong>IE5.5から</strong>です。IE5.01や、それ以前のレガシーブラウザに配慮する必要はあります。</p>
<p>あと、「AlphaImageLoader」を指定した要素が&lt;a&gt;タグを含む場合は注意しましょう。<strong>リンク領域がクリックできなくなる</strong>可能性があります。解決の鍵は「<code>position: relative;</code>」と「<code>z-index</code>」。たとえばAlphaImageLoderを指定した要素の内側に&lt;div&gt;でも作って指定してやれば良いでしょう。ただ残念ながら、全ての状況で有効な訳ではありません。隣り合い、重なり合うレイヤに対していろいろ試してみましょう。</p>

<h3>おまけ_1 <ins>(2007.02.14)</ins></h3>
<p>いちおこういう方法もある。</p>
<ol class="codelist">
<li class="odd tab0"><code>#wrap {</code></li>
<li class="even tab1"><code>background-color: #fff;</code></li>
<li class="odd tab1"><code>filter:alpha(opacity=80);</code></li>
<li class="even tab1"><code>-moz-opacity: 0.8;</code></li>
<li class="odd tab1"><code>opacity: 0.8;</code></li>
<li class="even tab0"><code>}</code></li>
</ol>
<p>3行目がIE。4行目がMozilla系。5行目がモダンブラウザ用。<br />注意すべきなのは、要素の背景っていうか<strong>要素自体を透明化</strong>する点。使いどころが難しいけど、単色の透明度調節なら（画像を用意しなくても良い分）管理も更新も楽です。</p>
<p>参照： QuirksMode, <cite><a href="http://www.quirksmode.org/css/opacity.html">CSS/Declarations/opacity</a></cite></p>

<h3>おまけ_2 <ins>(2007.03.30)</ins></h3>
<p>ここまでは背景画像に透過PNGを使う方法だったけど、HTML上に透過PNG画像を直接置きたい場合は、<a href="http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html">PNG Behavior</a>を利用してみてはどうでしょう？</p>
<p>PNG Behaviorは、AlphaImageLoaderとHTCファイルを利用して（IEで）透過PNG画像を使うスクリプト。流れとしては、以下みたいな感じ。</p>
<ol>
<li>画像のsrc属性から「.png」を検出</li>
<li>src属性を透過gifのものに置き換える</li>
<li>PNG画像のパスでAlphaImageLoaderを適用</li>
</ol>
<p>実装は.htcファイルをアップロードし、CSSに一行追加するだけです。</p>
<ol class="codelist">
<li class="odd tab0"><code>img {</code></li>
<li class="even tab1"><code>behavior: url(&quot;pngbehavior.htc&quot;);</code></li>
<li class="odd tab0"><code>}</code></li>
</ol>
<p><code>behavior</cpde>はIE 5.0からサポートされた機能で、HTMLやJavaScript等によって構成されるHTC（HTML Component）ファイルをHTML上で使用するプロパティです。このプロパティに対応しているのはIEのみなので、PNG BehaviorのスクリプトはIEにだけ読み込まれることになります。</p>

</blockquote>
]]>
        
    </content>
</entry>

<entry>
    <title>cssハック</title>
    <link rel="alternate" type="text/html" href="http://101lab.net/css/2010/02/css.html" />
    <id>tag:101lab.net,2010:/css//29.2968</id>

    <published>2010-02-19T22:49:20Z</published>
    <updated>2010-02-19T22:54:18Z</updated>

    <summary>CSSハック一覧（via CSSハック一覧：HTML│CSSタグ辞書）   IE...</summary>
    <author>
        <name>101</name>
        <uri>http://101lab.net/</uri>
    </author>
    
        <category term="css" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://101lab.net/css/">
        <![CDATA[CSSハック一覧（via <a title="CSSハック一覧：HTML│CSSタグ辞書" href="http://d-lover.com/css/hack.shtml">CSSハック一覧：HTML│CSSタグ辞書</a>）
 
IE6以下用

スターハック

* html #hack { color:#000000; } 
対応ブラウザ：IE4～6、MacIE4～5

セレクタの前に【* html 】をつける。

アンダースコアハック

#hack { _color:#000000; } 
対応ブラウザ：IE4～6

プロパティの前に【_】アンダースコアをつける。

IE7用

*:first-child+html #hack { color:#000000; }
対応ブラウザ：IE7

セレクタの前に【*:first-child+html】をつける。

IE6、IE7用

#hack { /color:#000000; }
対応ブラウザ：IE6、IE7

プロパティの前に【/】をつける。

IE6のみ除外

#hack { color /**/:#000000; }
対応ブラウザ：IE7、IE8、Firefox、Safari、Opera、Chrome

プロパティの後ろに【/**/】をつける。

Firefox用

#hack { color:#000000; }
#hack, x:-moz-any-link { color:#333333; /* Fx 1.0 以降に適用される */}
#hack, x:-moz-read-only { color:#666666; /* Fx 1.5, 2.0 以降に適用される */}
#hack, x:-moz-broken { color:#999999; /* Fx 3.0 以降に適用される */}
#hack, x:x{ color:#000000; }
対応ブラウザ：Firefox

「グループ化されたセレクタの中に、対応していないものがあるとすべてが無効化される」という性質を利用したハックです。 一番最後の指定（x:x）では、一部ブラウザが未対応セレクタが含まれているグループを無視しないことがあるため、一番最初のデフォルト指定と同じ指定をします。

参考サイト：「Firefox 1.0, 1.5, 3.0 用の CSS ハック | ヨモツネット」
http://www.yomotsu.net/lab/css/csshack_firefox

IE7以外のモダンブラウザ用

html>/**/body #hack { color:#000000; }
対応ブラウザ：Firefox、Safari、Opera、Chrome、IE8

セレクタの前に【html>/**/body】をつける。

html[xmlns] #hack { color:#000000; }
対応ブラウザ：Firefox、Safari、Opera、Chrome、IE8

セレクタの前に【html[xmlns]】をつける。

Safari3用

body:first-of-type #hack { color:#000000; }
対応ブラウザ：Safari3

セレクタの前に【body:first-of-type】をつける。

Safari2用

/* hogehoge \*/
html:\66irst-child #hack { color:#000000; }
対応ブラウザ：Safari2

【/* hogehoge \*/】でコメントアウトをした後、セレクタの前に【html:\66irst-child】をつける。

XHTML側の指定（条件分岐コメント）

<!--[if It IE 7]>
<link rel="stylesheet" type="text/css" href="css/test.css" media="screen" />
<![endif]-->
IEの特定のバージョンにのみ、そのCSSを適用させることができる。
↑は、「IE7未満（IE5～6）にだけ外部CSSを読み込ませる」という指定。

clearfix

.clearfix:after{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
} /*IE7以外のモダンブラウザ向け*/

.clearfix{display:inline-block;} /*IE7およびMacIE5向け*/

/*Hides from IE-mac\*/
* html .clearfix{height:1%;}
.clearfix{display:block;}
/*End hide from IE-mac*/ /*IE6以前向け*/
もはや説明不要な「clearfix」。 使わないでもなんとかなりますが、便利なことには変わりない。
]]>
        
    </content>
</entry>

<entry>
    <title>リンク</title>
    <link rel="alternate" type="text/html" href="http://101lab.net/css/2007/09/post-13.html" />
    <id>tag:101lab.net,2007:/css-tips//29.1988</id>

    <published>2007-09-16T10:21:35Z</published>
    <updated>2007-09-17T09:55:07Z</updated>

    <summary> Another HTML-lint gateway ABC Web Site ...</summary>
    <author>
        <name>101</name>
        <uri>http://101lab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://101lab.net/css/">
        <![CDATA[<dl>
<dt>
<a title="Another HTML-lint gateway" href="http://openlab.ring.gr.jp/k16/htmllint/htmllint.html" >Another HTML-lint gateway</a></dt>
<dd>ABC</dd>

<dt>
<a title="Web Site 作成支援 - [HTML、XHTML、CSS、W3C勧告邦訳、ウェブサイト開発情報]" href="http://www.nextindex.net/web/index.html" >Web Site 作成支援 - [HTML、XHTML、CSS、W3C勧告邦訳、ウェブサイト開発情報]</a></dt>
<dd>ABC</dd>

</dl>]]>
        
    </content>
</entry>

<entry>
    <title>文脈セレクタ</title>
    <link rel="alternate" type="text/html" href="http://101lab.net/css/2007/09/post-4.html" />
    <id>tag:101lab.net,2007:/css-tips//29.1970</id>

    <published>2007-09-16T07:01:35Z</published>
    <updated>2007-09-17T15:29:32Z</updated>

    <summary>CSS1 では文脈セレクタは要素の木構造に対して先祖、子孫 全称セレクタであるワ...</summary>
    <author>
        <name>101</name>
        <uri>http://101lab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://101lab.net/css/">
        CSS1 では文脈セレクタは要素の木構造に対して先祖、子孫

全称セレクタであるワイルドカード * （アスタリスク）

div * p { font-size: 10.5pt }

* 前後の半角スペースに注意

子供セレクタ

子要素だけを指定したい場合、「大なり」不等号記号

IEはだめ。

隣接セレクタ

或る要素の共通の子要素であり、且つ相前後して隣接する要素にマッチ

h1 + h2 { margin-top: -5mm }
        
    </content>
</entry>

<entry>
    <title>height100%のボックス</title>
    <link rel="alternate" type="text/html" href="http://101lab.net/css/2007/09/height100.html" />
    <id>tag:101lab.net,2007:/css-tips//29.1962</id>

    <published>2007-09-16T05:03:52Z</published>
    <updated>2007-09-16T05:04:55Z</updated>

    <summary> ...</summary>
    <author>
        <name>101</name>
        <uri>http://101lab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://101lab.net/css/">
         
        
    </content>
</entry>

<entry>
    <title>イメージ無しのblockquoteで引用を表示するCSSサンプル</title>
    <link rel="alternate" type="text/html" href="http://101lab.net/css/2006/11/blockquotecss.html" />
    <id>tag:101lab.net,2006:/css-tips//29.1992</id>

    <published>2006-11-27T03:04:37Z</published>
    <updated>2007-09-20T03:06:24Z</updated>

    <summary>イメージ無しのblockquoteで引用を表示するCSSサンプル - WEBデザ...</summary>
    <author>
        <name>101</name>
        <uri>http://101lab.net/</uri>
    </author>
    
        <category term="Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blockquote" label="blockquote" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://101lab.net/css/">
        <![CDATA[<p><a href="http://weblibrary.s224.xrea.com/weblog/css/cat15/blockquotecss.html">イメージ無しのblockquoteで引用を表示するCSSサンプル - WEBデザイン　BLOG</a>:より。 </p>
<blockquote>
<p>blockquoteでの引用を美しく表示するCSSサンプル:phpspot開発日誌のエントリーを読んでみて、イメージ無しでのblockquoteでの引用を二重引用符で表示するCSSサンプルを紹介してみることに。</p>
</blockquote>
<p>「<a href="http://weblibrary.s224.xrea.com/weblog/index.html" title="WEBデザイン　BLOG">WEBデザイン　BLOG</a>」は恥ずかしながら最近知ったのですが、内容もデザインも素晴らしいサイト。思いっきり影響受けました。</p>

<p>blockquoteに関しては僕も長い事悩んでいまして、最近<a href="http://alistapart.com/" title="A List Apart: A List Apart">A List Apart: A List Apart</a>のCSSを参考に（&#133;&#133;というかほとんどそのまま）利用する事に落ち着いたばかり。こちらはオーソドックスに画像での処理。</p>

<p>一方紹介してくれているひとつは画像ではなく文字を<code>&lt;span&gt;&lt;/span&gt;</code>でくくる方法ですが、やはりちょっと美しくはないですよね。普通に、</p>

<code>&lt;blockquote&gt;&lt;p&gt;引用文&lt;/p&gt;&lt;/blockquote&gt;</code>

<p>で行きたい所。</p>

<p>CSS疑似要素要素（:beforeと:after）を利用するのがやはりいいのかな。IEでは適用されませんけれど、htmlソースをデザインのためにいじるのは最後の手段かなあと思います。インクルードしているヘッダやフッタなどはOKだと思いますけれどね。</p>]]>
        
    </content>
</entry>

</feed>

