コピペで使えるCSS3アニメーション http://jsdo.it/gryng02/css3animation を拝見していて、「New!」が一つずつ大きくなるのが面白いけど、文字が多くなったらcss書くの大変だな。と思ったので指定された場所にcssを適用させるjqueryプラグインを書いてみた。
ま、活用できるかは置いておくとして…。
New!
Conguratulations!
Update!
Topics!
ソース
css(外部ファイルとかでicon_tip.css)
/*
文字一つ一つにかかるスタイル指定。
似たような感じでバリエーションを増やしてクラス名を引数で渡す
*/
.icnBgGreen {
background-color: rgba( 0, 250, 0, 1 );
color: rgba( 255, 255, 255, 1 );
font-weight: bold;
font-size: 110%;
padding: 4px;
}
.icnBgRed {
background-color: rgba( 250, 0, 0, 1 );
color: rgba( 255, 255, 255, 1 );
font-weight: bold;
font-size: 110%;
padding: 4px;
}
/*
アニメーションさせたりするのスタイル指定。
数字を変更するくらいで基本は変更しなくてよいはず
*/
span#iconTip {
display: inline;
}
span#iconTip span.icnLetter {
display: inline-block;
-webkit-transform-origin: middle center;
-moz-transform-origin: middle center;
-ms-transform-origin: middle center;
-o-transform-origin: middle center;
transform-origin: middle center;
-webkit-transform: scale( 1 );
-moz-transform: scale( 1 );
-ms-transform: scale( 1 );
-o-transform: scale( 1 );
transform: scale( 1 );
-webkit-animation: 1.3s ease-in-out icnLetterX infinite;
-moz-animation: 1.3s ease-in-out icnLetterX infinite;
-o-animation: 1.3s ease-in-out icnLetterX infinite;
animation: 1.3s ease-in-out icnLetterX infinite;
}
@-webkit-keyframes icnLetterX {
0% {
-webkit-transform: scale( 1 );
}
70% {
-webkit-transform: scale( 1 );
}
85% {
-webkit-transform: scale( 1.5 );
}
100% {
-webkit-transform: scale( 1 );
}
}
@-moz-keyframes icnLetterX {
0% {
-moz-transform: scale( 1 );
}
70% {
-moz-transform: scale( 1 );
}
85% {
-moz-transform: scale( 1.5 );
}
100% {
-moz-transform: scale( 1 );
}
}
@-o-keyframes icnLetterX {
0% {
-o-transform: scale( 1 );
}
70% {
-o-transform: scale( 1 );
}
85% {
-o-transform: scale( 1.5 );
}
100% {
-o-transform: scale( 1 );
}
}
@keyframes icnLetterX {
0% {
transform: scale( 1 );
}
70% {
transform: scale( 1 );
}
85% {
transform: scale( 1.5 );
}
100% {
transform: scale( 1 );
}
}
JavaScript(外部ファイルとかでjquery.icon_tip.js)
;
( function( $ ) {
$.fn.iconTip = function( config ) {
var defaults = {
elem: 'span'
, iconTipId: 'iconTip'
, class: 'icnBgGreen'
, letterClass: 'icnLetter'
};
var options = $.extend( defaults, config );
return this.each( function() {
var $one = $( this )
, one_txt = $one.text()
, $icon_tip = $( document.createElement( options.elem ) ).attr( 'id', options.iconTipId );
$.each( one_txt.split(''), function( i, s ) {
var delay = 0 + ( i / 10 ) + 's';
var cssprop = {
'webkitAnimationDelay': delay
, 'mozAnimationDelay': delay
, 'oAnimationDelay': delay
, 'animationDelay': delay
};
$icon_tip.append( $( document.createElement( options.elem ) ).text( s ).addClass( options.class ).addClass( options.letterClass ).addClass( options.letterClass + ( i + 1 ) ).css( cssprop ) );
} );
$one.contents().remove();
$one.append( $icon_tip );
} );
};
} )( jQuery );
HTMLと実行部分
<script> $( '#new' ).iconTip(); $( '#cong' ).iconTip( {class:'icnBgRed'} ); $( '#upd' ).iconTip(); $( '#topics' ).iconTip( {class:'icnBgRed'} ); </script>New!Conguratulations!Update!Topics!
classをキー、クラス名を値にした連想配列を引数で渡すと一文字ずつspanのclassにくっつきます。デフォルトは、上記cssの
.icnBgGreen {
background-color: rgba( 0, 250, 0, 1 );
color: rgba( 255, 255, 255, 1 );
font-weight: bold;
font-size: 110%;
padding: 4px;
}
2種類、3種類バリエーションを増やしたい時は似たようなスタイルシートのクラスを作って引数で渡す。あとは、適宜数字をいじれば…。
0 件のコメント:
コメントを投稿