0

次のコードがあります

html

<a href="#" class="button">button</a>

<div class="holder">

    <img src="http://placehold.it/350x150" />
    <div class="content">
        <h3>hello there</h3>    
        <a href="#">view more</a>        
    <div/>    

</div>

CSS

.holder {
    margin-top: 130px;
    position: relative;
}
img {    
    position: relative;
    display: block;
    transition: -webkit-transform 0.5s;
    transition: -moz-transform 0.5s;
    z-index: 10;
}
.content {
    background: blue;
    height: 100%;
    color: white;
    z-index: 1;
    position: absolute;
    top: auto;
    bottom: 0;
}
a {
    color: white;
    background: red;
    padding: 10px;
}

.holder:hover img {
    -webkit-transform: translateX(90px);
    -moz-transform: translateX(90px);
}
.button {
    background: green;
    position: absolute;
    top: 10px;
}

JQuery

   if (Modernizr.touch) {
    alert("touch support");
}

else {
     alert("no touch support");

    $('.button').toggle(
     function(){
             $('img').css({
              '-webkit-transform' : 'translateX(90px)',
               '-moz-transform' : 'translateX(90px)'                 
             }); 
    },
    function(){
     $('img').css({
             '-webkit-transform' : 'translateX(-90px)',
             '-moz-transform' : 'translateX(-90px)'                 

            }); 
    });
}

モダナイザーを使用してタッチ デバイスを検出しています。このコードでは、ユーザーが画像に.contentカーソルを合わせるとクラスが明らかになり、ホバーはタッチデバイスではうまく機能しないため、タッチデバイス用のjqueryで複製しようとしています.(jqueryコードを確認するために、動作するコードを書きました非タッチデバイスで)

私の質問は、1)このコードは正しいですか、2)クリックで画像の位置を変更するようにjqueryコードが書かれています。その代わりに、ボタンが消えます。

これは私が純粋なcssで行ったことです-> jsfiddle-css

これは、動作しないjqueryで複製しようとしているものです-> jqueryでjsfiddle

4

2 に答える 2

1

これは方法かもしれません:

if (Modernizr.touch) {
    alert("touch support");
} else {
    alert("no touch ");
    var cssChanged = false; // remember wether the css has been changed
    // Note: I use true/false, but you could also use a counter, so you can make each Nth click do something
    $('.button').click(function(){
        if(cssChanged===false)
            $('img').css({
                 '-webkit-transform' : 'translateX(90px)',
                 '-moz-transform' : 'translateX(90px)'                 
             });
            cssChanged = true; // remember css has been changed
        }
        else{
          $('img').css({
                 '-webkit-transform' : "",
                 '-moz-transform' :""                
             });
            cssChanged = false; // set var back to unchanged
        }
    });
}
于 2013-06-25T10:06:27.697 に答える