CSS ãŠã‚ŒãŠã‚Œ Advent Calendar 2012 – 24日目

CSS ãŠã‚ŒãŠã‚Œ Advent Calendarã®ä»Šå¹´æœ€å¾Œã®è¨˜äº‹ã§ã™ã€‚JavaScript視点ã§CSSを考ãˆã¦ã¿ã¾ã™ã€‚

å…ˆã«çµè«–を申ã—上ã’ã‚‹ã¨

CSSãŒã‚ã‚‹ãŠé™°ã§JavaScriptãŒä¾¿åˆ©ã«ï¼ã€€JavaScriptã‚’ã‚„ã‚‹ãªã‚‰CSSã‚’å­¦ã¶å¿…è¦ãŒã‚ã‚‹ã—ã€CSSã‚’ç¿’å¾—ã—ãŸäººãªã‚‰JavaScriptã‚’å§‹ã‚ã‚‹ã®ã«æœ‰åˆ©ï¼ã€€ã¨ã„ã†ãŠè©±ã§ã™ã€‚

ãªãŠCSSãªã‚‹å˜èªžãŒå‡ºç¾ã—ã¦ããŸæ™‚点ã§ãŠåˆ†ã‹ã‚Šé ‚ã‘ã‚‹ã¨æ€ã†ãŒã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆå´JavaScriptã€ã¤ã¾ã‚Šã‚¦ã‚§ãƒ–ブラウザーã§å‹•ãJavaScriptãŒæ–‡è„ˆã§ã™ã€‚Node.jsã¨ã‹ã¯ä»Šå›žã®ç¯„囲外。(もã¡ã‚ã‚“ã€ã‚れも楽ã—ã„よã­ï¼ï¼‰ã€€ã‚ã€ã‚ã¨SVGやらも範囲外ã§ã™ã€‚

断定的ã«ç”³ã—ã¦ã„ã¦ã‚‚ã€å¸¸ã€…例外ã¯ã‚ã‚‹ã‚‚ã®ã§ã™ã€‚

JavaScriptã§å‡ºæ¥ã‚‹äº‹ã€å‡ºæ¥ãªã„事

JavaScriptãれ自体ãŒå‡ºæ¥ã‚‹äº‹ã¯ã€ã‚ã¾ã‚Šã‚りã¾ã›ã‚“。数値を計算ã—ãŸã‚Šæ–‡ç« ã‚’編集ã—ãŸã‚Šã£ã¦ã®ãŒé–¢ã®å±±ã§ã™ã€‚

ã—ã‹ã—ç¾å®Ÿã«ã¯JavaScriptを用ã„ãŸã€å¤šãã®ã€Œæ´¾æ‰‹ãªã€å®Ÿè£…ãŒã‚りã¾ã™ã€‚クリックã™ã‚‹ã¨ç”»é¢ãŒåˆ‡ã‚Šæ›¿ã‚ã£ãŸã‚Šã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•れãŸã‚Šã€ã‚ã‚‹ã„ã¯ã‚²ãƒ¼ãƒ ãŒé€²è¡Œã™ã‚‹ã“ã¨ã‚‚ã‚りã¾ã™ã€‚

ã“れã¯ã©ã†ã„ã†äº‹ã‹ã¨è¨€ã†ã¨ã€ãã®ã€Œå‘¨è¾ºä»•様ã®APIã€ã‚’JavaScript経由ã§åˆ©ç”¨ã—ã¦ã„ã‚‹ã®ã§ã™ã€‚(ã“れã¯ä»–ã®è¨€èªžã§ã‚‚一緒ã§ã™ãŒã€‚)

JavaScriptã ã‘ã˜ã‚ƒä½•も出æ¥ãªã„

処ç†ã—ãŸæ•°å€¤ã‚„文章を出力ã™ã‚‹ã«ã¯ã€ãれ相応ã®å‡ºåŠ›ã‚’è¡Œã‚ã­ã°ãªã‚Šã¾ã›ã‚“。ãŒã€JavaScriptã®è¨€èªžä¸­æ ¸ä»•様ã«ã¯ã‚らゆる出力ã¯è¦å®šã•れã¦ã„ã¾ã›ã‚“。往年ã®alert()ã‚‚è¿‘å¹´ã®console.log()ã‚‚ã€ã‚ã‚‹ã„ã¯document.write()ã‚„element.innerHTMLã‚‚å…¨ã¦JavaScriptãれ自体ã§ã¯ãªã周辺仕様ã®é¡žã§ã™ã€‚

例ãˆã°é€šä¿¡å‡¦ç†ã‚’行ã†å ´åˆã¯XMLHttpRequestã¨ã„ã†ä»•様をJavaScriptã‹ã‚‰åˆ©ç”¨ã—ã¦è¡Œã„ã¾ã™ã€‚例ãˆã°éŸ³æ¥½ã‚’鳴らã™å ´åˆã¯Flashã‚’JavaScriptã‹ã‚‰æ“作ã—ã¾ã™ã€‚(最近ã¯HTML5ãŒã‚りã¾ã™ãŒã€JavaScriptã§ã¯ã‚りã¾ã›ã‚“。)

ãã—ã¦ã€ãã®æœ€ãŸã‚‹ã‚‚ã®ãŒã€HTMLã¨CSSã§ã™ã€‚

CSSã§å‡ºæ¥ã‚‹äº‹ã€JavaScriptã¨ã®ç¹‹ãŒã‚Š

ã¨ã„ã†ã‚ã‘ã§é–‘話休題。

JavaScriptã§ã‚れやã“れやã¨è¨ˆç®—ã‚’ã—ã¦ã€ä¾‹ãˆã°ç”»åƒã‚’å‹•ã‹ã™ã‚ˆã†ãªå ´åˆã€ãã®å ´æ‰€ã‚’指定ã™ã‚‹ã®ã«CSSを利用ã—ã¾ã™ã€‚ã‚‚ã¡ã‚ã‚“ã€JavaScriptãªã—ã§CSSã ã‘ã§å ´æ‰€ã‚’指定ã™ã‚‹å ´é¢ã‚‚多々ã‚る事ã§ã—ょã†ã€‚ãã†ã‚„ã£ã¦é…ç½®ã—ãŸã‚‚ã®ã‚’å‹•ã‹ã™ã¨ãã«ä½¿ã†ã®ãŒã€JavaScriptã§ã™ã€‚ã‚ã‚‹ã„ã¯é€†ã«è¦‹ã‚‹ã¨ã€JavaScriptã‹ã‚‰ç”»åƒã®ä½ç½®ã‚’å‹•ã‹ã™ã«ã¯ã€CSSを使ã†ä»–ã‚りã¾ã›ã‚“。

é…置を例ã«ä¸Šã’ã¾ã—ãŸãŒã€CSSã®å¤šå½©ãªè¡¨ç¾ã¯ãれã«ç•™ã¾ã‚Šã¾ã›ã‚“。文字ã®å¤§ãã•や背景ã®è‰²ã€çŸ©å½¢ã®å¤§ãã•を定ã‚ãŸã‚Šå½±ã‚’付ã‘ãŸã‚Šã€ä½™ç™½ã€ä¸é€æ˜Žåº¦ã®æŒ‡å®šã¾ã§å‡ºæ¥ã¾ã™ã€‚ã“れらを駆使ã—ã¦ç”»é¢ã‚’彩りã¾ã™ã€‚

CSS 3D Butterfly
CSS 3D Butterfly – CSSã®3D表ç¾ã¨Animationsモジュールã§å®Ÿè£…ã—ãŸã€é£›ã³å›žã‚‹è¶ã®ãƒ‡ãƒ¢ã€‚

JavaScriptã«ã¯ãれãŒå‡ºæ¥ã¾ã›ã‚“。出æ¥ã‚‹ã®ã¯ã€ãã†ã„ã†ã€ŒCSSを使ã†ã€ã¨ã“ã‚ã¾ã§ã§ã™ã€‚JavaScriptã§ãã†ã„ã£ãŸå‹•ãを実ç¾ã™ã‚‹ãŸã‚ã«ã€æˆ‘々ã¯CSS(ã¨HTML)ã«ã¤ã„ã¦ã‚‚åˆã‚ã›ã¦å­¦ã¶å¿…è¦ãŒã‚りã¾ã™ã€‚

JavaScriptã‹ã‚‰è¦‹ãŸCSS

å‰è¿°ã®é€šã‚Šã€JavaScriptã‹ã‚‰ç”»é¢ã‚’æ“作ã—よã†ã¨ã—ãŸå ´åˆã€HTMLã¨CSSãŒå¿…é ˆã¨ãªã‚Šã¾ã™ã€‚

ã§ã™ãŒã€ã“れã¯è‰¯ã„事ã§ã™ã€‚視覚的ãªç´°ã‹ã„処ç†ã‚’自分ã§ã‚„ã‚‹å¿…è¦ãŒãªããªã‚Šã¾ã™ã‹ã‚‰ã€‚

例ãˆã°æž ç·šã‚’æãã€ã¨ã„ã£ãŸå‡¦ç†ã‚’自å‰ã§ä½œæˆã™ã‚‹ã®ã¯æ¥½ã§ã¯ã‚りã¾ã›ã‚“ã€‚ç‰¹å®šã®æ–‡å­—列領域を探ã—ã¦æ¥ã¦ã€çŸ©å½¢é ˜åŸŸã‚’計算ã—ã€é©åˆ‡ãªãƒ–ラシを以ã¦ãƒ‘スをæç”»ã™ã‚‹ã€ãªã‚“ã¦é¢å€’ã§ã‚„ã£ã¦ã„られã¾ã›ã‚“。

セレクター(ã‚ã€ã“れも実ã«å¼·åŠ›ã§ã™ã­ï¼ï¼‰ã§æ¤œç´¢ã—ã¦ã€æŒ‡å®šã®å½¢å¼border:dotted 3px redを「設定ã€ã™ã‚‹ã ã‘ã§ã€å®Œäº†ã§ã™ã€‚楽ã¡ã‚“ã§ã™ã€‚

ç‰¹ã«æœ€è¿‘ã§ã¯CSS 3ã®ç™»å ´ã«ã‚ˆã‚Šã€è¦–覚表ç¾ãŒé£›èºçš„ã«å¼·åŒ–ã•れã¦ã„ã¾ã™ã€‚

影を自å‰ã§æç”»ã™ã‚‹äº‹ã‚’考ãˆã¦ãã ã•ã„。背景用ã«è¤‡æ•°ã®ç”»åƒã®é…置を自å‰ã§è¨ˆæ¸¬ã™ã‚‹äº‹ã‚’考ãˆã¦ãã ã•ã„。立体的ãªçŸ©å½¢ã®å¤‰å½¢ã‚’自å‰ã§æ¼”ç®—ã™ã‚‹äº‹ã‚’考ãˆã¦ãã ã•ã„。

æ°—ãŒé ããªã‚Šãã†ã§ã™ã€‚ã§ã‚‚ã€CSSãŒã“ã®ã‚ãŸã‚Šã‚’全部引ãå—ã‘ã¦ãれるã®ã§ï¼ˆãƒ–ãƒ©ã‚¦ã‚¶ãƒ¼ãŒæ—¢ã«å®Ÿè£…ã—ã¦ãれã¦ã„ã‚‹ã®ã§ï¼‰ã€æˆ‘々ã¯ç°¡å˜ã«è¦–覚表ç¾ã‚’実装ã™ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã€‚

ã‚りãŒã¨ã†ã€CSSï¼ã€€ã‚りãŒã¨ã†ã€ãƒ–ラウザーベンダーï¼ã€€ã§ã‚‚IE 6ã¯çˆ†ç™ºã—ã‚ï¼

å­¦ã¶

CSSã‹ã‚‰å§‹ã‚ã¦JavaScriptã‚’å­¦ã¶å ´åˆ

ã‚ã€ã‚‚ã¡ã‚ã‚“HTMLã‚‚CSSã¨ä¸€ç·’ã«ã‚„ã£ã¨ã„ã¦ãã ã•ã„ã­ã€‚

å…ˆã«CSSを知ã£ã¦ã„る人ã¯ã€ãƒ—ログラミングãªã‚‹ã‚‚ã®ã‚’å­¦ã¶äº‹ã«ãªã‚Šã¾ã™ã€‚ã“れã¯ãªã‹ãªã‹é›£æ˜“度ãŒé«˜ã„ã§ã™ã€‚

ãŒã€å–ã£æŽ›ã‹ã‚Šã¯ã—ã‚„ã™ã„ã¯ãšã§ã™ã€‚何ã¨è¨€ã£ã¦ã‚‚ã™ãã«çµæžœãŒå‡ºã¾ã™ã‹ã‚‰ã€‚

具体的ã«ã‚„りãŸã„事ã¨ã„ã†ã®ã¯ã€æ—¢ã«ã”存知ã®ã¯ãšã§ã™ã€‚例ãˆã°æœ€è¿‘æµè¡Œã‚Šã®è¦–差表ç¾ï¼ˆãƒ‘ララックス)を実ç¾ã—ãŸã„ãªã‚‰ã€ã€Œã‚ˆãã‚ã‹ã‚“ãªã„ã‘ã©ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ãŸã‚‰positionã‚’æ“作ã™ã‚Šã‚ƒè‰¯ã„ã‚“ã§ã—ょã€ã¨ã¾ã§ã¯ã‚ã‹ã‚‹ã¯ãšã§ã™ã€‚ã‚ã¨ã¯é †ç•ªã«ï¼ˆã€Œã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ãŸã‚‰ã€ã£ã¦ã©ã†ã‚„ã£ã¦ã‚ã‹ã‚‹ã®ï¼Ÿã€€positionを設定ã™ã‚‹è¦ç´ ã¯ã©ã“ã‹ã‚‰æŽ¢ã™ã®ï¼Ÿã€€ã¨ã„ã†ã‹CSSを設定ã™ã‚‹ã£ã¦ã©ã†ã‚„ã‚‹ã®ï¼Ÿï¼‰è§£æ±ºã—ã¦ã‚†ã‘ã°ã€å…¨ã¦å®Ÿè£…ã§ãã¾ã™ã€‚

大丈夫。

JavaScriptã®ãŸã‚ã«CSSã‚’å­¦ã¶å ´åˆ

CSSã§è¡¨ç¾ã®å¹…ãŒå¢—ãˆãŸã¨ã„ã†äº‹ã¯ã€CSSを使ã£ãŸJavaScriptã®è¡¨ç¾ã‚‚å¹…ã‚‚ãれ以上ã«å¢—ãˆãŸã¨ã„ã†äº‹ã§ã™ã€‚

例ãˆã°å…ˆç¨‹æŽ²è¼‰ã—ãŸCSS 3D Butterflyをキーボードã‹ã‚‰å‹•ã‹ã›ãŸã‚‰ã€ã‚‚ã†ã¡ã‚‡ã£ã¨ã—ãŸã‚²ãƒ¼ãƒ ãŒä½œã‚Œã¾ã™ã­ã€‚

ãã“ã¾ã§é«˜åº¦ã§ãªãã¦ã‚‚ã€ãƒ•ォームã®å…¥åŠ›å†…å®¹ã‚’ç¢ºèªã—ã¦ã‚¨ãƒ©ãƒ¼ã‚’表示ã™ã‚‹ã¨ã‹ã€ä¸€è¦§ã‚’å‹•çš„ã«æ¤œç´¢ã—ã¦å¼·èª¿è¡¨ç¤ºã™ã‚‹ã¨ã‹ã€ãã†ã„ã†ã®ã¯CSSも知ã£ã¦ã„ãªã„ã¨å®Ÿè£…ã—ã¥ã‚‰ã„ã¨æ€ã„ã¾ã™ã€‚サイズを変ãˆã‚‹ãªã‚‰ãƒœãƒƒã‚¯ã‚¹ãƒ¢ãƒ‡ãƒ«ã‚„ã€é…ç½®ã™ã‚‹ãªã‚‰åŒ…å«ãƒ–ロックã«ã¤ã„ã¦ã®çŸ¥è­˜ã‚‚å¿…è¦ã§ã—ょã†ã€‚(ã„ãšã‚Œã‚‚CSSã®ä»•様ã§ã™ã€‚)

ãŠã—ã¾ã„

ã¤ã‚‰ã¤ã‚‰ã¨æ›¸ã„ã¦ã¿ã¾ã—ãŸãŒã€ã¾ã‚誰ãŒå¾—ã™ã‚‹ã‚“ã ã‚ˆã£ã¦æ„Ÿã˜ã«ä»•上ãŒã‚Šã¾ã—ãŸã€‚

ã†ãƒ¼ã‚“。ã¾ã‚良ã„ã‹ã€‚一応ã€ã“ã‚Œã§æœ¬å¹´ã®ã²ã¨ã‚ŠAdvent Calendarã¯å®Œèµ°ã¨ã„ã†äº‹ã«ã—ãŸã„ã¨æ€ã„ã¾ã™ã€‚(ã†ã¡ã¯æœ¬å®¶ã«åˆã‚ã›ã¦24æ—¥ã§çµ‚ã‚り。) ã„ã‚„ã‚ã€æ˜Žæ—¥ã‹ã‚‰ã¯æ—©å¯æ—©èµ·ãã‚’ã—ãŸã„ã¨æ€ã„ã¾ã™ã€‚

ã¨ã£ã´ã‚“ã±ã‚‰ã‚Šã®ã·ã†ã€‚