カテゴリー: HTML

  • jQuery.uploadでアップロード画像のサムネイルの作成

    Ajaxを使ったメールフォームとかってやっぱり素敵ですよね。
    以前仕事で写真投稿付きのフォームを作らざるを得なかったので、どうせならということでAjax化しました。
    というわけでjQuery.uploadを使って写真をアップロードして、サムネイルを表示するチュートリアルです。

    2011-12-03追記:デモ作りました。jQuery.uploadを使ったフォームのデモを作りました。

    (さらに…)

  • wordpressでGoogle Libraries APIのJQueryを使う

    サイトの高速化を図るためにGoogleにホスティングされているjqueryを使いたいとき、WordPressのデフォルトのjQueryが邪魔で仕方ないことが結構ありまして。。。
    そんな時functions.phpで少しのコードを書くだけでどうにでもなります。

    [php]
    //Replace jQuery
    function rep_jQuery(){
    if (!is_admin()) {
    wp_deregister_script(‘jquery’);
    wp_enqueue_script(‘jquery’,’http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js’);

    wp_deregister_script(‘jquery-ui-core’);
    wp_enqueue_script(‘jquery-ui-core’,’http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js’);
    }
    }

    add_action(‘init’,’rep_jQuery’);
    [/php]

    管理画面でも使いたい場合はif文を外してもらえば全てに適応されます。

    この例だと、jquery1.5系と、jQuery UIの1.8系の最新版が読み込まれます。
    その他細かい仕様等はGoogleさんに聞いてみてください、
    http://code.google.com/apis/libraries/devguide.html

  • jQueryでフォームのバリデート

    bassistance.de » jQuery plugin: Validation
    とかjQueryでフォームの入力チェックのプラグインは高機能なものがあるのですが、勉強ついでに作ってみました。

    (さらに…)

  • jQuery hashchange eventを使ったテーマ。

    jQuery hashchange eventを使ったWordPressテーマを作成してみました。

    デモサイトはコチラ

    一応HashLogなんていうそのまんまな名前です。
    Ver0.1というアルファバージョンです。一応CSS周りはIE7までOKのはずです。
    WordPress3以上対応です。

    制作の元ネタにでもして頂けたらと思います。

    ダウンロードはこちらからどうぞ。
    hashlog

    これだけではちょっとあれなのでJS周りのソースを張っておきます。

    [php]
    <script type="text/javascript" src="<?php bloginfo( ‘stylesheet_directory’ ); ?>/js/jquery.ba-hashchange.min.js"></script>
    <script type="text/javascript" src="<?php bloginfo( ‘stylesheet_directory’ ); ?>/js/jquery.easing.1.3.js"></script>

    <script type="text/javascript">
    var blogUrl = "<?php bloginfo( ‘url’ ); ?>";
    </script>

    <script type="text/javascript">

    //ハッシュ付にリダイレクトさせる。
    if ( location.href != blogUrl+"/") {
    var index = location.href.indexOf(blogUrl+"/#",0);
    if(index < 0){
    var goHash = location.href.replace(blogUrl, ”);
    location.href =blogUrl+ ‘#’ + goHash;
    }
    }

    jQuery(function($){

    //hrefをハッシュ付に変更
    function changeHref(){
    $("#contentsArea a,#siteId a,#widgetArea a").each(function(){
    var setHref = $(this).attr("href").replace(blogUrl, ‘#’);
    if(setHref.match(/^\//)){
    setHref = "#"+setHref;
    }

    $(this).attr({href:setHref});
    });
    }
    changeHref();

    //Ajaxで変更する部分
    var contentsArea = $("#contentsArea");
    contentsArea.css({height:0,opacity:0,marginBottom:0});

    var nowHash = "";
    $(window).hashchange(function() {
    var setHash = location.hash.replace(‘#’, ”);
    //for Front Page
    if(!setHash){
    setHash = "/?p=0";
    }
    //ページ内リンク(コメントの返信は除く)
    if(setHash.indexOf("#",0)>-1 && setHash.indexOf("respond",0)<0){
    var sel = setHash.match(/(#.+)$/);
    var target = $(sel[1]).offset().top;
    $(‘html,body’).delay(100).animate({ scrollTop: target }, 200,"easeOutQuart");

    }else{

    //コンテンツの削除
    contentsArea.animate({height:0,opacity:0,marginBottom:0},200,function(){
    //ロード
    $(this).hide().load(setHash+" #contents",function(){
    //表示
    $(this).delay(200).show().animate({height:$(this).find("#contents").height(),opacity:"1",marginBottom:"36px"},200,"easeOutQuart",function(){
    changeHref();
    //コメントの返信だった場合の処理
    if(setHash.indexOf("respond",0)>-1){
    var respondOffset = $("#respond").offset().top;
    $(‘html,body’).delay(100).animate({ scrollTop: respondOffset }, 200,"easeOutQuart");

    }

    });
    });
    });
    }
    nowHash = setHash;

    });

    //検索フォーム
    $("form").submit(function(){
    var s = $("#s").val();
    location.href = ‘/#/?s=’+s;
    return false;

    });

    $(window).hashchange();

    });
    </script>

    [/php]

    という感じでWordPressとの連携をとっています。トップページの記事はパラメーターにp=0を入れて表示しています。page_idやp等に存在しない値を放り込むとトップページの内容を表示することを利用しています。
    空白だといまいちうまくいきませんでしたので、こんなおかしなことをやっています。

    indexOfとmatchとか色々混在していて見づらいソースですが、そこはご愛敬ということで、ご勘弁下さい。徐々に直していこうと思いますので。

  • jQuery hashchange event を使ってみた。

    昨日やっていたHTML5とJavaScriptの切っても切れない関係/CPI x CSS Nite「After Dark」(1)で紹介されていたjQuery hashchange event のデモを早速作ってみました。

    https://torounit.com/demo/hashtag/

    1/24:スクリプトエラーを修正しました。

    制作に当たっては5509様のところの
    Ajaxやタブ切替には必須かも?ブラウザの「戻る」「進む」を有効にするjQueryのhashchangeプラグイン
    を参考にさせてもらっていますです。

    [js]
    $(function(){
    $(window).hashchange(function() {
    $("hoge").load(location.hash.replace(‘#’, ”)+ "hogehoge");
    });
    $(window).hashchange();

    $("a").each(function(){
    var setHref = $(this).attr("href").replace("http://hoge.com", "#");
    $(this).attr({href:setHref})
    });

    });

    [/js]

    のように使います。

    追記:学び処 立志塾様のサイト制作で活用させて頂きました。

    aタグのhrefのドメインを削除して代わりに#を入れています。これで、画面遷移が無くなります。
    ソースに直接#を書くとjs非対応の場合に不都合が出てくるので、jsで置換します。
    js無しの場合は普通にリンクで飛ぶようにしてあげています。

    このやり方だと、直接内部のページに飛んだときにjsで#付きにリダイレクトさせてあげる必要があります。

    また、ソースに記述する場合、#の代わりに#!を用いると、Googleはトラッキングしてくれるようです。サイトによって選択してゆく必要がありそうですね。
    ただし、そんな必要があるのってtwitterのようなwebアプリとかですかね。

    やはり画面遷移を無しにコンテンツを見せることができるというのはかなり大きなメリットになるのではないですかね。。。

    しかし、これhashchangeって言うんですね。知らなかった。というか、名前がわからないからどう調べていいかわからなかったという。。。

  • 投稿時にカテゴリが複数のときアラートを出す

    WordPressをCMSとして使うとき、カテゴリが複数セットされていたり、未選択の場合などが考えられます。
    意外にあれに苦しむことがあるので、functions.phpで対応しようと思います。

    (さらに…)

  • HTML5の勉強

    会社で、研修生とアシスタントさん向けのHTML5のお話をしたときの参考資料。

    HTML5についてのおさらい
    http://w3g.jp/blog/studies/html5report
    続HTML5についてのおさらい
    http://w3g.jp/blog/studies/html5report2
    HTML4から変化したHTML5のマークアップ ここが違う!サンプルで見るHTML5(2)
    http://codezine.jp/article/detail/5600

    セクショニングの考え方をメインにやったので、自分のためのメモとして・・・

    (さらに…)

  • ie9.jsが便利すぎる。

    ie7-js – Project Hosting on Google Code
    に有る、ie9.jsがとても便利です。

    js非表示のクライアントはどうするって話もあるので、それはCase by Caseってことで。。。。

    (さらに…)

  • floatさせた要素、inline-blockの高さをそろえる。

    display:boxはまだまだ実装が微妙だし、display:inline-blockやfloatだと、要素の高さ自体は変わらなくてborderとかbackgroundを使ったときいまいち困ったり。

    というわけでそんなとき用のjs。相変わらずjQueryです。

    (さらに…)

  • bodyをWrapperとして使う

    ここ数年の流行りとして、wrapperがよくある。

    けれどもbody要素をwrapperに代換することはできないだろうかと。

    で、検証。

    margin = 有効
    padding = 有効
    width = △

    環境はfirefox3.6です。一応他のブラウザでも大体一緒の実装です。

    bodyのwidthは内部コンテンツの横幅などに対しては有効。
    background等bodyのボックス要素そのものの指定に対しては無効。といった感じです。

    wrapperの部分にのみ背景が当たっている、<center>の代わりwrapperを使っているようなレイアウトの場合、一考の余地があるのではないかなと思います。

  • Lightboxをいろいろ試してみた。

    僕が運営するサイトのリニューアルにLightboxでスライドショーを作ったり、いろいろしたかったので、たくさんスクリプトを試してみた。


    Lightbox2

    定番です。

    Shadowbox

    設置方法はコチラに。
    http://www.two-hearts.net/2009/05/shadowboxjs-version-30b.html

    [xhtml]
    <link rel="stylesheet" type="text/css" href="shadowbox/shadowbox.css" />
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="shadowbox/shadowbox.js"></script>
    <script type="text/javascript">
    Shadowbox.init({
    language: "en",
    players: ["img","swf"]});
    </script>
    [/xhtml]

    で、
    [xhtml]<a href="movie.swf" rel="shadowbox;width=500;height=375"><img src="images/movie.jpg" /></a>[/xhtml]
    とかで動いてくれます。

    ImageMapやFLASHにも対応してるのはかなり高得点。protopypeやJqueryなど6種類のライブラリを使えるのはすごい。

    languageをjaにすると、“Next”とかが“次へ”になりますが、エンコードがuft-8じゃないとダメらしい。

    Multibox

    これもFlash等に対応してて使いやすい。

    何故かPHPと一緒に使うと、いらないスクロールバーがfirefoxとOperaで出て断念しましたが。

    スライドショーのグループ化?的な事が出来ないのがちょっと難点。アニメーションはとても綺麗。

    Fancybox

    軽い。Jquery系。Youtube等も読める。

    prettyPhoto a jQuery lightbox clone

    Jquery系。角が丸いのがオサレ(笑)
    コチラもかなりたくさんの形式に対応しております。若干重い気もしますが。

    とりあえず、ShadowBoxが使えれば大体OKなんじゃないかと、思ってみたり。

  • HTML5を少し勉強してみる。

    HTML5が来年の秋に正式勧告されるし、主要ブラウザも対応してきた(IE?なんのこと?w)のでちょっとそれでサイトを組んでみようかと思っていたり。

    サイトによっていろいろ違うのでいまいちピンと来なかったのですが、こんなの見つけました。

    http://web.g.hatena.ne.jp/keyword/article

    独立可能=フィードで配信出来る

    これは大きなヒント。おそらく、ナビゲーションとか、広告とか、そういうページの”本文”的な部分に使うのが、article

    で、その中の項目、往々にして見出しを含む、ものがsectionってところかや?

    とりあえず、
    [html]
    <body>
    <header>
    <h1>Site Name</h1>
    </header>

    <nav>
    <ul>
    <li><a href="#">navi1</a></li>
    <li><a href="#">navi2</a></li>
    <li><a href="#">navi3</a></li>
    </ul>
    </nav>

    <article>

    <section>
    <h2>Title1</h2>
    <p>…</p>
    </section>

    <section>
    <h2>Title2</h2>
    <p>…</p>
    </section>

    </article>
    <aside>…</aside>
    <footer>…</footer>
    </body>
    [/html]
    的なマークアップになる感じですね。

    移行するのが大変なんですけど、コードの終わりの方の</div></div>・・・・・・から解放されるというだけで十分なメリットが。