<?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>CSS3 &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/css3/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Wed, 13 Aug 2025 06:07:34 +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>CSS3のbox-shadowでお絵かきアプリを書いてみたものの…</title>
		<link>https://blog.mach3.jp/2012/10/09/shadowcanvas.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 09 Oct 2012 02:00:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Illustration]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=2731</guid>

					<description><![CDATA[先日、CSS3のbox-shadowで描画されたモナリザが話題となりましたが、 インスパイアされて同じ手法でお絵かきアプリを作ったらどうなるか試してみました。 作ってみたもの まずはデモから。当たり前ですが、box-sh [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日、<a href="http://codepen.io/jaysalvat/pen/HaqBf">CSS3のbox-shadowで描画されたモナリザ</a>が話題となりましたが、 インスパイアされて同じ手法でお絵かきアプリを作ったらどうなるか試してみました。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-CYh_0uVRHXE/UHOEkHMC8zI/AAAAAAAABn4/yZ5IoXHh0C8/s400/20121009-00.png" alt="CSS3のbox-shadowでお絵かきアプリを書いてみたものの…"/></figure>



<p></p>



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



<h2 class="wp-block-heading">作ってみたもの</h2>



<p>まずはデモから。当たり前ですが、box-shadowに対応していないブラウザでは動きません。</p>



<ul class="wp-block-list">
<li><a href="http://jsbin.com/osenaj/1/edit">DEMO on JS Bin</a></li>
</ul>



<p><style type="text/css">
  iframe.jsbin-embed {<br />
    height:700px !important;<br />
}<br />
</style>
</p>



<p><a class="jsbin-embed" href="http://jsbin.com/osenaj/1/embed?live">JS Bin</a><script src="http://static.jsbin.com/js/embed.js"></script></p>



<h2 class="wp-block-heading">感想</h2>



<p>作って動かしてみた率直な感想を申し上げると…そもそもこういう用途を想定していないと思うので、当然あまり捗りませんでした。 が、描かれる物の雰囲気は、これはこれで嫌いではないです。水墨画的な物が描けそう。</p>



<h3 class="wp-block-heading">重さが加速する</h3>



<p>Webkitはかなり軽快に動くのですが、Firefoxだとかなりもっさりした動きになります。IE9だとまだマシです。 そして、書けば書くほど重くなっていきます。 box-shadowを一点ずつどんどん重ねていっているわけですから、そりゃ当然重くなりますよね。</p>



<h3 class="wp-block-heading">線を引きにくい</h3>



<p>基本的にブラシで点描を繰り返している様な物なので、あまりはやく描こうとすると途切れて線になりません。 そういうブラシだと思うしかないでしょう。 間を補完するような感じに描画しようかとも思いましたが、むしろ味が損なわれる感じがしたので途中でやめました。</p>



<h2 class="wp-block-heading">ライブラリ</h2>



<p>書いてみたライブラリがこちら。別にやってる事はどうということはないです。 使い道は多分ないと思うのですが、使ってみたい方はお好きにお使いください。</p>



<h3 class="wp-block-heading"><a href="https://gist.github.com/3851837">ShadowCanvas : Drawing illustration with css box-shadow — Gist</a></h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">/**
 * ShadowCanvas
 *
 * Drawing illustration with css box-shadow
 *
 * <span class="hljs-doctag">@version </span>0.9
 * <span class="hljs-doctag">@author <span class="hljs-variable">mach3ss</span></span>
 * <span class="hljs-doctag">@require <span class="hljs-variable">jQuery</span></span>
 */</span>
<span class="hljs-keyword">var</span> ShadowCanvas = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">selector, option</span>)</span>{

    <span class="hljs-comment">// config</span>
    <span class="hljs-keyword">this</span>.option = $.extend({}, <span class="hljs-keyword">this</span>.option, option);
    <span class="hljs-keyword">this</span>.node = $.extend({}, <span class="hljs-keyword">this</span>.node);

    <span class="hljs-comment">// nodes</span>
    <span class="hljs-keyword">this</span>.node.container = $(selector);
    <span class="hljs-keyword">this</span>.node.canvas = $(<span class="hljs-string">"&lt;div&gt;"</span>)
    .css({<span class="hljs-attr">position</span>:<span class="hljs-string">"absolute"</span>})
    .appendTo(<span class="hljs-keyword">this</span>.node.container);

    <span class="hljs-comment">// events</span>
    <span class="hljs-keyword">this</span>.node.container
    .on(<span class="hljs-string">"mousemove"</span>, $.proxy(<span class="hljs-keyword">this</span>._onMouseMove, <span class="hljs-keyword">this</span>))
    .on(<span class="hljs-string">"mousedown"</span>, $.proxy(<span class="hljs-keyword">this</span>.start, <span class="hljs-keyword">this</span>))
    .on(<span class="hljs-string">"mouseleave mouseup"</span>, $.proxy(<span class="hljs-keyword">this</span>.stop, <span class="hljs-keyword">this</span>));
};
(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">fn</span>)</span>{

    fn.boxShadowText = <span class="hljs-string">"{x}px {y}px {blur}px {size}px {color}"</span>;
    fn.drawing = <span class="hljs-literal">false</span>;

    fn.node = {
        <span class="hljs-attr">container</span> : <span class="hljs-literal">null</span>,
        <span class="hljs-attr">canvas</span> : <span class="hljs-literal">null</span>
    };

    fn.option = {
        <span class="hljs-attr">color</span>: <span class="hljs-string">"black"</span>,
        <span class="hljs-attr">blur</span> : <span class="hljs-number">5</span>,
        <span class="hljs-attr">size</span> : <span class="hljs-number">5</span>
    };

    <span class="hljs-comment">/**
     * Configure option or get the option value
     *
     * @param String key
     * @param Mixed value (optional)
     * @return Mixed
     */</span>
    fn.config = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">key, value</span>)</span>{
        <span class="hljs-keyword">if</span>(<span class="hljs-keyword">this</span>.option.hasOwnProperty(key)){
            <span class="hljs-keyword">if</span>(<span class="hljs-keyword">typeof</span>(value) !== <span class="hljs-string">"undefined"</span>){
                <span class="hljs-keyword">this</span>.option&#91;key] = value;
                <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>;
            } <span class="hljs-keyword">else</span> {
                <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>.option&#91;key];
            }
        }
    };

    <span class="hljs-comment">/**
     * Get css text for box-shadow
     *
     * @param Integer x
     * @param Integer y
     * @return String
     */</span>
    fn._getBoxShadowText = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">x, y</span>)</span>{
        <span class="hljs-keyword">var</span> o, callback;
        o = <span class="hljs-keyword">this</span>.option;
        o.x = x;
        o.y = y;
        callback = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">a, b</span>)</span>{
            <span class="hljs-keyword">return</span> o&#91;b];
        };
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>.boxShadowText.replace((<span class="hljs-regexp">/\{(\w+)\}/g</span>), callback);
    };

    <span class="hljs-comment">/**
     * Draw the point with box-shadow
     *
     * @param Integer x
     * @param Integer y
     * @return self
     */</span>
    fn.draw = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">x, y</span>)</span>{
        <span class="hljs-keyword">var</span> shadow = <span class="hljs-keyword">this</span>.node.canvas.css(<span class="hljs-string">"boxShadow"</span>);
        shadow = shadow === <span class="hljs-string">"none"</span> ? <span class="hljs-string">""</span> : <span class="hljs-string">","</span> + shadow ;
        shadow = <span class="hljs-keyword">this</span>._getBoxShadowText(x, y) + shadow;
        <span class="hljs-keyword">this</span>.node.canvas.css(<span class="hljs-string">"boxShadow"</span>, shadow);
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>;
    };


    <span class="hljs-comment">/**
     * Start drawing
     *
     * @return self
     */</span>
    fn.start = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        <span class="hljs-keyword">this</span>.drawing = <span class="hljs-literal">true</span>;
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>;
    };

    <span class="hljs-comment">/**
     * Stop drawing
     *
     * @return self
     */</span>
    fn.stop = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        <span class="hljs-keyword">this</span>.drawing = <span class="hljs-literal">false</span>;
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>;
    };

    fn._onMouseMove = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{
        <span class="hljs-keyword">var</span> offset, x, y;

        <span class="hljs-keyword">if</span>(! <span class="hljs-keyword">this</span>.drawing){
            <span class="hljs-keyword">return</span>;
        }

        offset = <span class="hljs-keyword">this</span>.node.container.offset();
        x = e.clientX - offset.left + <span class="hljs-built_in">document</span>.body.scrollLeft;
        y = e.clientY - offset.top + <span class="hljs-built_in">document</span>.body.scrollTop;
        <span class="hljs-keyword">if</span>(x &lt; <span class="hljs-keyword">this</span>.node.container.width() &amp;&amp; y &lt; <span class="hljs-keyword">this</span>.node.container.height()){
            <span class="hljs-keyword">this</span>.draw(x, y);
        }
    };

    <span class="hljs-comment">/**
     * Clear all on canvas
     *
     * @return self
     */</span>
    fn.clear = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        <span class="hljs-keyword">this</span>.node.canvas.css(<span class="hljs-string">"boxShadow"</span>, <span class="hljs-string">"none"</span>);
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>;
    };

    <span class="hljs-comment">/**
     * Get css text of the illustration on canvas now
     *
     * @return String
     */</span>
    fn.getCSS = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>.node.canvas.css(<span class="hljs-string">"boxShadow"</span>);
    };

}(ShadowCanvas.prototype));
</code></span></pre>


