使用しているブラウザーの性質、少し演繹的な推論、およびいくつかのトリックにより、これを行う方法がいくつかあります...すべてがそれを行うわけではありませんが、CSS のみを使用した OS ターゲティングに使用できる方法がいくつかあります。もちろん、スクリプトはより多くのオプションを提供します。これは、以下のテキストに記載されているように、約 6 か月の調査と正確さのために私が行った作業を反映しています。
現時点では、Chrome でこれを行う方法がわかりません。特に Opera は Chrome と同じ方法論を多く使用しているため、Opera については調べていません。Chrome はバージョン 3 まで Mac 用のバージョンをリリースしませんでした。また、Mac の場合、Google は OS X 10.6-10.8 は Chrome 49 以降はサポートされないという声明を出しました。そのため、Chrome 50 以降は Mac OS X 10.9 (Mavericks) または新しい。
ただし、Firefox、Internet Explorer、および Safari にはより優れたオプションがあります。
Firefox 4 以降では、Windows テーマが使用されていることを検出できるため、古いバージョンの Firefox でも、少なくとも Windows を使用しているかどうかを検出できます。私はこれをしばらく前に作成し、今日再びテストしました:
@media screen and (-moz-windows-theme) {
.windows {
color:red;
}
}
同様に、これは Windows 以外のすべてで機能し、これも Firefox 4 以降で機能します。
@media not screen and (-moz-windows-theme) {
_:-moz-ui-valid, .nonwindows {
color:red;
}
}
-moz-os-version は firefox 25 メディア クエリに追加されましたが、 https: //developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries の mozilla ドキュメントによると、いくつかのオプションしかありません。
OS: windows-xp | Windows Vista | windows-win7 | windows-win8 | windows-win10
したがって、このセットは最新の Firefox ブラウザー バージョン >= 25 でのみ機能します。この投稿の更新の時点で、Firefox はバージョン 35 です。
@media screen and (-moz-os-version:windows-xp) {
.windows,.winxp {
color:red;
}
}
@media screen and (-moz-os-version:windows-vista) {
.windows,.vista {
color:red;
}
}
@media screen and (-moz-os-version:windows-win7) {
.windows,.win7 {
color:red;
}
}
@media screen and (-moz-os-version:windows-win8) {
.windows,.win8 {
color:red;
}
}
@media screen and (-moz-os-version:windows-win10) {
.windows,.win10 {
color:red;
}
}
Microsoft の Edge ブラウザ (以前の Spartan) は、現時点では Windows 10 にのみ搭載されています。これを検出するには:
/* Microsoft Edge Browser */
@supports (-ms-ime-align:auto) {
.windows,.win10 {
color:red;
}
}
注: 以前の -ms-accelerator:true メソッドは新しいバージョンで変更されたため、特定のバージョンのエッジをターゲットにするために使用できますが、すべてのバージョンをターゲットにすることはできません。-ms-ime-align:auto は、2017 年でもそれらすべてに対して機能します。
Macintosh コンピュータを検出する方法もあります。
Firefox >= 24 では、メディア クエリで検出可能な OS X 10.7 Lion 以降用の新しいスクロールバー オーバーレイ メソッドが導入されました。
@media screen and (-moz-overlay-scrollbars) {
.mac,.mac10_7up {
color:red;
}
}
Firefox >= 25 には、バージョン 25 で OS X フォント スムージングのサポートが追加されたため、Mac OS X を検出する方法もあります。
@supports (-moz-osx-font-smoothing:auto) {
.mac,.mac10_6up {
color:red;
}
}
@media クエリと @supports フィルターは相互にネストできるため、次のことが可能になりました -- Firefox 24 以降で OS X 10.6 Snow Leopard のみをターゲットにするために:
@supports (-moz-osx-font-smoothing:auto) {
@media not all and (-moz-overlay-scrollbars) {
.mac,.mac10_6 {
color:red;
}
}
}
Firefox 17 以降は Mac OS X 10.6 以降 (Snow Leopard 以降) のみをサポートするため、上記の OS X CSS ルールのいずれかの結果が得られた場合、OS X 10.5 以前を使用していません。( https://en.wikipedia.org/wiki/History_of_Firefox#Version_17_.28ESR.29 )
逆に、Firefox 25 以降では、OS X (10.6 以降) を無効にすることができます。10.5 以前はこのバージョンの Firefox をサポートしていないため、これは Mac ではないことを意味します。
@supports (-moz-appearance:none) and (background-attachment:local)
and (not (-moz-osx-font-smoothing:auto)) {
.nonmac {
color:red;
}
}
Firefox 49 の時点で、Firefox はバージョン 10.9 より前の Mac OS X をサポートしなくなったため、バージョン 48 以下の場合は OS X バージョン 10.8 以前である必要があり、バージョン 17 ~ 48 の場合は OS X 10.6 ~ 10.8 である必要があります。同じトークンで。
私がこれを書いたとき、iOS (iPad と iPhone) には Firefox のバージョンがありませんでした。そのため、OS X フォント スムージングを備えた Firefox は、現時点では Apple モバイル デバイスではなく、Mac コンピュータのみを対象としています。iOS 版 Chrome と同様に、iOS 版 Firefox は Safari エンジンを使用するため、iPad と iPhone で Safari ハックを使用します。つまり、どちらも Safari のようにターゲットにできますが、ひそかに、彼らがフードの下にいると言っているものではありません。
両方を一度に否定することで、残っているものをターゲットにする方法があります: Android/Linux、再び Firefox 25 以降:
@supports (-moz-appearance:none) and (background-attachment:local)
and (not (-moz-osx-font-smoothing:auto)) {
@media not screen and (-moz-os-version) {
.lindroid {
color:red;
}
}
}
バージョン 6 以降 (Windows XP 以降) の Internet Explorer を使用している場合は、明らかに Windows を使用しています。それは複数の方法で決定することもできます。
条件付きコメントは Internet Explorer 9 までのウィンドウに存在していたため、これらを使用してより多くの情報を収集できます。
これは Windows があることのみを検出しますが、Internet Explorer 6-9 は Windows プラットフォームにのみ存在するため、必ずしもバージョンを検出するとは限りません。現時点では、Internet Explorer 11 が現在のバージョンであるため、10 と 11 は検出されませんが、9 以前は検出されます。
<!--[if (gte IE 6)&(lte IE 9)]><style type="text/css">
.windows {
color:red;
}
</style><![endif]-->
Internet Explorer 6 は Windows XP にしか存在しなかったか、古いバージョンの Windows は現在使用されていないため、これはそのバージョンで機能します。
<!--[if (IE 6)]><style type="text/css">
.windows,.winxp {
color:red;
}
</style><![endif]-->
Internet Explorer 7 は Windows XP Vista に存在し、Internet Explorer 8 以降で互換モードの選択をクリックするとエミュレートされることがよくあります。
これは、Internet Explorer 10 以降を使用している場合に機能するため、Windows 7 または 8 を使用しています。
@media screen and (-ms-high-contrast:active), (-ms-high-contrast:none) {
.windows {
color:red;
}
}
私が個人的に作成した作品の 1 つは、Internet Explorer 11 以降を検出します。これは、Windows 7 以降、最大 8.1 で使用できます。
_:-ms-fullscreen, :root .windows {
color:red;
}
Internet Explorer の条件付きコメントを使用せずにメディア クエリを使用する場合は、次のものが存在します。
Internet Explorer 6-7 (したがって、Windows XP およびそれ以前の Windows 7 まで) を検出するには、次のようにします。
@media screen\9
{
.windows {
color:red;
}
}
これは Internet Explorer 9 用に作成したもので、何も存在しませんでした。(だから勝つ7または勝つビスタ)
@media screen and (min-width:0\0) and (min-resolution:.001dpcm)
{
.windows {
color:red;
}
}
これは Internet Explorer 8 を検出します (したがって、windows XP-windows 7)
@media \0screen
{
.windows {
color:red;
}
}
昨年、さまざまな部分からこのメディア クエリを作成しました。これは Safari 6.1 以降を処理します。この投稿の時点で、Safari はバージョン 7 です。Mac およびベース Android ブラウザーなどのモバイル デバイスは、次の方法で検出されます。
@media screen and (-webkit-min-device-pixel-ratio:0) and (min-color-index:0)
{
.mac_or_mobile {(;
color:red;
);}
}
これは、ほとんどの新しい Mac を検出するためのより良い方法です。iPad (または Android) などのモバイル デバイスは含めません。これも Safari 6.1 以降用なので、Mac です...:
@media screen and (-webkit-max-device-pixel-ratio:1) and (min-color-index:0)
{
.mac_osx {(;
color:red;
);}
}
代わりにモバイルが必要な場合、これは最近の高解像度のもので機能します。
@media screen and (-webkit-min-device-pixel-ratio:1.1) and (min-color-index:0)
{
.retina {(;
color:red;
);}
}
携帯電話とタブレットについては、こちらをご覧ください。https://jeffclayton.wordpress.com/2014/07/22/css-for-hi-def-mobile-retina-devices/とここ:https://jeffclayton.wordpress.com/2014/07/28/css-hack-anything-but-ios/
Mac にはしばらくの間 Internet Explorer がありましたが、バージョン 5.5 以降の新しいバージョンは作成されませんでした。
Windows にもしばらくの間 Safari がありましたが、バージョン 5 以降の新しいバージョンは作成されませんでした。ほとんどの Windows ユーザーは Safari を使用しないため、通常、Safari が検出されたときに Windows を除外できます。
上記のスタイルをすべてドキュメントに含めると、以下の div は上記のスタイルの結果を反映します。
Per Firefox and Internet Explorer/Edge:
<div class="windows"> If this is Windows this is red </div>
<div class="winxp"> If this is Windows XP or older this is red </div>
<div class="win10"> If this is Windows 10 this is red </div>
Per Firefox:
<div class="vista"> If this is Windows Vista this is red </div>
<div class="win7"> If this is Windows 7 this is red </div>
<div class="win8"> If this is Windows 8 this is red </div>
<div class="nonwindows"> If this is NOT Windows this is red </div>
<div class="nonmac"> If this is NOT Mac OS X this is red </div>
<div class="mac"> If this is Mac OS X this is red </div>
<div class="mac10_7up"> If this is Mac OS X 10.7 or newer this is red </div>
<div class="mac10_6up"> If this is Mac OS X 10.6 or newer this is red </div>
<div class="mac10_6"> If this is Mac OS X 10.6 only this is red </div>
<div class="lindroid"> If this is Linux or Android this is red </div>
Per Safari:
<div class="mac_osx"> If this is a Mac using Safari
(desktop or laptop computer) this is red (includes old mobile devices but not before iOS 6) </div>
<div class="mac_or_mobile"> If this is a Mac or a mobile device using Safari
(Android or iPad/iPhone) this is red </div>
<div class="retina"> If this is a hi-def mobile device using Safari
(Android or iPad/iPhone) this is red </div>
検出に関するその他の注意事項...
Internet Explorer/Edge に基づく Windows バージョン (参照しやすいように):
As stated above if you detect Internet Explorer 6, you are using XP (or older Win)
If you detect Internet Explorer 7-8, you are using Windows XP, Vista, or Windows 7
If you detect Internet Explorer 9 you are using Windows Vista or Windows 7
If you detect Internet Explorer 10 you are using Windows 7 or Windows 8.0
If you detect Internet Explorer 11 you are using Windows 7 or Windows 8.0/8.1 or Windows 10
If you detect Microsoft Edge you are using Windows 10
Windows 10 は、この投稿の時点での Windows の最新バージョンです。
歴史的な興味のために、もしあなたが本当にしたいのであれば、私が見つけた古いハックを使って Mac 上で Internet Explorer 5 以下を実際に判断することができます:
/*\*//*/ .mac_internet_explorer { color:red; } /**/
Internet Explorer の Mac バージョンは、Intel モデルではなく、古い PowerPC Mac でのみ利用可能でした。