Archive for the ‘JS’ Category

スワイプ的なやつ

木曜日, 12月 22nd, 2011

やってみた

//MOUSE ACTIONS
var xx = 0,now = 0,
index,
len = img_arr.length;

$page.on("mousedown",onDowmEvent);
$page.on("mouseup",onUpEvent);

//MOUSE DOWN
function onDowmEvent(evt){
    $page.on("mousemove",onMoveEvent);
    $page.on("mouseleave",onLeaveEvent);
    now = $top.position().left;
    xx = evt.pageX;
    myevent.stop(evt);
}

//MOUSE MOVE
function onMoveEvent(evt){
    $top.stop().animate({
        "left" : now + evt.pageX - xx
    },0);
}

//MOUSE LEAVE
function onLeaveEvent(evt){
    onUpEvent(evt);
}

//MOUSE UP
function onUpEvent(evt){
    $page.off("mousemove",onMoveEvent);
    $page.off("mouseleave",onLeaveEvent);
   
    //NEXT
    if((xx - evt.pageX) > 100){
        if(ite2.current() != ite2.last()){
            ite2.next();
            $top.stop().animate({
                "left" : ite2.current() * -$width
            },300);
        }else{
            $top.stop().animate({
                "left" : now
            },300);
        }
       
    //PREV
    }else if((xx - evt.pageX) < -100){
       
        if(ite2.current() !== ite2.first()){
            ite2.prev();
            $top.stop().animate({
                "left" : ite2.current() * -$width
            },300);
        }else{
            $top.stop().animate({
                "left" : now
            },300);
        }
   
    //NO EXIST NEXT or PREV
    }else{
        $top.stop().animate({
            "left" : now
        },300);
    }
}

[mousedown]で preventDefaul tなり returnValue = false なりをしておかないと、画像をドラッグしちゃう

[mousedown]時のpageX値を格納して、[mousemove]時のpageXとの差分を出して実装

[mousemove]は[mousedown]時に登録[mouseup]で解除する

念のために[mouseleave]を登録しておく

「ite2」って単なる数字の入ったiterator

スワイプ的なやつ

※PCでのスワイプ的なやつってことで

mousewheelメモ

月曜日, 11月 21st, 2011

JSのmousewheelのやつ

window.onload = function(){
   
    if(window.addEventListener){
        window.addEventListener("DOMMouseScroll",scrollEvent,false);
    }
    document.onmousewheel = scrollEvent;
   
    var delta = 0;
   
    function scrollEvent(evt){
        if(!evt){
            evt = window.event;
        }
       
        //1スクロール 12px
        if(evt.wheelDelta){
            delta += evt.wheelDelta / 10;
        }else if(evt.detail){
            delta += evt.detail * -4;
        }
       
        if(evt.preventDefault){
            evt.preventDefault();
        }else{ 
            evt.returnValue = false;
        }
    }
}

だとさ

coffeescriptインストール時にしくった

火曜日, 11月 8th, 2011

coffeescriptが流行ってるらしいのでさくらVPSにぶっこんでみた

npm install coffee-script

を叩いて、test.coffeeつくって

coffee test.coffee

とやると「coffeeなんてコマンドねぇぞ!」って言われる

nvmでnode.jsを管理しているから?ということで

npm install -g coffee-script

でインスコしたらでけた

そんだけっす。

history api

火曜日, 10月 11th, 2011

history apiのさわり

twitterとかでみるハッシュフラグメントURL(?)のやつ

とりあえずやってみた

html

<div id="content">index page</div>
<div id="main">
    <p><a href="#!/guide" title="guide">guide</a></p>
    <p><a href="#!/company" title="company">company</a></p>
    <p><a href="#!/products" title="products">products</a></p>
    <p><a href="#!/news" title="news">news</a></p>
    <p><a href="#!/contact" title="contact">contact</a></p>
    <p><a href="#!/member" title="member">member</a></p>
    <p><a href="#!/privacy" title="privacy">privacy</a></p>
</div>

JavaScript

window.onload = function(){
    var m = document.getElementById("main");
    var d = document.getElementById("content");
   
    addEvent(window,"popstate",changeContent);
   
    function changeContent(){
        switch(location.hash.split('#!/')[1])
        {
            case "guide":
            setElement(d,"ガイド");
            break;
            case "company":
            setElement(d,'会社');
            break;
            case "products":
            setElement(d,'製品');
            break;
            case "news":
            setElement(d,'ニュース');
            break;
            case "contact":
            setElement(d,'お問い合わせ');
            break;
            case "member":
            setElement(d,'メンバー');
            break;
            case "privacy":
            setElement(d,'プライバシー');
            break;
            default:
            setElement(d,'HISTORY API TEST');
            break;
        }
    }
}

function setElement(target,arg){
    document.title = arg;
    target.innerHTML = arg;
}

/**********************************************************
*   クロスドメイン用イベントリスナ登録関数
*   @param {String} target  ターゲットエレメント
*   @param {String} name    イベントタイプ
*   @param {String} fn      登録するイベント
***********************************************************/

function addEvent(target,type,fn){
    if(window.addEventListener){
        addEvent = function(target,type,fn){
            target.addEventListener(type,fn,false);
        }
    }else{
        addEvent = function(target,type,fn){
            target.attachEvent('on' + type, fn);
        }
    }
   
    addEvent(target,type,fn);
}

でとりあえずタイトル部分も変更できてる

popstate

はハッシュ値変更した場合に発火するのです。

登録したイベント内でハッシュ値から表示するエレメントだったりをわけたらいいんじゃないって感じで。

IEでうんともすんともならん…

IEのために

    //IE用
    if(navigator.userAgent.match(/MSIE/)){
        changeContent();
        var a = m.getElementsByTagName("a");
        for(var i = 0;i < a.length;i++){
            addEvent(a[i],"click",clickContent);
        }
    }
   
    function clickContent(evt){
        var arr = evt.srcElement.href.split('/');
        location.hash = '!/' + arr[arr.length - 1];
        changeContent();
    }

を追加して対応したらでけた

サンプル

オートローダーっぽいの

水曜日, 8月 24th, 2011

forked: flicker test – jsdo.it – share JavaScript, HTML5 and CSS

フルスクリーンの方が見やすいです

JSブラウザの判定

木曜日, 8月 11th, 2011

JSでブラウザ毎に解釈が違うっていうことで、

悩んでました

jQueryのscrollTopで現在地のyを知りたいだけなのに、

クソ面倒だったので、メモしておく。

自作モーダルを作ってて、ほんと、いやになっちゃくくらい分岐が激しいのです。

 

// Determine the browser
if(navigator.userAgent.indexOf("MSIE") != -1){
    // IE
    if (typeof document.body.style.maxHeight != "undefined") {
        // IE7, IE8 more
        if(document.documentMode >=8){
            // IE8 more
            var top = $("html");
        }else{
            // IE7
            var top = $("html,body");
        }
    } else {
        // IE6
        var top = $("html");
    }
}else if(navigator.userAgent.indexOf("Safari") != -1){
    // safari, chrome
    var top = $("body");
}else if(navigator.userAgent.indexOf("Firefox") != -1){
    // firefox
    var top = $("html");
}else if(navigator.userAgent.indexOf("Opera") != -1){
    //opera
    var top = $("html");       
}else{
    var top = $("html");
}

 

はぁ、ねぇ、IEだけでも、結構たいへんでしたー。