<p>使い方は、キャンバスにしたいボックス要素のセレクターを引数にしてnewするだけです。 各設定はconfigで。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> myCanvas = <span class="hljs-keyword">new</span> ShadowCanvas(<span class="hljs-string">"#my-canvas"</span>);
myCanvas.config(<span class="hljs-string">"color"</span>, <span class="hljs-string">"black"</span>);
myCanvas.config(<span class="hljs-string">"size"</span>, <span class="hljs-number">8</span>);
myCanvas.config(<span class="hljs-string">"blur"</span>, <span class="hljs-number">10</span>);
</code></span></pre>


<h2 class="wp-block-heading">まとめ</h2>



<p>表現力は結構ありそうですが、実用的なアプリかと問われると…</p>



<p>cf) <a href="http://kachibito.net/web-design/pure-css-mona-lisa.html">CSS3のbox-shadowだけで作られたモナリザ・・・ &#8211; かちびと.net</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JS/CSSでふわりとフェードするボタンをつくる</title>
		<link>https://blog.mach3.jp/2011/03/24/fadebutton-by-js-and-css.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 24 Mar 2011 01:10:44 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[head.js]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Transitions]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1660</guid>

					<description><![CDATA[震災後、なんやかんやで2週間あけてしまいました。こんにちは、私は元気です。 今日は、せっかくCSS3で色々な事が出来るようになってきたところで、 ふわりとフェードするボタンの作りなどを記してみる。 作るもの こういったU [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>震災後、なんやかんやで2週間あけてしまいました。こんにちは、私は元気です。<br />
今日は、せっかくCSS3で色々な事が出来るようになってきたところで、<br />
ふわりとフェードするボタンの作りなどを記してみる。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/_JJkNs5Ixl70/TYozxeh8WgI/AAAAAAAABP4/5craRuCkCzI/201103240253.png" alt="JS/CSSでふわりとフェードするボタンをつくる"/></figure>



<p></p>



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



<h2 class="wp-block-heading">作るもの</h2>



<ul class="wp-block-list">
<li>マウスオーバーすると、ふわーっと表示が切り替わるボタン。 </li>



<li>画像を二枚重ね、上の画像の透明度を変化させて表示を切り替える。</li>
</ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/_JJkNs5Ixl70/TYoz7kuit1I/AAAAAAAABP8/1gK5hFbzGZI/201103240254.png" alt="マウスオーバーすると、ふわーっと表示が切り替わるボタン"/></figure>



<p></p>



<p>こういったUIにあたるエフェクトは好みが別れる気がしますが、<br />
個人的にはリッチな感じがして結構好きです。</p>



<p>HTML</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"demo"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"fadeButton"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>FadeButton<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></span></pre>


<p>基本となるCSS</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-id">#demo</span> {
    <span class="hljs-attribute">display</span>: block;
    <span class="hljs-attribute">width</span>: <span class="hljs-number">135px</span>;
    <span class="hljs-attribute">height</span>: <span class="hljs-number">135px</span>;
    <span class="hljs-attribute">background-position</span>: left top;
    <span class="hljs-attribute">background-repeat</span>: no-repeat;
    <span class="hljs-attribute">background-image</span>: <span class="hljs-built_in">url</span>(default.png);
}

<span class="hljs-selector-id">#demo</span> <span class="hljs-selector-tag">a</span> {
    <span class="hljs-attribute">display</span>: block;
    <span class="hljs-attribute">width</span>: <span class="hljs-number">135px</span>;
    <span class="hljs-attribute">height</span>: <span class="hljs-number">135px</span>;
    <span class="hljs-attribute">text-indent</span>: -<span class="hljs-number">9999px</span>;
    <span class="hljs-attribute">overflow</span>: hidden;
    <span class="hljs-attribute">background-position</span>: left top;
    <span class="hljs-attribute">background-repeat</span>: no-repeat;
    <span class="hljs-attribute">background-image</span>: <span class="hljs-built_in">url</span>(hover.png);
}
</code></span></pre>


<h2 class="wp-block-heading">まずはCSS3のTransitionsで</h2>



<p>Transitionsを使うと恐ろしく簡単なコードで実現できちゃいます。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-class">.fadeButton</span> <span class="hljs-selector-tag">a</span> {
    <span class="hljs-attribute">opacity</span>: <span class="hljs-number">0</span>;
    <span class="hljs-attribute">-webkit-transition</span>: opacity .<span class="hljs-number">5s</span> linear;
}

