jQuery で placeholder をやってみる

hamashun 先生のJS習作:フォームにフォーカスしたらデフォルトテキストを消すというのを見て便乗エントリ。

個人的にやりたかったのは以下の3つ。

  • できれば placeholder 属性を使いたい。そうすれば Javascript オフ時でも大丈夫だし、Webkit系ブラウザならほぼ同じ状態になる。
  • できれば input だけじゃなく textarea にも使いたい。
  • value に入れてしまうと実際のフォームの送信時にその value が送信されてしまうので、placeholder と同じならその value は消したい。

ということでこんな感じになりました。ブログのコメント欄をイメージしています。尚、自分も jQuery を使用しています。

ツッコミなどなどお待ちしております。

「jQuery で placeholder をやってみる」のサンプルを見る

$(function () {

	var conf = {
		focusClass : 'focus',
		blurClass : 'blur'
	}

	$('input[placeholder], textarea[placeholder]').each(function(){
		var placeholder = $(this).attr('placeholder');
		$(this).val(placeholder).addClass(conf.blurClass)
			.focus(function() {
				if ( $(this).val() == placeholder ) {
					$(this)
						.val('')
						.removeClass(conf.blurClass)
						.addClass(conf.focusClass);
				}
			})
			.blur(function() {
				if ( $(this).val() == '' ) {
					$(this)
						.val(placeholder)
						.removeClass(conf.focusClass)
						.addClass(conf.blurClass);
				} else {
					$(this).removeClass(conf.focusClass);
				}
			}
		);
	});

	$('form').submit(function(){
		var input = $(this).find('input[placeholder], textarea[placeholder]');
		$(input).each(function(){
			if ( $(this).val() == $(this).attr('placeholder') ) {
				$(this)
					.val('')
					.removeClass(conf.blurClass)
					.removeAttr('placeholder');
			}
		});
	});

});

やってみた感想

  • if 文使うと1,2回は「あれ?今どっちの状態だっけ?」となるのをなんとかしたい。
  • .removeClass と .addClass 使い過ぎかもしれない。
  • 早く全部のブラウザで placeholder 属性が使えればいいのにね。
  • というか今の Webkit 系でも placeholder 属性で表示されたテキストの色は変更できないんだよなぁ。なんとかならんかなぁ。

なんだかだんだん本筋とずれて来たのでこの辺で。

ads by LinkShare


Apple.com/jp のヘッダーナビゲーションを画像を使わずCSSのみでやってみる

動画サムネイル

先日開催された Web Directions East で John Allsopp 氏が Apple.com のナビゲーションバーを画像を使わずにライブコーディングしたとか。

残念ながら自分は Web Directions East に参加できなかったので実際には見ていないのですが、ニコニコ動画にそのさわりの動画がアップされています。

自分でやってみた

実際に John Allsopp 氏がどのようにコーディングしたのかは知らないのですが、自分の知ってる限りの知識でやってみようと思い、やってみましたw

ということで出来たのがこれです。

「Apple.com/jp のヘッダーナビゲーションを画像を使わずCSSのみでやってみる」のサンプルを見る

ただ今普通に見ても「違うんじゃね?」と思うでしょう。

これは CSS3CSS Gradients を使っているためで、完全な完成系は WebKit Nightly Builds のみで確認できます。

(ちなみに :last-child とかに対応していない一部のブラウザでは表示が崩れますww)

スクリーンショット

と言って終るのもアレなので、各ブラウザのスクリーンショットを貼っておきます。

尚、全て Mac 上です。クリックで実物大の画像がご覧になれます。

Webkit
スクリーンショット:Webkit
Safari 3.1
スクリーンショット:Safari 3.1
Firefox 3.1beta
スクリーンショット:Firefox 3.1beta
Firefox 3
スクリーンショット:Firefox 3
Firefox 2
スクリーンショット:Firefox 2
Opera 9.6
スクリーンショット:Opera 9.6

多分もっと作り込めると思うんですが、今日はこんなところで。

もっとこうするといいよ!などありましたらコメントなどいただけるとありがたいです!


border-radius における個人的覚え書き

超個人的覚え書きです。

CSS に border-radius といういわゆる角丸を作るプロパティがあるんだけど、今のところ Mozilla系(Gecko エンジン)と Safari(Webkit)はそれらを独自拡張のプロパティで採用している。

実際に使うとこんな感じ。

Mozilla系(Gecko エンジン)
-moz-border-radius: 10px;
Safari(Webkit)
-webkit-border-radius; 10px:

で、ここまではまぁ良いんだけど、角別(右上だけ、とか)で指定しようとするとプロパティが両者で微妙に違うので間違えやすい。

Mozilla系 は radiustop とかなのに対して Webkit の場合は raiustop とか書いてあげる必要がある。

Webkit の方が CSS3 の Working Draft に近いというか同じなので、Mozilla系でもそちらが使えるようになると良いですね。

参考:border-radius - 徒委記

右上を角丸にする場合

Mozilla系(Gecko エンジン)
-moz-border-radius-topright: 10px;
Safari(Webkit)
-webkit-border-top-right-radius: 10px;

右下を角丸にする場合

Mozilla系(Gecko エンジン)
-moz-border-radius-bottomright: 10px;
Safari(Webkit)
-webkit-border-bottom-right-radius: 10px;

左下を角丸にする場合

Mozilla系(Gecko エンジン)
-moz-border-radius-bottomleft: 10px;
Safari(Webkit)
-webkit-border-bottom-left-radius: 10px;

左上を角丸にする場合

Mozilla系(Gecko エンジン)
-moz-border-radius-topleft: 10px;
Safari(Webkit)
-webkit-border-top-left-radius: 10px;


About Author
trackfeed
feed meter
人気ブログランキング - Forest.Kの徒然日記
track word
あわせて読みたい
あわせて読みたい
解析
Firefox meter Chrome Counter Firefox3 Meter


特集 & 限定アルバム
iTunes Store Top Songs
iTunes Store Top Albums
  •  iTunes Store(Japan)