<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BrowserDetect &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/browserdetect/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Thu, 16 Sep 2010 02:55:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>BrowserDetect.jsと子孫セレクタによるシンプルなクロスブラウザCSS</title>
		<link>https://blog.mach3.jp/2010/09/16/browserdetect-js-xbrowser-css.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 16 Sep 2010 02:55:42 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[BrowserDetect]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Modernizr]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=707</guid>

					<description><![CDATA[BrowserDetect.jsは、閲覧環境を判別する為のJSライブラリです。 今回はこれを使用して、Modernizrのような手法で クロスブラウザCSSを書く実験を試みてみます。 BrowserDetect.js J [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="http://www.quirksmode.org/js/detect.html">BrowserDetect.js</a>は、閲覧環境を判別する為のJSライブラリです。<br />
今回はこれを使用して、<a href="http://www.modernizr.com/">Modernizr</a>のような手法で<br />
クロスブラウザCSSを書く実験を試みてみます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TJGGwkARlOI/AAAAAAAABCM/EnC2WVlSUEQ/201009161152.png" alt="BrowserDetect.jsと子孫セレクタによるシンプルなクロスブラウザCSS"/></figure>



<p></p>



<span id="more-707"></span>



<h2 class="wp-block-heading">BrowserDetect.js</h2>



<p><a href="http://www.quirksmode.org/js/detect.html">JavaScript &#8211; Browser detect</a></p>



<p>ダウンロードリンクはどうやら無いようなので、<br />
ページ内に書かれたソースをコピー&amp;ペーストします。<br />
使い方は簡単で、スクリプトをロードして<br />
BrowserDetectオブジェクトのプロパティを参照するだけ。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> browser = BrowserDetect.browser; <span class="hljs-comment">//ブラウザ名の取得</span>
<span class="hljs-keyword">var</span> version = BrowserDetect.version; <span class="hljs-comment">//ブラウザバージョンの取得</span>
<span class="hljs-keyword">var</span> os = BrowserDetect.OS; <span class="hljs-comment">// OS名の取得</span>
</code></span></pre>


<h2 class="wp-block-heading">クロスブラウザCSSを書く準備</h2>



<p>もしModernizrを使用した事があればご想像の通りですが、<br />
HTML要素にブラウザ名とバージョンを添えたクラス名を動的に追加してやります。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"html"</span>).addClass( BrowserDetect.browser );
$(<span class="hljs-string">"html"</span>).addClass( BrowserDetect.browser + BrowserDetect.version );
</code></span></pre>


<p>例えばIE6でアクセスすると、HTML要素には次のようにクラスが追加されます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">&lt;html lang=<span class="hljs-string">"ja"</span> <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"Explorer Explorer6"</span>&gt;
</code></span></pre>


<h2 class="wp-block-heading">
    CSSを書く<br />
  </h2>



<p>
    あとは子孫クラスタを使ってCSS内で条件分岐をしてやれば良いです。<br /> ハック等に頼らないクリーンなCSSが出来上がりますね。
  </p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-id">#Box</span>{
    <span class="hljs-comment">/* デフォルトのスタイル */</span>
    <span class="hljs-attribute">width</span>:<span class="hljs-number">290px</span>;
    <span class="hljs-attribute">height</span>:<span class="hljs-number">210px</span>;
    <span class="hljs-attribute">border</span>:<span class="hljs-number">5px</span> solid <span class="hljs-number">#666</span>;
    <span class="hljs-attribute">padding</span>:<span class="hljs-number">10px</span>;
}
<span class="hljs-selector-class">.Explorer6</span> <span class="hljs-selector-id">#Box</span>{
    <span class="hljs-comment">/* IE6用のスタイル */</span>
    <span class="hljs-attribute">width</span>:<span class="hljs-number">320px</span>;
    <span class="hljs-attribute">height</span>:<span class="hljs-number">240px</span>;
}
</code></span></pre>


<h2 class="wp-block-heading">
    この方法の問題点<br />
  </h2>



<h3 class="wp-block-heading">
    JSが働かないとだめ<br />
  </h3>



<p>
    当たり前ですが、JavaScriptが動かない環境ではデザインが崩れる事が予想されます。<br /> （Modernizr使ってる時点で今更何を言ってるのって感じですが…）
  </p>



<h3 class="wp-block-heading">
    HTML4ではHTML要素のclass属性はInvalidである<br />
  </h3>



<p>
    class属性が使用出来る要素について、<br /> HTML5では「The Every HTML Element」と言及している事から問題はなさそうですが、<br /> どうやらHTML4ではInvalidになる様子。<br /> これもまた、Modernizrも同様に孕んでいる問題点です。<br /> （一体誰が気にするのか、とも思いますが）
  </p>



<p>
    以上の問題を踏まえて、<br /> プロジェクトの趣旨/性格に基づいて使用を判断したいですね。
  </p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
