javascriptで:beforeや:afterなど擬似要素のプロパティや値を編集するには

直接編集することはできないので、
CSSルールを追加してやるといい(未検証)

function addCSSRule(selector, css) { 
 var sheets = document.styleSheets, 
  sheet = sheets[sheets.length - 1]; 
 
 if(sheet.insertRule) { 
  sheet.insertRule(selector + '{' +  css + '}', sheet.cssRules.length); 
 }else if(sheet.addRule) { 
  sheet.addRule(selector, css, -1); 
 } 
} 
 
addCSSRule('hoge:after', 'background: red');

参考サイト
http://w3q.jp/t/3571

14年3月9日 追記
chrome33
IE8testerで正常な動作を確認しました。

youtubeの横幅をストレッチ可能にする

素晴らしいです。助かりました。有難うございます。

<div class="video-container">
	<iframe src="http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0" width="800" height="450" frameborder="0"></iframe>
</div>
.video-container {
	position: relative;
	padding-bottom: 56.25%;
	padding-top: 30px;
	height: 0;
	overflow: hidden;
}

.video-container iframe {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}

出典
http://html5-css3.jp/tips/youtube-html5video-window.html

IE8でテーブルのpaddingがおかしかったけどtable-layout: fixed;で治った【その後追記あり】

IE8でテーブルのthやtdの paddingが計算されていないような挙動をしていた。
でも

table-layout: fixed;

で治った。

【追記】
だけど描画方法を直すと横幅の見た目が変わるので注意が必要。

そもそもの原因は、
table-layout: fixed;が無い状態で、
paddingを設定したtdの隣のtdのpテキストが、
横幅より長かったのがいけなかったらしい。なんだそれ……。

下記みたいな▼▼
td class=”index”にwidthとpaddingを設定した
ソースを

						<table class="formtable">
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									コンテンツ
								</td>
							</tr>
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									<p class="attention">長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト</p>
								</td>
							</tr>
						</table>

こんなふうに▼▼
二つのテーブルに分けたら解消した。なんでやねん……。

						<table class="formtable">
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									コンテンツ
								</td>
							</tr>
						</table>
						<table class="formtable">
							<tr>
								<td class="index"><br></td>
								<td colspan="3">
									<p class="attention">長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト</p>
								</td>
							</tr>
						</table>

【2015年1月追記】
IE8限定の現象。
tableのtdに対してbox-sizing:border-boxを設定した状態で、
横のpaddingを%で指定するとうまくいかない。
こちらは、px指定にすることによって回避。

参考サイト様
http://www.htmq.com/style/table-layout.shtml
http://html-coding.co.jp/knowhow/tips/000219/

IE8以前でもテキストエリアを角丸内側シャドウにしてと言われた日のためのコード

そんな日がいつ来るんだろう?とは思いますが。
css3を補助する系のjsは、別の不都合を引き起こしたりするので敬遠しています。
なので背景画像を使ってみました。
リセットcssは効かせた状態で作っています。

マークアップはこんな感じ

<span class="bg">
	<input type="text" class="textTest" />
</span>

cssはこんな感じです。

span.bg{
	background: url(../img/bg_test01.png) center top no-repeat;
	width:212px;
	height:31px;
	display:block;
	padding:8px;
}

span.bg input{
	width:212px;
	height:31px;
	line-height:31px;
	border:0;
	background:#fffcd2;
}

指定した領域の中に画像を散らす

jqueryとjQueryRotateを使って、ランダムに画像を散らします。

jQueryRotateはこちらから
https://code.google.com/p/jqueryrotate/downloads/list

【動作確認済】
全てWINです。
IE7(tester)
IE8(winXP)
IE10(win7)
IE11(win8)
safari最新
chrome最新

画像サイズとが角度がランダム版

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jQueryRotate.js"></script>
<script type="text/javascript">
$(function(){
//配置したい画像
	Imgset = new Array();
	Imgset[0] = "img/bg_01.png";
	Imgset[1] = "img/bg_02.png";
//配置したい画像の数
	Imgn=20;
//画像を配置したい場所
	var ImgWrap = '#inBg'
//画像のサイズ
	var img_width = 100;
	var doc_width = $(ImgWrap).width();
	var doc_height= $(ImgWrap).height();

//画像を配置する
	for (i=0; i < Imgn; i++){
		n = Math.floor(Math.random()*Imgset.length);
		xpx = Math.floor(doc_width*Math.random()); 
		ypx = Math.floor(doc_height*Math.random());
		wpx = Math.floor(img_width*Math.random());
		var nowRotateClass = 'rotateClass' + i;
		var rotateAngle = Math.random()*360;
		ribon="<div style='position:absolute;left:"+ xpx +"px;top:"+ ypx +"px;'><img src='"+Imgset[n]+"' class='"+nowRotateClass+"' width='"+wpx+"'></div>";
		/*document.write(star);*/
		var selectNowRotateClass = '.' + nowRotateClass
		$(ImgWrap).append(ribon);
		$(selectNowRotateClass).rotate(rotateAngle);
	}
});
</script>