<span class="hljs-selector-class">.fadeButton</span> <span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:hover</span> {
    <span class="hljs-attribute">opacity</span>: <span class="hljs-number">1</span>;
    <span class="hljs-attribute">-webkit-transition</span>: opacity .<span class="hljs-number">5s</span> linear;
}
</code></span></pre>


<p>ね、簡単でしょう？（ボブ</p>



<p>が、現在はまだサポートしているブラウザは少ないので、<br />
サポート外のブラウザについてはJavaScriptに頼らざるを得ません。</p>



<h2 class="wp-block-heading">Transition非対応の環境の為のJavaScriptを用意する</h2>



<p>Transition非対応のブラウザ用に、JavaScriptによるフォールバックを用意します。<br />
判別には<a href="/2011/03/headjs.html">先日紹介した「head.js」</a>を使用。</p>



<h3 class="wp-block-heading">CSSの:hoverスタイルを上書き</h3>



<p>非対応の場合の:hoverスタイルを無効にしておきます。<br />
Transitions非対応な場合は、head.jsが<br />
&#8220;no-csstransitions&#8221;をhtml要素のclassに追加してくれるので<br />
こんな感じで。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-class">.no-csstransitions</span> <span class="hljs-selector-class">.fadeButton</span> <span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:hover</span>{
    <span class="hljs-attribute">opacity</span>:<span class="hljs-number">0</span>;
}
</code></span></pre>


