• WEB

CSS3不要グラデーションクロスのブラウザ対応テクニック

  • つっつ
    つっつ デザインちーむ
  • このエントリーをはてなブックマークに追加
CSS3不要グラデーションクロスのブラウザ対応テクニック

タイトルの通り、今日はシンプルにIE7-11対応と古いブラウザーにも全対応できるCSSグラデーションテクニックを紹介したと思います。

まずはサンプル

ボタンサンプル1

こんなよくありがちなボタンがあったとします。。。
CSS3を使うより遥かにコード量を抑える事ができます

以下が、実際のコーディングしたサンプルです


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>CSS3を使わないグラデーション</title>
<style type="text/css">
.box p{
    background:url("navbg.png") repeat-x top;
    width:168px;
    float:left;
    margin:100px 10px 0px 10px;
    padding:14px;
    color:#ffffff;
    text-align:center;
    font-weight:bold;
    font-size:16px;
}
.nav1{background-color:#ff0066 !important;}
.nav2{background-color:#0024ff !important;}
.nav3{background-color:#ff6600 !important;}
</style>

</head>
<body>
<div class="box">
    <p class="nav1">よくあるナビ</p>
    <p class="nav2">よくあるナビ</p>
    <p class="nav3">よくあるナビ</p>
    <br style="clear:both">
</div>
</body>
</html>

サンプル

これをcss3で実装するとなると。。。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>CSS3を使わないグラデーション</title>
<style type="text/css">
.box p{
    width:168px;
    float:left;
    margin:100px 10px 0px 10px;
    padding:14px;
    color:#ffffff;
    text-align:center;
    font-weight:bold;
    font-size:16px;
}

.nav1{
    background: #ff69a5; /* Old browsers */
    /* IE9 SVG, needs conditional override of 'filter' to 'none' */
    background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmNjlhNSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjklIiBzdG9wLWNvbG9yPSIjZmY2OWE1IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMjYlIiBzdG9wLWNvbG9yPSIjZmY1OTliIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNjAlIiBzdG9wLWNvbG9yPSIjZmYyMTdhIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNzklIiBzdG9wLWNvbG9yPSIjZmYwODZiIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iODglIiBzdG9wLWNvbG9yPSIjZmYwMDY2IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmMDA2NiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
    background: -moz-linear-gradient(top,  #ff69a5 0%, #ff69a5 9%, #ff599b 26%, #ff217a 60%, #ff086b 79%, #ff0066 88%, #ff0066 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff69a5), color-stop(9%,#ff69a5), color-stop(26%,#ff599b), color-stop(60%,#ff217a), color-stop(79%,#ff086b), color-stop(88%,#ff0066), color-stop(100%,#ff0066)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #ff69a5 0%,#ff69a5 9%,#ff599b 26%,#ff217a 60%,#ff086b 79%,#ff0066 88%,#ff0066 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #ff69a5 0%,#ff69a5 9%,#ff599b 26%,#ff217a 60%,#ff086b 79%,#ff0066 88%,#ff0066 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #ff69a5 0%,#ff69a5 9%,#ff599b 26%,#ff217a 60%,#ff086b 79%,#ff0066 88%,#ff0066 100%); /* IE10+ */
    background: linear-gradient(to bottom,  #ff69a5 0%,#ff69a5 9%,#ff599b 26%,#ff217a 60%,#ff086b 79%,#ff0066 88%,#ff0066 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff69a5', endColorstr='#ff0066',GradientType=0 ); /* IE6-8 */
}

.nav2{
    background: #697eff; /* Old browsers */
    /* IE9 SVG, needs conditional override of 'filter' to 'none' */
    background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzY5N2VmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjklIiBzdG9wLWNvbG9yPSIjNjk3ZWZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMjYlIiBzdG9wLWNvbG9yPSIjNTk3MGZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMzclIiBzdG9wLWNvbG9yPSIjNDg2MmZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNjAlIiBzdG9wLWNvbG9yPSIjMjE0MGZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNzklIiBzdG9wLWNvbG9yPSIjMDgyYmZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iODglIiBzdG9wLWNvbG9yPSIjMDAyNGZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMjRmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
    background: -moz-linear-gradient(top,  #697eff 0%, #697eff 9%, #5970ff 26%, #4862ff 37%, #2140ff 60%, #082bff 79%, #0024ff 88%, #0024ff 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#697eff), color-stop(9%,#697eff), color-stop(26%,#5970ff), color-stop(37%,#4862ff), color-stop(60%,#2140ff), color-stop(79%,#082bff), color-stop(88%,#0024ff), color-stop(100%,#0024ff)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #697eff 0%,#697eff 9%,#5970ff 26%,#4862ff 37%,#2140ff 60%,#082bff 79%,#0024ff 88%,#0024ff 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #697eff 0%,#697eff 9%,#5970ff 26%,#4862ff 37%,#2140ff 60%,#082bff 79%,#0024ff 88%,#0024ff 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #697eff 0%,#697eff 9%,#5970ff 26%,#4862ff 37%,#2140ff 60%,#082bff 79%,#0024ff 88%,#0024ff 100%); /* IE10+ */
    background: linear-gradient(to bottom,  #697eff 0%,#697eff 9%,#5970ff 26%,#4862ff 37%,#2140ff 60%,#082bff 79%,#0024ff 88%,#0024ff 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#697eff', endColorstr='#0024ff',GradientType=0 ); /* IE6-8 */

}
.nav3{
background: #ffa569; /* Old browsers */
    /* IE9 SVG, needs conditional override of 'filter' to 'none' */
    background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmYTU2OSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjklIiBzdG9wLWNvbG9yPSIjZmZhNTY5IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMjYlIiBzdG9wLWNvbG9yPSIjZmY5YjU5IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNjAlIiBzdG9wLWNvbG9yPSIjZmY3YTIxIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNzklIiBzdG9wLWNvbG9yPSIjZmY2YjA4IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iODglIiBzdG9wLWNvbG9yPSIjZmY2NjAwIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmNjYwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
    background: -moz-linear-gradient(top,  #ffa569 0%, #ffa569 9%, #ff9b59 26%, #ff7a21 60%, #ff6b08 79%, #ff6600 88%, #ff6600 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffa569), color-stop(9%,#ffa569), color-stop(26%,#ff9b59), color-stop(60%,#ff7a21), color-stop(79%,#ff6b08), color-stop(88%,#ff6600), color-stop(100%,#ff6600)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #ffa569 0%,#ffa569 9%,#ff9b59 26%,#ff7a21 60%,#ff6b08 79%,#ff6600 88%,#ff6600 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #ffa569 0%,#ffa569 9%,#ff9b59 26%,#ff7a21 60%,#ff6b08 79%,#ff6600 88%,#ff6600 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #ffa569 0%,#ffa569 9%,#ff9b59 26%,#ff7a21 60%,#ff6b08 79%,#ff6600 88%,#ff6600 100%); /* IE10+ */
    background: linear-gradient(to bottom,  #ffa569 0%,#ffa569 9%,#ff9b59 26%,#ff7a21 60%,#ff6b08 79%,#ff6600 88%,#ff6600 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffa569', endColorstr='#ff6600',GradientType=0 ); /* IE6-8 */

}


</style>

</head>
<body>
<div class="box">
    <p class="nav1">よくあるナビ</p>
    <p class="nav2">よくあるナビ</p>
    <p class="nav3">よくあるナビ</p>
    <br style="clear:both">
</div>
</body>
</html>

サンプルコード

どうですかこのカオス感!真剣にやるとこんなに大変になってしまいますよね汗
早くベンダープリフィックス解消してもらいたいですね
あと、5年くらいかかるのかな。。。

ではでは作成のテクニック

すぐに気づいた方もいるかと思うのですが
半透明のPNGを使うんです
PNG画像イメージ

実際にどうやってつくる??

Photoshopを使った例です。
こんな事当たり前って方もいるかもですね汗

いたって簡単w
塗りを0%にして背景を透明にしてWEBにスライスなりで保存するだけです
ボタンサンプル画像

操作画面

あとはグラデーションを使用したい部分に、色とこの画像を指定するだけです。


background:orange url("navbg.png") repeat-x top;

まとめ

無理してCSS3もいいですが、わたしが思うにまだまだ仕様変更が有りそうなプロパティだと思うんですよ。
だから敢えて旧来の選択もありかもと思ったり思わなかったり。

以上オールドタイプの温故知新なテクニックでした。

このエントリーをはてなブックマークに追加

つっつが最近書いた記事

WRITERS POSTS もっと見る

他にもこんな記事が読まれています!

  • WEB
  • マーケティング
  • サーバー・ネットワーク
  • ライフスタイル
  • お知らせ