画像サイズとが角度が指定できる版

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jQueryRotate.js"></script>
<script type="text/javascript">
$(function(){
//配置したい画像
	Imgset = new Array();
	Imgset[0] = "img/bg_01.png";
	Imgset[1] = "img/bg_02.png";
//配置したい角度
	rotateAngle = new Array();
	rotateAngle[0] = 30;
	rotateAngle[1] = 330;
//配置したい画像の数
	Imgn=20;
//画像を配置したい場所
	var ImgWrap = '#inBg'
//配置したい画像のサイズ
	imgWidth = new Array();
	imgWidth[0] = 68;
	imgWidth[1] = 40;
	var doc_width = $(ImgWrap).width();
	var doc_height= $(ImgWrap).height();

//画像を配置する
	for (i=0; i < Imgn; i++){
		n = Math.floor(Math.random()*Imgset.length);
		n2 = Math.floor(Math.random()*rotateAngle.length);
		n3 = Math.floor(Math.random()*imgWidth.length);
		xpx = Math.floor(doc_width*Math.random()); 
		ypx = Math.floor(doc_height*Math.random());
		var nowRotateAngle = rotateAngle[n2];
		var nowImgWidth = imgWidth[n3];
		var nowRotateClass = 'rotateClass' + i;
		ribon="<div style='position:absolute;left:"+ xpx +"px;top:"+ ypx +"px;'><img src='"+Imgset[n]+"' class='"+nowRotateClass+"' width='"+nowImgWidth+"'></div>";
		/*document.write(star);*/
		var selectNowRotateClass = '.' + nowRotateClass
		$(ImgWrap).append(ribon);
		$(selectNowRotateClass).rotate(nowRotateAngle);
	}
});
</script>

【SP限定】border-imageでいろんなワクをつくろう。

PCでは対応状況が悪いので使い物にならないが、
スマホでのコーディングでは有力かもしれない。
アンドロイドでの、特殊枠画像で、画像がずれたりしないのだ!!

*{
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
	-o-box-sizing: border-box;
	-ms-box-sizing: border-box;
	box-sizing: border-box;
}

div{
	border-style: solid;
	border-width: 30px 25px 20px 25px;
	-moz-border-image: url(../img/bg_form.png) 30 25 20 25 stretch round;
	-webkit-border-image: url(../img/bg_form.png) 30 25 20 25 stretch round;
	-o-border-image: url(../img/bg_form.png) 30 25 20 25 stretch round;
	border-image: url(../img/bg_form.png) 30 25 20 25 fill stretch round;
}

下記の解説とジェネレータが秀逸。

http://www.htmq.com/css3/border-image.shtml
http://border-image.com/

ユーザーエージェントによって読み込むcssとスクリプトを変更する。

iOSとそれ以外で分岐さす例。
納期直前にバグが出ても、ある程度はリカバリできるかも(厭だけど。)

<script type="text/javascript">
	useragentcheck();
	function useragentcheck(){
		var agent = navigator.userAgent;
		if(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1){
			require('js/custom.js');
		}else{
			loadingcss('css/noios.css');
			require('js/customnoios.js');
		}
	}

	function require(src){
		var element=document.createElement('script');
		element.type='text/javascript';
		element.src=src;
		document.getElementsByTagName('head')[0].appendChild(element);
	}

	function loadingcss(href){
		var element=document.createElement('link');
		element.rel='stylesheet';
		element.href=href;
		document.getElementsByTagName('head')[0].appendChild(element);
	}
</script>

パソコンサイトからスマホサイトへの導線3

今度はキャッシュなしバージョン
こちらを参考にして書き換えました。

http://zuboraism.com/javascript/28.html

<script type="text/javascript">
useragentcheck();
function useragentcheck(){
	var agent = navigator.userAgent;
	if(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1 || agent.search(/Android/) != -1 || agent.search(/Windows Phone/) != -1 || agent.search(/Symbian/) != -1 || agent.			search(/BlackBerry/) != -1 ){
	redirect();
	}
}
function redirect(){
	if(confirm('スマートフォン版ではお手持ちのスマートフォン内のアルバムやInstagramからアップロードしてTシャツを作成出来ます。スマートフォン用サイトを開きますか?')){
location.href = '/sp/';}
}
</script>