<h3 class="wp-block-heading">JavaScriptでフェードイン/アウトさせる</h3>



<p>jQueryを使った次のようなコードで、<br />
大体似たようなエフェクトを付加させられます。</p>


<pre class="wp-block-code"><span><code class="hljs language-php">(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">($)</span> </span>{
    <span class="hljs-keyword">if</span> (!head.transitions) { <span class="hljs-comment">// head.jsでTransitions対応を判別</span>
        $(<span class="hljs-string">".fadeButton"</span>).each(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">()</span> </span>{
            <span class="hljs-keyword">var</span> <span class="hljs-keyword">self</span> = $(this);
            <span class="hljs-keyword">self</span>.bind({
                mouseover: <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(e)</span> </span>{
                    <span class="hljs-keyword">self</span>.children(<span class="hljs-string">"a"</span>).stop().animate({
                        opacity: <span class="hljs-number">1</span>
                    }, <span class="hljs-number">500</span>);
                },
                mouseout: <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(e)</span> </span>{
                    <span class="hljs-keyword">self</span>.children(<span class="hljs-string">"a"</span>).stop().animate({
                        opacity: <span class="hljs-number">0</span>
                    }, <span class="hljs-number">500</span>);
                }
            });
        });
    }
})(jQuery);
</code></span></pre>


<h2 class="wp-block-heading">デモ＆ファイナルコード</h2>



<p><a href="http://jsdo.it/mach3/1Voz">JS/CSSでふわりとフェードするボタンをつくる &#8211; jsdo.it &#8211; Share JavaScript, HTML5 and CSS</a></p>



<h2 class="wp-block-heading">注意！</h2>



