カテゴリー: HTML

  • ページ内リンクでもpopStateがfireする件。

    最近、popStateとかpushStateとかいい加減に活用しようと思いまして。

    というのも、6月頃にgoogleのアルゴリズム変更があったようで、js有効時はhashChangeにするようなサイトがSEO的に不具合が出てしまったんですよね。トップページは問題無いのですが、下層ページがトラッキングされないとか、色々SEO的に不具合が出たり等、色々トラブルがありまして・・・・ 参考jQuery hashchange event を使ってみた。
    1年前は全然普通に使えたのにねぇ・・・・

    まぁ、そんなこんなで、popState,pushStateを使うことになりました。
    使い方はこの記事が詳しいです。AjaxでもURLを更新して履歴を作れるHTML5のpushState試してみた | webOpixel

    で、ページ内リンクも使ったりで色々ごちゃごちゃやっていたのですが、ページ内リンクでもpopStateのイベントが発火してしまうようです。

    B1⇔B2の戻る/進むでページリロードが発生しない(=popstateイベントが送出される)ってところがポイントです。

    1点腑に落ちないのがページ内リンク(ハッシュが付与されるページリロードが発生しないページ履歴更新)でもpopstateイベントが発生するよう。

    [HTML5]History APIめも – l4l

    『同一ページ中でアドレスバーに変更があった場合にイベントが発火する』みたいな解釈って事ですね。なるほど。

    ページ内リンク主体で色々やりまくるようなサイト(http://www.cooper.com/みたいな。popstateとかは使って無いようだけど)を構築する際は色々注意しないといけない見たいですね。

  • プリロード付のロールオーバーを実装するjQuery

    普段は画像置換+CSS Spriteでロールオーバーをやっつけています。リクエストが少ないし、CSSだけなので、高速です。

    でも、画像の差し替えなどは若干手間なのでメンテナンス性などを考えたときはJavascriptで実装した方が良い場合もあったり。
    ただ、javascriptで普通にsrcを書き換えると、そこから画像のダウンロードが始まるので、マウスオーバーとのタイムラグが発生したりで、どうも頂けない。

    そんなわけで、jQueryでプリロード付のロールオーバーを実装するスクリプトを書いてみました。

    [js]
    jQuery(function(){
    var supfix = "_on";
    $("img.rollover").hover(
    function(){
    $(this).attr("src",$(this).attr("src").replace(/^(.+)(\.[a-z]+)$/, "$1"+supfix+"$2"));
    },
    function(){
    $(this).attr("src",$(this).attr("src").replace(/^(.+)_on(\.[a-z]+)$/, "$1$2"));
    }
    ).each(
    function(){//preload
    $("<img>").attr("src",$(this).attr("src").replace(/^(.+)(\.[a-z]+)$/, "$1"+supfix+"$2"));
    });
    });
    [/js]

    使い方

    ロールオーバーさせたいimgタグにrolloverクラスをつけるだけです。
    img.gifにマウスオーバーすると、img_on.gifに変わります。
    supfixの値を変更すれば”_on”以外のものでも使えます。

    [html]
    <img src="img.gif" alt="" class="rollover" />
    [/html]

    jQueryの$()とかjQuery()ってセレクタを入れてjQueryオブジェクトを取得するだけのものと思いがちですが、中身にHTML文字列をぶち込んであげることで、非表示のjQueryオブジェクトを作成できるんですよね。

    jQuery(html, [ownerDocument]) – jQuery 日本語リファレンス

    良く$.ajaxで取得したHTMLから要素をDOMエレメントを作成してappendするような使い方をします。

    これを活用して、画像のプリロードを実現している訳です。
    まぁ、それでも、読み込まれて実行されるまでは使えないので、そこら辺はCSSの方が強いですね。また、Jsの実行速度や、読み込むスクリプトの量にも左右されると思うので何でもかんでもjsでって訳にはいかないですね。そこら辺は使い分けましょう。

  • iframeで読み込んだYouTubeの動画を一定時間後に自動再生する

    現在制作中のサイトで、最初にスプラッシュを入れて、そのあと、Youtubeの動画を再生しようという事をすることになりました。

    普通に、swfobjectを使ったりして、YouTube JavaScript Player APIを使えば、

    [js]
    window.setTimeout(function() { ytplayer.playVideo }, 3000);
    [/js]

    とかやれば良いのですが、今時iPhone等のFlashが使えない媒体もあるので、できれば、HTML5プレーヤーを使いたいんですよね。しかしYouTubeからHTML5のAPIはたぶん提供されていないようなので、されていたとしても、Flashとの切り替えなども実装するのは正直面倒。というわけで、何とかYouTubeが提供しているiframeでの埋め込みコードを使ってなんとか実現しようと思います。

    というわけで、jQueryで書いてみました。無駄にdelayメソッドを使ってみました。何かの要素を表示した後にとか、そういう使い方もできます。

    [js]
    jQuery(document).ready(function(){
    $(this).delay(3000).queue(function(){
    $("#mainMovie").html(‘<iframe width="960" height="540" frameborder="0" allowfullscreen="" src="http://www.youtube.com/embed/ID?autoplay=1"></iframe>’);
    $(this).dequeue();
    });
    });
    [/js]

    別に、ロードしてから3秒とかなら、
    [js]
    jQuery(document).ready(function(){
    setTimeout(function(){
    $("#mainMovie").html(‘<iframe width="960" height="540" frameborder="0" allowfullscreen="" src="http://www.youtube.com/embed/ID?autoplay=1"></iframe>’);
    }, 3000);
    });
    [/js]

    でも全然動きます。むしろこっちの方がベターな気もします。

    やってることは、
    YouTube 埋め込みプレーヤーのパラメータ:http://code.google.com/intl/ja/apis/youtube/player_parameters.htmlを使って、自動再生するようにしたiframe型の埋め込みプレーヤーを、DOMを書き換えて一定時間後に、読み込み→再生をやらせているだけです。

    自動再生させるには、動画のURLの最後に?autoplay=1をつければ良いだけです。

    もっとスマートな実装方法が出てくればイイですよね。

  • 今更人に聞けない、jQueryでCSSの操作のやり方。

    jQueryがJavascriptのフレームワークとして、ものすごーい普及してますね。
    そんなわけで、今更ですが、jQueryでのCSSの操作の仕方。

    .css( propertyName, value )

    こんな感じ。普通にCSS書くのあんまり変わらないですね。
    [js]
    $(".red").css("background-color","#F00");
    [/js]

    でもこれだと複数プロパティを設定する場合、
    [js]
    $(".red").css("background-color","#F00").css("color","#FFF").css("width","300px");
    [/js]
    となって、読みづらいし、css()を何度も呼んでいるのでいまいち効率が悪い。。。。。

    そんなわけで、別の書き方があります。

    .css( map )

    変数に連想配列で、CSSのプロパティを渡すことができます。

    [js]
    $(".red").css({
    backgroundColor:"#F00",
    color:"#FFF",
    width:"300px"
    });
    [/js]

    これだと、複数プロパティを一度に設定できます。

    ただし、注意しなければいけないのが、配列のキーにプロパティ名が入るのですが、ここが、キャメルケースになってます。

    要は、

    background-color -> backgroundColor
    z-index -> zIndex

    と、ハイフンを消し、その後に続く文字を大文字にするということです。

    また、クオートで挟む必要もありません。

    JavaScriptを触ったことがある人だったら別にどうでも無いんでしょうが、自分が初めてjQueryを触ったときは、キャメルケースがさっぱりわけわかめでしたので。。。

    ちなみに、連想配列での渡し方は.animate()メソッドでも一緒ですので、これが使えると、ちょっと、jQueryが楽しくなると思いますよ!!!

  • 横幅いっぱいのコンテンツスライダーつくりました。

    jQueryで横幅いっぱいのコンテンツスライダー、jQuery Full-width Sliderというプラグインをつくりました。
    トップページのメインビジュアルとかで使えると思います。というか昔の案件で使ったものをブラッシュアップしたものです。画像以外も使えます。

    jquery.fullwidthslider.1.0

    デモ:http://demo.torounit.com/fullwidthslider/
    2012-02-09:デモのCSSを修正。IE対応。

    デモの写真はFree.Stockerのを使わせて頂いています。良い写真いっぱいありますよねここ。

    使い方

    js
    [js]
    $(function(){
    $(".slide").fullWidthSlider({
    width:640,
    height:480
    });
    })
    [/js]

    html
    [html]
    <div class="slide">
    <ul class="stage">
    <li><img src="slideImage/demo1.jpg" alt="" width="640" height="480" /></li>
    <li><img src="slideImage/demo2.jpg" alt="" width="640" height="480" /></li>
    <li><img src="slideImage/demo3.jpg" alt="" width="640" height="480" /></li>
    </ul>
    </div>
    [/html]

    こんな感じです。

    .stageの下にa.leftNav,a.rightNavという要素を生成します。(オプションで消せます。)
    それがそれぞれ左右のナビゲーションになってます。適当に半透明の画像などを背景に指定してあげたりすれば良いと思います。

    CSSの書き方はデモを参照下さい。

    オプション値

    オプション 説明 デフォルト
    width スライドの横幅 960
    height スライドの高さ 400
    time 切り替わるスピード(ミリ秒) 5000
    slideStage スライドのステージ
    (スライド群を格納する要素)
    “.stage”
    slideMember スライドする要素 “li”
    nav スライドのナビゲーションを使うかどうか true
    slideNavi ナビゲーションのクラス “.slideNavi”
    mouseoverStop マウスオーバーで止める true

    一応テストはしてないこともないですが・・・って程度なので、何かバグとか発見しましたらToro_Unitまでリプライ下さい。

  • jQuery.uploadを使った、画像のサムネイルを表示するフォームのデモを作りました。

    以前、jQuery.uploadでアップロード画像のサムネイルの作成というエントリーを書いたので、それの実装を作ってみました。アップロードする画像を選択すると、アップロードされ、それのサムネイルが表示されます。

    また、ページを離れるときに画像をJavascriptで削除していますが、実際に使うときは使わない場面も多いと思いますので、その部分は適当に削除するなり、なんなりして下さい。

    デモ:http://demo.torounit.com/jquery.upload/

    script.js(ajaxでのアップロード等々)

    [js]
    jQuery(function($){
    //送信ボタンの非表示
    $(‘#submit’).hide();

    //フォームの内容が変更されたとき
    $(‘#img’).change(function() {
    var preview = $(‘#preview’);

    //現在表示されているものを消す。
    preview.find("img").fadeOut(300);

    //アップロード
    $(this).upload(
    ‘upload.php’,
    $("form").serialize(),
    function(html){
    //サムネイルの表示
    preview.html(html).animate({"height":preview.find("img").height()+"px"},300,function(){
    preview.find("img").hide().fadeIn(300);
    });
    },’html’);
    });

    //離れるときに画像を削除
    $(window).bind("beforeunload",function(){
    var unlinkFile = $("#postPhotoName").val();
    $.ajax({
    async: false,
    cache: false,
    type: "POST",
    url: "upload.php",
    data: "postPhotoName="+unlinkFile

    });

    });

    });
    [/js]

    upload.php(アップロードしたファイルを加工するスクリプト)

    [php]
    <?php

    //前にアップロードされた写真のファイル名
    $postPhotoName = $_POST["postPhotoName"];

    //古いファイルの削除
    if($postPhotoName){

    unlink("./img/".$postPhotoName);
    unlink("./img/thumb-".$postPhotoName);
    }

    $result = false;

    if($_FILES[‘img’][‘name’] == "") {
    die("ファイルがないぜよ。");

    }else{
    //アップロードされたファイルの情報を取得
    $fileName = basename(date("U")."-".$_FILES[‘img’][‘name’]);
    $fileType = $_FILES[‘img’][‘type’];
    $fileTmpName = $_FILES[‘img’][‘tmp_name’];

    if(!preg_match("/jpeg/",$fileType)){

    unlink($fileTmpName);
    die( "jpegじゃないぜよ。");

    }else{
    //ファイルの保存
    if (!move_uploaded_file($fileTmpName, ‘./img/’ . $fileName)) {

    die(‘保存にしっぱいしたぜよ。’);

    } else {

    //サムネイル作成
    include(‘class.image.php’);
    list($width, $height, $type, $attr) = getimagesize(‘img/’.$fileName);

    $thumb = new Image(‘img/’.$fileName);
    $thumb->name(‘thumb-‘.basename($fileName,".jpg"));

    if($width>$height){
    if($width > 500) $thumb->width(500);
    }else{
    if($height > 500) $thumb->height(500);
    }

    $thumb->save();
    $result = true;
    }

    }

    }

    if($result == true){
    ?>

    <img src="<?php echo ‘./img/thumb-‘.$fileName;?>">
    <input type="hidden" value="<?php echo $fileName?>" name="postPhotoName" id="postPhotoName">
    <?php
    }

    [/php]

    HTML

    [html]
    <form method="post" enctype="multipart/form-data" action="upload.php">
    <input type="file" value="" id="img" name="img" size="50" />
    <input type="submit" id="submit" />
    <div id="preview"><div>ここにプレビューが表示されます</div></div>
    </form>
    [/html]

    このままつかうのはちょっとあれかもですけど、アイデア次第で色々使い道がありそうです。

  • ユーザーエージェントでブラウザの判別をするPHPとかjQueryを書いてみた。

    自分でコピペできるように、browser判別のTipsを貼っておきます。

    PHPで判別

    [php]
    function browser_class(){
    $classes = "";
    $agent = getenv( "HTTP_USER_AGENT" );

    if(strstr($agent,"MSIE")){
    $classes .= "msie ";
    if(strstr($agent,"MSIE 6.0")) $classes .= "ie6 lt7 lt8 lt9";
    if(strstr($agent,"MSIE 7.0")) $classes .= "gt6 ie7 lt8 lt9";
    if(strstr($agent,"MSIE 8.0")) $classes .= "gt6 gt7 ie8 lt9";
    if(strstr($agent,"MSIE 9.0")) $classes .= "gt6 gt7 gt8 ie9";
    }
    else {
    $classes .= "noie ";
    if( strstr($agent,"Firefox")) {
    $classes .= "firefox gecko";
    }
    elseif( strstr($agent,"Safari")) {
    $classes .= "safari webkit";
    }
    elseif( strstr($agent,"Chrome")) {
    $classes .= "Chrome webkit";
    }
    elseif( strstr($agent,"Opera")) {
    $classes .= "opera presto";
    }
    //ここからは気休め。
    //AppleWebKit/534.30 (KHTML, like Gecko) なので先に記述
    elseif( stristr($agent,"WebKit")) {
    $classes .= "webkit";
    }
    //AppleWebKit/534.30 (KHTML, like Gecko) なので先に記述
    elseif( stristr($agent,"KHTML")) {
    $classes .= "khtml";
    }
    elseif(stristr($agent,"Gecko")) {
    $classes .= "gecko";
    }else {
    $classes .= "other";
    }
    }
    return $classes;
    }
    [/php]

    ついでにwordpressのbody_classに追加するなら、
    [php]
    function add_browser_class($classes){
    $classArr = explode(" ",browser_class());
    $return = array_merge($classes,$classArr);
    return $return
    }

    add_filter("body_class","add_browser_class");
    [/php]

    とかやればうまく行ける気がします。

    jQueryで判別

    参考:
    jQuery.supportでのブラウザ判別
    http://w3g.jp/blog/tools/jquery_browser_sniffing

    [js]
    jQuery(function($){

    $html = $("html");

    if(!$.support.checkOn && $.support.checkClone){
    $html.addClass("webkit noie");
    }else if($.support.checkOn && $.support.noCloneEvent && window.globalStorage){
    $html.addClass("firefox noie");
    }else if($.support.checkOn && $.support.noCloneEvente && !window.globalStorage){
    $html.addClass("opera noie");
    }else if(!$.support.noCloneEvent && $.support.opacity){
    $html.addClass("gt6 gt7 gt8 ie9 msie");
    }else if(!$.support.opacity){
    if(!$.support.style){
    if (typeof document.documentElement.style.maxHeight != "undefined") {
    $html.addClass("gt6 ie7 lt8 lt9 msie");
    } else {
    $html.addClass("ie6 lt7 lt8 lt9 msie");
    }
    }else{
    $html.addClass("gt6 gt7 ie8 lt9 msie");
    }
    }else{
    $html.addClass("other");
    }
    });
    [/js]

  • jQueryのキュー(queue)って何なんですか・・・?

    jQueryで、CSSを操作して、アニメーションをしたい時があると思います。
    そんなときはたいてい、

    [js]
    $("#box1").css({color:"#F00"}).animate({left:"300px"},4000);
    [/js]
    の様なscriptを書くと思います。

    また、
    “アニメーションしてから、文字色変えたい!!”
    なんてことはよくあると思います。
    そして、きっと僕みたいな人は、こんなコードを想像するわけです。
    [js]
    $("#box2").animate({left:"300px"},4000).css({color:"#F00"});
    [/js]

    しかし、現実は、こちらのデモのように、CSSが操作されてから、アニメーションをしてしまうのです。一番最初の例と全く変わらない動作をしてしまいます。

    現実というのは時に残酷ですね。

    実は、jQueryのanimateというメソッドは「アニメーションをしなさい」という命令ではなく、
    「アニメーションをキューに登録しなさい!」
    という意味なのです。
    キュー、queueは平たく行ってしまうと、アニメーション等の台本みたいなもので、キューに溜まっている処理は上から順番に処理されます。

    jQueryにはたくさんのメソッドがありますが、大きく分けると、css()等のCSS操作、append()等のDOM操作その他、キューを使わないメソッドと、animate()やfadeIn()、fadeOut()、fadeTo()、等キューを使うメソッドに分かれます。ついでに言うなら、stop()はキュー上の処理の停止をするメソッドなのです。

    キューを使うメソッドは基本的にはアニメーション等の処理に時間を設定するものがほとんどだと思います。ちゃんと本家のリファレンスを隅まで熟読したわけではないのでちょっとあれですが・・・

    こんな時、一つは、callbackを使えば解決できます。

    animate等のcallbackを使う

    [js]
    $("#box3").animate({left:"300px"},4000,function(){
    $(this).css({color:"#F00"});
    })
    [/js]
    しかし、いまいちスマートじゃないですし、メソッドチェーンをここからつないでいくのは可読性的に宜しくない気がします。昔これでネストさせすぎてよく分からないコードになってしまったことがあったりなかったり・・・

    そこで、queue(callback)を使います。

    queue(callback)を使う

    [js]
    $("#box4").animate({left:"300px"},4000).queue(function(){
    $(this).css({color:"#F00"}).dequeue();
    });
    [/js]

    としてあげると、これもちゃんと動作します。
    これを使う一番のメリットとしては、delay()等のメソッドが使えるということです。

    dequeue()について

    また、ここでdequeue()という見慣れないメソッドが出てきました。dequeue()はキューに溜まっている先頭の処理を実行するというメソッドです。
    通常、キューを使わないメソッドには、次の処理を実行する機能がありません。
    こちらのデモを見てもらうとわかると思いますが、dequeueしていない#box1の方は最後のanimate()が実行されずに停止しています。

    animate()などは、dequeue()を勝手にやっているのですが、css()等はそういうわけにもいかないので、最後には必ず、
    [js]
    $(this).dequeue();
    [/js]
    を追加しておきましょう。お行儀みたいなものですね。

    これでみんなも立派なjQueryアニメーター、デビュー!

    jQueryはとても手軽で便利でハードルが低いですが、ちょっと突っ込んだことをして躓くと逆にjQuery流で解決しないといけない気がするものなのでちょっと面倒ですね。
    まぁフレームワークなど、高度に抽象化されたものにはどうしても付いて回るものなのだとは思いますが、ちゃんと一度はソースを読んで理解しておきたいですね。僕は全くやれていないですが・・・

  • ie9.jsを使うと出来ること、出来なくなること。

    最近ie9.jsを活用することが少々あるので、
    いまさらながらまとめです。

    配布場所

    ie7-js
    http://code.google.com/p/ie7-js/で配布されています。

    デモはhttp://ie7-js.googlecode.com/svn/test/index.htmlで見れます。

    使い方

    head内に
    [html]
    <!–[if lt IE 9]>
    <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
    <![endif]–>
    [/html]
    と貼り付けるだけです。フッターに貼ると誤作動起こす場合がたまに合ったような気がします。

    できるようになること

    E > F
    子セレクタ。直下の子要素にのみ適応するやつ。
    E + F
    隣接兄弟セレクタ。Eのすぐ下隣に居る弟要素。
    E ~ F
    間接セレクタ。E以降の弟要素全て。
    .class1.class2
    クラスの重複指定
    :hoverの修正
    a以外にも効くようになります。
    [attr],[attr=”value”],[attr~=”value”],[attr|=”value”],[attr^=”value”][attr$=”value”],[attr*=”value”]
    属性セレクタ全般
    :before,:after
    擬似要素。
    :checked,:disabled,:empty,:enabled,:indeterminate,:first-of-type,:last-child,:last-of-type,:not(),:nth-child(),:nth-last-child(),:nth-last-of-type(),:nth-of-type(),:only-child,:only-of-type,:root,:target
    CSS3の擬似クラス
    opacity
    透明度がfilter要らずで効くようになります。もちろん内部的にはfilterを使っているのですが。
    article, aside, audio, canvas, details, figcaption, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, summary, time, video
    HTML5で追加された要素にCSSが当たるようになる。html5.jsとかhtml5shiv.jsを同時に読み込む必要はありません。
    透過PNGへの対応
    ファイル名をhoge-trans.pngにすると動作します。
    もしくは、
    [js]
    var IE7_PNG_SUFFIX = ".png";
    [/js]
    とすると全てのPNGに対して有効になります。

    出来なくなること。注意すべきこと。

    まぁ便利なのですが、そうそう美味いだけの話というのはなかなか無いもので。

    CSSハックが一部使えなくなる。

    個人的にはこれが一番大きいような気がします。

    • * html
    • *:first-child+html

    等のセレクタを使うようなハックは動作しなくなりました。まぁセレクタの挙動とかをFixするものなので当然なのでしょうけれど。。。
    なので、ただ読み込んだだけで全てがうまくいくようなものではないようです。

    重くなる

    ただでさえ、IE6等は重いのに、さらに重くなります。いまどきIE6が動いてるPCは古いですしね。
    特に、
    [js]
    var IE7_PNG_SUFFIX = ".png";
    [/js]
    等は全てのPNGが対象になるので、PNGをたくさん使うような場合はこの記述は避けたほうが懸命かと思います。

    :before,:after

    擬似要素を使うとき、どうやらここに1行分の高さを持った要素が生成されるようです。
    なのでclearfix等を擦るときはしっかりheight:0にしないとデザインがおかしくなることがあります。
    また、擬似要素を生成するとき、
    [html]
    <! class="ie7_class1">
    [/html]
    のような要素を生成するので、このクラスを指定してスタイルを当てることもたまには使えるかもしれません。

    新たに生成された要素にHTML5のタグがある場合

    Ajaxなどを使っている場合に起こるのですが、
    新しく生成されたHTML5要素には、やっぱりCSSが当たりません。
    この場合は、
    HTML 5 innerShiv
    http://jdbartlett.github.com/innershiv/
    などでやっつけるか、html5要素にcssを当てないだとか、html5要素をそこだけ避けるといったことが必要です。

    ザーッと書き並べてみましたけど、どうでしょう。
    自分が痛い目に合った記録みたいになってますね。

    Google AppsもIE7のサポート打ち切りを決めたようなので、早くIE8,IE9等に移行して頂ければ幸いです。切に願っています。
    Internet Explorer 8
    http://www.microsoft.com/ja-jp/windows/products/winfamily/ie/function/default.aspx

    Internet Explorer 9 のダウンロード
    http://windows.microsoft.com/ja-JP/internet-explorer/downloads/ie-9/worldwide-languages

  • jQueryに独自の関数を追加

    jQueryを使っているとやっぱり独自の関数を作りたくなってきますよね。

    hoge()とhogehoge()というjQueryで使える関数を作ります。

    [js]
    jQuery.fn.extend({
    hoge:function(vars){
    jQuery(this).addClass("hoge").css({color:"#FFF"});
    return this;
    },
    hogehoge:function(){
    var $this = jQuery(this);
    $this.html("hogehoge");
    return this;
    }
    });
    [/js]

    こんな感じで独自の関数を定義できます。コードの再利用が簡単になるので、覚えておいて損はないです。
    return thisを返しておくと、メソッドチェーンができるようになるので、忘れずに入れましょう。

  • 学び処 立志塾様のサイトを制作させて頂きました。

    学び処 立志塾 | 長野県松本市 完全1対1個別指導の学習塾です

    この度、学び処 立志塾様のウェブサイトの新規立ち上げさせて頂きました。
    細かい気遣いが売りだということだったので、サイトの方もいろいろと細かい事をしています。

    技術的なことを言うと、
    jquery hashchange eventでページ遷移は実現しています。
    サイドバーはcss3のtransitionです。やっぱり軽快ですね。
    またブログなんかはカスタム投稿やカスタム分類使ってみたり。

    松本市在住で中高生のお子さんが居らっしゃる方は是非一度ご覧くださいm(_ _)m

  • jQueryで他のページの情報を読み込む

    jQueryでAjaxをやるのって実際とても簡単なのです。
    RSSリーダーやTwitterのFeed等を簡単に遅延読み込みとかできたり、ページ遷移無しに他のコンテンツをロードなど、色々できてしまいます。

    load( url, data, callback )

    超お手軽Ajax関数です。urlのページを表示します。また、urlの後ろにスペースを空け、続けてセレクタを書くと、その要素だけとってくることができます。

    [js]
    $("#loadArea").load("/hoge/ #hogehoge ul");
    [/js]

    で、/hoge/の
    [html]
    <div id="hogehoge">
    <ul>
    <li>list1</li>
    <li>list2</li>
    <li>list3</li>
    </ul>
    </div>

    [/html]

    ul以下を#loadAreaに表示します。

    簡単ですよね?

    jQuery.ajax()

    jQueryでAjaxをやるときの親玉的存在です。
    .load()のような手軽さは無いですが、色々細かい設定ができます。

    [js]
    $.ajax({
    url: /hoge/,
    context:this,
    success:function(loadData){
    var dataDom = $(loadData);
    $(‘#hoge’, dataDom).appendTo("#loadArea");
    },
    error:function(){
    $("#loadArea").html("エラーが発生しました");
    }
    });
    [/js]

    loadDataには、取得したテキストデータが格納されています。

    また、jQuery1.5から
    [js]
    $.ajax({ url: "/hoge/" })
    .success(function() {console.log("success");})
    .error(function() {console.log("error"); })
    .complete(function() {console.log("complete");});
    [/js]

    のような書き方ができるようになったみたいです。解りやすいですねー。
    また、xmlとかもdataTypeを指定するととってこれるので、他のAPIとかとの連携も楽ちんです。

    jQueryを使うとAjaxとかが、思いの外簡単にできてしまいます。これであなたも楽しいAjaxライフを満喫できること間違いなし!