投稿

ラベル(javascript)が付いた投稿を表示しています

jQueryのhoverで文字色をふんわり変える効果をつけると、ページ読込完了後の最初のマウスホバーでふんわり変わらない件と代替方法

イメージ
今までのウェブ制作で、jQueryのhoverを使って文字色をふんわり変える効果をつけていたところ、どうもページ読込完了後の最初のマウスホバーでふんわり変わらないことに気付いた。これはjQueryのhover内の始めのfunction(マウスホバー時の関数に当たる)でアニメーション時間を遅くした時に出くわしたもので、それ以後ひじょ〜に気になって仕方が無いのでその解消方法を探してみたら、CSS3を使えば良さそうだということがわかったので以下にチョットだけ解説を。 1. jQueryのhoverで文字色をふんわり変える コードはいつもこんな感じのものを使っている。 $(function(){ $("a").hover( function () { $(this).stop().animate({color: "任意の色A"}, 500); }, function() { $(this).stop().animate({color: "任意の色B" }, 500); } ); }); jQueryのhoverは、対応ブラウザが多いのだが、ページ読込完了後の最初のマウスホバーではアニメーションが効かないようだ。この現象は、特に、CSSにもa:hoverを同時に指定している場合に起こる現象のようだ。 対応策としては、CSSのa:hoverでの指定はしないことで、アニメーションが効かない現象は解消されるが、これだとjQueryが読込めない時にa:hoverが出来なくなる、という欠点がある。 2. CSS3のtransitionで文字色をふんわり変える 通常のリンク色とマウスホバー時の色指定はこんな感じ。 a {color: 任意の色A;} a:hover {color: 任意の色B;} CSS3のtransitionの対応ブラウザは、IEがver10のみで、他のブラウザもベンダープレフィックスでの対応となっている。 しかし1.と違い、ページ読込み完了時の最初のマウスホバーでも効く。 なぜなら、CSSのa:hoverはそのままで、aに a { color: #000; -webkit-transition: 0.5s; -moz-transition: 0.5s; -o-...

jQueryでline-height値を取得する時、IEだけ返り値が違う

イメージ
とあるCSSで body { font-size: 12px; line-height: 2; } と指定し、jQueryにてline-heightの値を取得する時、 var lineHeight = parseFloat($("body").css("line-height")); とすると、通常「24」と、 font-size*line-height が内部計算された数値が返される(parseFloatは文字列を数値に変換する関数。parseFloat関数なしだと「24px」と単位付きの文字列が返される)。しかし、 IEではCSSでline-heightに指定した値「2」がそのまま返されて他のブラウザと異なる結果となり 非常に困る。それ故ブラウザ判別のスクリプトが必要になる(ホンマにメンドイ)。 var userAgent = window.navigator.userAgent.toLowerCase(); var appVersion = window.navigator.appVersion.toLowerCase(); if (userAgent.indexOf('msie') != -1) { if (appVersion.indexOf('msie 6.') != -1) { //ie6のとき var getStyle = $("body")[0].currentStyle || document.defaultView.getComputedStyle($("body")[0], ''); var lineHeight = getStyle.lineHeight*parseFloat($("body").css("font-size")); var bHeight = Math.round(lineHeight) } else if (appVersion.indexOf('msie 7.') != -1) {//ie7のとき var getStyle = ...

HTMLで文字詰め出来るJavaScriptとjQuery

イメージ
日頃WEBのテキストで句読点および括弧類が連続して出現する場合の詰め処理をしたくてどうしたものかと思案していたら、素晴しいJavaScript(とjQueryの混合)を発見。このスクリプト、要はペアカーニングを任意に設定できてしかも2つの括弧類連続を設定するだけで括弧類が3つ以上連続してもちゃんと詰めてくれる。いやはやありがたや。ということで今回参考というか丸々活用させていただいたのは FLAutoKerning.js というスクリプト。 HTMLで文字詰めするタイポグラフィー用JS | fladdict 感謝深謝。 カーニングのペアを自動処理 今回の組版の設定は、基本ベタ組みで、句読点および括弧類が2つ連続した場合「全角二分取り」になるような、つまりは二分分詰まるような、オーソドックスな設定で試してみる。そして今回の句読点および括弧類は 起こし括弧類:「『([{〈《【〔 受け括弧類:」』)]}〉》】〕 句読点類・中点:、,。.・ の計21種の組合せに詰め設定を施すが、この組合せを配列にて自動化した。 jQuery(function($){ var pncPrn = ["」","』",")","]","}","〉","》","】","〕","「","『","(","[","{","〈","《","【","〔","、",",","。",".","・"]; for (var x=pncPrn.length; x--;){ for (var y=pncPrn.length; y--;){ p[pncPrn[x] + pncPrn[y]] = -0.6; } } }); 上記jQueryにて設定した句読点括弧類の【 組合せ 】をFLAutoKerning.js内カーニングペア定義の箇所に追...

JavaScriptとjQueryで文字サイズ・行高・行取り・見出し行数から見出しのマージンを自動計算

イメージ
ワタクシがwebデザイン上一番気にするのが見出しのマージン。いつもその時の感覚で決めるが、しっくり来ないことが多々ある。何か巧い方法が無いものかと『 文字の組方ルールブック ヨコ組編 』の「見出しの構造と組方」を眺めていて、自動計算出来るかもと思いjQueryメインに適宜JavaScriptを組み込みスクリプトなるものを書いてみた。 2013.5.14追記 デモページの内部に書き込んでいたこのスクリプトを外部ファイル化。 上下マージン比1:1時と8:5時を ボタンで切り替えられるデモページ を追加。 参照 日本エディタースクール編. 文字の組方ルールブック ヨコ組編 . 本エディタースクール, 2001 JavaScript:文字を数値に変換する方法その2 | THE HAM MEDIA BLOG line-height の値には単位なしが良いとされる理由 - lucky bag Can I use rem units? ほか、色々なサイト・ブログを参照させていただいた。深謝。 注意 なにせjQueryはおろかJavaScript、いやプログラミング全般に素人なので間違ってたりする可能性があるので、使用時は自己責任でお願いする。 実作したweb組版 本文の文字サイズ・1行の字詰・行間(行送り)などを決めると版面が決まる。見出しもその版面に則り「行取り」の方法でその上下のアキを決めていく。具体的には下図をご覧あれ。本文だけでなく見出しも行に綺麗に乗っているのがわかる。 本文サイズ12px、行高22px、行間10px、42字詰。各見出しサイズなどは図の通り。 完成形をブラウザで表示後キャプチャし、イラレで作成した水色の版面上にキャプチャ画像を配置した。 web組版の注意点 行送りの設定方法がDTPと異なる。 webの行送りはline-heightで設定するが、これは厳密には文字通り行の高さを設定するもので、アキの付き方は以下の図の通りになる。 本文上下のグレー網がline-heightで設定されるアキ これを踏まえて版面設計や見出しのマージンを算出する。 見出しマージンの計算式 ということで、計算式を導くために、下図のように必要な部分を設定。 var bFont = body要素(本文)のfont-size var bHe...

jQueryでHOVERした以外の文字が薄くなる縦型ナビに背景色変更も加味

イメージ
最近制作した案件にて採用したHOVER以外のボタンが薄くなる縦型ナビについて解説をば。 今回参考にさせていただいたのは、 webOpixel さんの記事「 jQueryで作るマウスオーバーアニメーションするテキストタイプの縦型ナビゲーション10種 」内の「 8.マウスオーバー以外のボタンを薄くする。 」であります。深謝。 メインナビのみの縦型ナビ HTML <ul id=" mainNavi "> <li><a href="#">works</a></li> <li><a href="#">projects</a></li> <li><a href="#">bibliography</a></li> <li><a href="#">contact</a></li> <li><a href="#">about</a></li> </ul> ※URLは見やすさのために#に置き換えて省略。 CSS #mainNavi { width: 192px; ・・・・1:必須 text-transform: uppercase; ・・・・2:任意 border-bottom: dotted 1px #BAC3C9; ・・・・3:任意 } #mainNavi li {border-top: dotted 1px #BAC3C9;} ・・・・4:任意 #mainNavi li a { display: block; ・・・・5:必須 padding: 0.8em 0.5em 0.5em; ・・・・6:必須 } CSS指定の留意点: width指定をしないとwidth: 100%;に同じとなり可能な限りの幅になる。 今回のナビではラテン文字全てを大文字に指定したので。 今回は...

bloggerのフッタのちょっとしたカスタマイズ(非推奨)

イメージ
このNEWSブログは先日から弄っているが、本日もcssにてレイアウトの微調整を施した。 そんな中、どうしても気になるのがフッタ部分。 拙website のフッタと同じ形式にするため、ちょっとしたカスタマイズを仕掛けた。 以下、自己責任にてお願いする次第である 。 オリジナルのものにするために、既成のフッタ部分 <!-- outside of the include in order to lock Attribution widget --> <b:section class='foot' id='footer-3' showaddelement='no'> <b:widget id='Attribution1' locked='true' title='' type='Attribution'/> </b:section> を削除する必要があるが、一度削除してしまうと元に戻せないので、コメントアウトで隠す方法を採ることにした。 <!-- outside of the include in order to lock Attribution widget <b:section class='foot' id='footer-3' showaddelement='no'> <b:widget id='Attribution1' locked='true' title='' type='Attribution'/> </b:section> --> 上記の通りにコメントアウトして隠して、あとはレイアウト画面で「HTML/JavaScript」ガジェットを追加してそれに 拙website のフッタと同じHTMLを入れ、テンプレートデザイナーにてCSSを追加して(他にテンプレートのHTML側にもwebfontやらJavaScriptやら追加しているが省略)完成。 既成のフッタ カスタマイズ後