<p>IEで透過PNGを使ってフェードしようとすると不具合が生じるので注意。<br />
DD_belatedPNG等を使って回避する必要があります。<br />
» <a href="/2011/02/png-and-opacity-on-explorer.html">IEの透過PNG+opacityの不具合を治すメモ | Mach3.laBlog</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>:activeでボタンに「押しごたえ」を付けてみる</title>
		<link>https://blog.mach3.jp/2011/01/25/css-button-on-active.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 25 Jan 2011 02:11:13 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[UI]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1475</guid>

					<description><![CDATA[Tumblrのダッシュボードの左上のロゴを見ていてふと思ったのですが、 マウスオーバーの処理をする事はあっても、 クリックした時の処理をしているサイトって意外と少ないですよね。 そこで今日はボタンをクリックした時のスタイ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Tumblrのダッシュボードの左上のロゴを見ていてふと思ったのですが、<br />
マウスオーバーの処理をする事はあっても、<br />
クリックした時の処理をしているサイトって意外と少ないですよね。<br />
そこで今日はボタンをクリックした時のスタイルについてメモなど。<br />
（わかっちゃいるけど面倒くさいんだろうなぁ、という気はしている）</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TT2i8wCxI3I/AAAAAAAABKE/Yd-26s6a1as/201101250103.png" alt=":activeでボタンに「押しごたえ」を付けてみる"/></figure>



<p></p>



<p>© まっは画伯</p>



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



<h2 class="wp-block-heading">どんなスタイルにすると「押しごたえ」が生まれる？</h2>



<ul class="wp-block-list">
<li>へこんだデザインにする</li>



<li>位置を下げる</li>



<li>ちょっと暗くしてみる</li>
</ul>



<p>あたりで「押しごたえ」が出るのではないでしょうか。<br />
（ざっくばらん）</p>



<h2 class="wp-block-heading">基本は「:active」で</h2>



<p>:hoverがマウスオーバー時のスタイルならば、<br />
ボタンを押下した時のスタイルは:activeで記述します。</p>



<p>こちらは一例。<br />
（IEだと残念な見栄えになります）</p>



<ul class="wp-block-list">
<li><a href="http://jsfiddle.net/mach3ss/KcUaG/">DEMO:1 ( jsFiddle )</a></li>
</ul>



<p>HTML</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"button"</span>&gt;</span>BUTTON<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></span></pre>


<p>CSS</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-class">.button</span> {
    <span class="hljs-attribute">display</span>:inline-block;
    <span class="hljs-attribute">padding</span>:<span class="hljs-number">5px</span> <span class="hljs-number">10px</span>;
    <span class="hljs-attribute">background-color</span>:<span class="hljs-number">#69c</span>;
    <span class="hljs-attribute">color</span>:<span class="hljs-number">#fff</span>;
    <span class="hljs-attribute">border</span>:<span class="hljs-number">1px</span> solid <span class="hljs-number">#69c</span>;
    <span class="hljs-attribute">text-decoration</span>:none;
    <span class="hljs-attribute">font-size</span>:<span class="hljs-number">13px</span>;
    <span class="hljs-attribute">-webkit-border-radius</span>:<span class="hljs-number">3px</span>;
    <span class="hljs-attribute">-moz-border-radius</span>:<span class="hljs-number">3px</span>;
    <span class="hljs-attribute">border-radius</span>:<span class="hljs-number">3px</span>;
}
<span class="hljs-selector-class">.button</span><span class="hljs-selector-pseudo">:hover</span>{
    <span class="hljs-attribute">background-color</span>:<span class="hljs-number">#79acdf</span>;
    <span class="hljs-attribute">-webkit-box-shadow</span>:inset <span class="hljs-number">0px</span> <span class="hljs-number">0px</span> <span class="hljs-number">3px</span> <span class="hljs-number">#fff</span>;
    <span class="hljs-attribute">-moz-box-shadow</span>:inset <span class="hljs-number">0px</span> <span class="hljs-number">0px</span> <span class="hljs-number">3px</span> <span class="hljs-number">#fff</span>;
    <span class="hljs-attribute">box-shadow</span>:inset <span class="hljs-number">0px</span> <span class="hljs-number">0px</span> <span class="hljs-number">3px</span> <span class="hljs-number">#fff</span>;
}
<span class="hljs-selector-class">.button</span><span class="hljs-selector-pseudo">:active</span>{
    <span class="hljs-attribute">padding-top</span>:<span class="hljs-number">6px</span>;
    <span class="hljs-attribute">padding-bottom</span>:<span class="hljs-number">4px</span>;
    <span class="hljs-attribute">border</span>:<span class="hljs-number">1px</span> solid <span class="hljs-number">#334c66</span>;
    <span class="hljs-attribute">background-color</span>:<span class="hljs-number">#69c</span>;
    <span class="hljs-attribute">color</span>:<span class="hljs-number">#e0ebf5</span>;
    <span class="hljs-attribute">-webkit-box-shadow</span>:inset <span class="hljs-number">0px</span> <span class="hljs-number">0px</span> <span class="hljs-number">8px</span> <span class="hljs-number">#334c66</span>;
    <span class="hljs-attribute">-moz-box-shadow</span>:inset <span class="hljs-number">0px</span> <span class="hljs-number">0px</span> <span class="hljs-number">2px</span> <span class="hljs-number">#3a6da0</span>;
    <span class="hljs-attribute">box-shadow</span>:inset <span class="hljs-number">0px</span> <span class="hljs-number">0px</span> <span class="hljs-number">2px</span> <span class="hljs-number">#3a6da0</span>;
}
</code></span></pre>


<p>上下paddingを調整して押下した感を出してます。<br />
ちなみにこれをインラインで使おうとすると回りも巻き込んでしまうのでご注意を。</p>



<h2 class="wp-block-heading">IE6/7だとクリック後に復帰できない問題</h2>



<p>IE6/7で見ると、ボタンをクリックした後もフォーカスが残ってしまっているのか、<br />
他の要素をクリックするまで:activeのスタイルのままになってしまいます。</p>



<p>なので、例えばJavaScriptでこんなのを足してみます。（要jQuery）<br />
クリックイベントが発生した時に、ボタンからフォーカスを外しています。</p>



<ul class="wp-block-list">
<li><a href="http://jsfiddle.net/mach3ss/KcUaG/2/">DEMO:2 ( jsFiddle )</a></li>
</ul>



<pre class="wp-block-preformatted">$(".button").click( function(){ this.blur(); } );
</pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>とはいっても、画面遷移しちゃうようなボタンでやったところで、あまり見てもらえなくて残念。<br />
例えばAjaxコンテンツのような、その場で切り替わるページなら、<br />
「押し応え」を付加する事で使い心地が向上するかもしれませんね！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>コーディング時に便利なCSS3のチートシート</title>
		<link>https://blog.mach3.jp/2010/05/19/css3-cheetsheet.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Wed, 19 May 2010 20:47:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[CheetSheet]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/05/19/%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e6%99%82%e3%81%ab%e4%be%bf%e5%88%a9%e3%81%aacss3%e3%81%ae%e3%83%81%e3%83%bc%e3%83%88%e3%82%b7%e3%83%bc%e3%83%88.html</guid>

					<description><![CDATA[CSS3の書式を覚えるのは大変。 覚えるのが大変な物にはやっぱりチートシートですね。 SmashingMagazineから、CSS3のチートシートがPDFで公開されています。 CSS 2.1 and CSS 3 Help [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>CSS3の書式を覚えるのは大変。<br />
覚えるのが大変な物にはやっぱりチートシートですね。<br />
<a href="http://www.smashingmagazine.com/">SmashingMagazine</a>から、CSS3のチートシートがPDFで公開されています。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/S_PPKrgJC_I/AAAAAAAAA6E/3elwDXV9HeU/s800/201005192035.png" alt="CSS3 Cheet Sheet"/></figure>



<p></p>



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



<p><a href="http://www.smashingmagazine.com/2010/05/13/css-2-1-and-css-3-help-cheat-sheets-pdf/">CSS 2.1 and CSS 3 Help Cheat Sheets (PDF) &#8211; Smashing Magazine</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/S_PPK1kdg7I/AAAAAAAAA6I/KSGbVbh8iAc/s800/201005192036.png" alt="CSS 2.1 and CSS 3 Help Cheat Sheets (PDF) - Smashing Magazine"/></figure>



<p></p>



<p>こんな感じにデザインされています。<br />
いつぞや紹介した<a href="/2010/05/vi.html">VIエディタのチートシート</a>と同じデザイナーさんが手がけています。<br />
テイストが同じですね。</p>



<p>新しく追加されているプロパティについては<br />
現状ではまだブラウザ独自の書式を使わざるをえませんが、<br />
そこらへんも考慮して、各ブラウザの記法とスタンダードの記法を明記してあります。<br />
これは助かりますね。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/S_PPLB3-C-I/AAAAAAAAA6M/9ngW7EV4FNQ/s800/201005192042.png" alt="独自プロパティも記載"/></figure>



<p></p>



<p>CSS3だけでなく、CSS2のチートシートのリンクも掲載されているので、<br />
そちらも大いに活用できそうです。</p>



<p><a href="http://www.smashingmagazine.com/2010/05/13/css-2-1-and-css-3-help-cheat-sheets-pdf/">CSS 2.1 and CSS 3 Help Cheat Sheets (PDF) &#8211; Smashing Magazine</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>実験室: CSSグラデーションをお手軽にするjQueryプラグインを書いてみる</title>
		<link>https://blog.mach3.jp/2010/05/13/jquery-xgradient-js.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 13 May 2010 21:48:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Gradient]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/05/13/%e5%ae%9f%e9%a8%93%e5%ae%a4-css%e3%82%b0%e3%83%a9%e3%83%87%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e3%81%8a%e6%89%8b%e8%bb%bd%e3%81%ab%e3%81%99%e3%82%8bjquery%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4.html</guid>

					<description><![CDATA[この記事の情報は古くなっています。 備忘録：ブラウザ別CSSグラデーションのメモ を元にして簡単なjQueryプラグインを書いてみました。ちょこざいなやつです。 jquery.xgraident.js ご利用は自由かつ自 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
    この記事の情報は古くなっています。
</p>



<p><a href="https://blog.mach3.jp/2010/05/css.html">備忘録：ブラウザ別CSSグラデーションのメモ</a><br />
を元にして簡単なjQueryプラグインを書いてみました。ちょこざいなやつです。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/S-vr9hRqdoI/AAAAAAAAA5o/rFdz_tpAq6k/s800/201005132053.png" alt="CSSグラデーションプラグイン"/></figure>



<p></p>



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



<p><a href="https://gist.github.com/mach3/6964618">jquery.xgraident.js</a></p>



<p>ご利用は自由かつ自己責任にて。<br />
デモ用に作った物なので、かなりおおざっぱなブラウザ判別しかしてません。<br />
（気が向いたら精査するかもしれません）</p>



<h2 class="wp-block-heading">簡単な使い方</h2>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"jquery.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"jquery.xgradient.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span>&gt;</span><span class="javascript">
    $(<span class="hljs-string">"#GradientTest"</span>).xgradient( <span class="hljs-string">"y"</span>, <span class="hljs-string">"#ff99cc00"</span>, <span class="hljs-string">"#00663300"</span> );
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></span></pre>


<h3 class="wp-block-heading">xgradient( direction, from_color, to_color )</h3>



<dl>
<dt>direction</dt>
<dd>グラデーションの方向です。xは横、yは縦。（内部では「&#8221;y&#8221;かそうでないか」としか判断してないのは秘密です）</dd>
<dt>from_color</dt>
<dd>開始時の色。IEの書式にあわせた、#AARRGGBBの形式です。</dd>
<dt>to_color</dt>
<dd>終了時の色。from_colorと同様。</dd>
</dl>



<p>動作確認はIE6、IE7、IE8、Chrome5.0、Firefox3.6.3。</p>



<h2 class="wp-block-heading">各ブラウザの見た目</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/S-vr9ptzmHI/AAAAAAAAA5s/TiDiFLVaYH8/s800/201005132107.png" alt="ブラウザでのイメージ"/></figure>



<p></p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$(<span class="hljs-string">"#GradientTest"</span>).xgradient( <span class="hljs-string">"y"</span>, <span class="hljs-string">"#ff99cc00"</span>, <span class="hljs-string">"#00663300"</span> );
</code></span></pre>


<p>IEのfilterによるグラデーションは、透明度をかますと他と表現が変わってしまう様子。<br />
色計算の仕方が違ったりするのでしょうか。</p>



<p>こんな方法をとらずに皆同じ書き方出来るのは、<br />
果たして何年後になるのでしょうか。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>備忘録：ブラウザ別CSSグラデーションのメモ</title>
		<link>https://blog.mach3.jp/2010/05/12/css3-gradient-by-browser.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Wed, 12 May 2010 00:28:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Gradient]]></category>
		<category><![CDATA[HTML]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/05/12/%e5%82%99%e5%bf%98%e9%8c%b2%ef%bc%9a%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e5%88%a5css%e3%82%b0%e3%83%a9%e3%83%87%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e3%83%a1%e3%83%a2.html</guid>

					<description><![CDATA[この記事の情報は古くなっています。 最新のブラウザ対応状況を確認してください。 CSSのクロスブラウザグラデーションといえば、 こちらの記事が図解も載っていて非常に分かりやすいです。 Cross-Browser CSS  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
    この記事の情報は古くなっています。<br />
    最新のブラウザ対応状況を確認してください。
</p>



<p>CSSのクロスブラウザグラデーションといえば、<br />
こちらの記事が図解も載っていて非常に分かりやすいです。<br />
<a href="http://www.webdesignerwall.com/tutorials/cross-browser-css-gradient/">Cross-Browser CSS Gradient</a><br />
が、もう少し詳細の仕様を覚えておきたいと思ったので、ここにメモっておきます。</p>



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



<p>前提として、<br />
<em>中間のカラーストップを持たないシンプルなグラデーションを縦横に展開</em><br />
する事をこの記事でのゴールとしておきます。<br />
IEのfilterで実現出来るのがそれくらいなので、そこにあわせる意味で。</p>



<h2 class="wp-block-heading">IEの場合</h2>



<p><a href="http://msdn.microsoft.com/en-us/library/ms532997(VS.85).aspx">Gradient Filter (A, ABBR, ACRONYM, &#8230;)</a></p>



<h3 class="wp-block-heading">書式</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>filter:progid:DXImageTransform.Microsoft.Gradient( GradientType=<rtype>,StartColorStr=<rstart_color>,EndColorStr=<rend_color>);</rend_color></rstart_color></rtype></p>
</blockquote>



<dl>
<dt>GradientType</dt>
<dd>グラデーションの方向を整数で指定します。0ならば縦方向、1ならば横方向に描画されます。</dd>
<dt>StartColorStr</dt>
<dd>グラデーションの開始時の色。アルファ値を含んだRGBで指定。例：#FF000000</dd>
<dt>EndColorStr</dt>
<dd>グラデーションの終了時の色。アルファ値を含んだRGB。例：#FF000000</dd>
</dl>



<h3 class="wp-block-heading">例</h3>


<pre class="wp-block-code"><span><code class="hljs language-php">filter:progid:DXImageTransform.Microsoft.Gradient( GradientType=<span class="hljs-number">0</span>,StartColorStr=<span class="hljs-comment">#FF669900,EndColorStr=#FF336600);</span>
</code></span></pre>


<p>色の指定の仕方があまり見慣れない形式ですが、<br />
最初の二桁が透明度を、順にR値、G値、B値を示します。</p>



<h2 class="wp-block-heading">Mozillaの場合</h2>



<p><a href="https://developer.mozilla.org/ja/CSS/-moz-linear-gradient">-moz-linear-gradient &#8211; MDC</a></p>



<h3 class="wp-block-heading">書式</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>-moz-linear-gradient( [<rpoint> || <rangle>,]? <rstop>, <rstop> [, <rstop>]* )</rstop></rstop></rstop></rangle></rpoint></p>
</blockquote>



<dl>
<dt>point, angle</dt>
<dd>グラデーションの方向をangleかpointのいずれかで指定します。<br />
pointはleft,right,center,top,bottom等を用いて指定。<br />
angleは三種の単位の中から選んで指定します。<br />
cf)<a href="https://developer.mozilla.org/ja/CSS/angle">angle &#8211; MDC</a> degが一番馴染み深いですね。</dd>
<dt>stop</dt>
<dd>カラーストップを指定。色の指定方法も複数あります。<br />
cf)<a href="https://developer.mozilla.org/ja/CSS/color_value">color value &#8211; MDC</a> RGBか、RGBaが馴染み深いでしょうか。</dd>
</dl>



<p>linear（線形）ではなく、radial（放射）グラデーションを描写する為の<br />
-moz-radial-gradientも用意されています。<br />
<a href="https://developer.mozilla.org/ja/CSS/-moz-radial-gradient">-moz-radial-gradient &#8211; MDC</a><br />
が、ここでは割愛。</p>



<h3 class="wp-block-heading">例1(RGB/縦方向)：</h3>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">background</span>: <span class="hljs-selector-tag">-moz-linear-gradient</span>(<span class="hljs-selector-tag">top</span>, <span class="hljs-selector-id">#669900</span>, <span class="hljs-selector-id">#336600</span>);
</code></span></pre>


<h3 class="wp-block-heading">例2(RGBa/横方向)：</h3>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">background</span>: <span class="hljs-selector-tag">-moz-linear-gradient</span>(<span class="hljs-selector-tag">left</span>, <span class="hljs-selector-tag">rgba</span>(102,153,0,1), <span class="hljs-selector-tag">rgba</span>(51,102,0,0<span class="hljs-selector-class">.5</span>));
</code></span></pre>


<p>グラデーションの方向は、縦ならtop、横ならleftを指定するのがシンプルで分かりやすいですね。<br />
本旨とはズレますが、ここで2点指定すれば斜めのグラデーション等も勿論実現できます。</p>



<h2 class="wp-block-heading">Webkitの場合</h2>



<p><a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html#//apple_ref/doc/uid/TP40007955-SW25">Safari CSS Reference: CSS Property Functions</a></p>



<p>Mozillaと違って、グラデーションのタイプを引数で指定します。<br />
linear（線形）とradial（放射）から選択できますが、<br />
タイプによって書式が異なるので、ここではlinearについてのみ書いておきます。</p>



<h3 class="wp-block-heading">書式</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>-webkit-gradient(linear, <start_point>, <end_point>, from(<stop>), to(<stop>)&#8230; )</stop></stop></end_point></start_point></p>
</blockquote>



<dl>
<dt>start_point</dt>
<dd>グラデーションの開始位置。left, right, center, top, bottom等を用いて指定します。</dd>
<dt>end_point</dt>
<dd>グラデーションの終了位置。start_pointに同じ。</dd>
<dt>stop</dt>
<dd>カラーストップ。開始と終了はfrom()とto()で括る事で指定します。</dd>
</dl>



<p>Mozilla同様、start_pointとend_pointを弄れば斜めも可能ですね。<br />
カラーストップも、RGB値の他にRGBaにも対応しています。</p>



<h3 class="wp-block-heading">例</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript">background: -webkit-gradient(linear,left top, right top, <span class="hljs-keyword">from</span>(rgba(<span class="hljs-number">102</span>,<span class="hljs-number">153</span>,<span class="hljs-number">0</span>,<span class="hljs-number">1</span>)), to(rgba(<span class="hljs-number">51</span>,<span class="hljs-number">102</span>,<span class="hljs-number">0</span>,<span class="hljs-number">0.5</span>)));
</code></span></pre>


<p>と、こんな感じにまとめてみましたが…<br />
正直いちいち書式覚えてられるかー！というのが本音ですね。<br />
クロスブラウザ対応できるライブラリでも書いてみようと思います。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
