2017-09-05 5 views
-2

J'ai des difficultés à faire planer des éléments sur un périphérique mobile.Comment faire des liens, des boutons et des divs sur un mobile?

Dans mon CSS, je tape quelque chose comme:

.button:hover { 
    background-color: #fff; 
} 

Cela semble planer bien sur mon bureau, mais sur mon iPhone et d'autres appareils tactiles, je ne peux pas sembler faire le vol stationnaire bouton.

+4

Les appareils mobiles ne sont pas: hover – TylerH

+0

Comme il est pas de curseur de la souris, vous ne pouvez pas passer un bouton sur les appareils mobiles. Cependant, vous pouvez utiliser .activate correctement pour définir une couleur d'arrière-plan comme ceci: '.button: activate {...}' – WebGuy

+0

Voir https://stackoverflow.com/questions/2427447/does-css-hover-work-on -mobile-devices – TylerH

Répondre

2

Il n'y a pas d'événement hover sur mobile, vous pouvez définir le comportement du vol stationnaire et cela fonctionnera sur le bureau. Mais sur mobile, vous ne verrez ce pointeur que par un clic/toucher.

0

Les indicateurs signifient une chose sur l'autre. dans ce cas, c'est le curseur de la souris sur le bouton HTML ou tout autre élément que vous utilisez.

Dans le cas d'un téléphone, il n'y a pas de curseur de la souris. C'est toujours un clic. Les survols dans la plupart des cas ne s'affichent que sur un clic ou un toucher. Si vous en avez vraiment besoin, vous pouvez essayer le Javascrit onclick() ou d'autres fonctions, alors quand ils cliquent ou touchent, vous pouvez ajouter un peu de quelque chose.

+0

J'ai vérifié les deux liens sur mon navigateur Chrome 5.5 android 7 et ils ont tous agi de la même manière. L'arrière-plan change après que je clique. Pendant que je tiens le clic, l'arrière-plan ne change pas. La meilleure raison et l'explication que je peux donner est que les appareils et les navigateurs réagissent différemment à ces choses.Alors que certains peuvent essayer autant que possible de reproduire des expériences, d'autres savent juste que les deux appareils ne sont pas identiques et les séparent. donc mon conseil est de mettre l'accent sur les caractéristiques universelles que quelques-uns. Les leviers ne fonctionnent pas comme ça. Vous devrez utiliser javascript pour jouer le tour comme je l'ai dit. – mw509

+0

vous pouvez effectuer quelques tests sur ce site, il simule plusieurs instances pour vous [link] (http://www.mobilephoneemulator.com/) – mw509

0

Pour une solution très rapide de ce problème avec jQuery/CSS, j'ai fait ce qui suit.

  1. a écrit des styles pour mon élément comme celui-ci:

    .one-block:hover, .one-block.hover { ... } 
    
  2. a positionné:

    .one-block { position: relative; } 
    
  3. ajouté le dernier élément de ce bloc ->.mobile-mask:

    <div class="one-block"> 
        .... 
        <div class="mobile-mask"></div> 
    </div> 
    
  4. positionné .mobile-mask:

    .mobile-mask { 
        position: absolute; 
        top: 0; 
        bottom: 0; 
        left: 0; 
        right: 0; 
    } 
    
  5. cacher pour non-mobile (cette partie n'est pas du tout précis: juste avec css. si vous détectez des appareils mobiles par d'autres moyens et, par exemple, donnez une classe à un corps, ce sera plus précis. dans ce cas, je juste besoin d'une solution rapide):

    @media (min-width: 681px) { 
        .mobile-mask { 
        display: none; 
        } 
    } 
    
  6. créer javascript qui va ajouter/supprimer .hover classe:

    $('.mobile-mask').on('click', function(){ 
        $('.list .mobile-mask').show(); 
        $('.list .one-block').removeClass('hover'); 
        $(this).hide(); 
        $(this).parent().addClass('hover'); 
    }); 
    $(window).on('resize', function(event){ 
        var windowWidth = $(this).width(); 
        if(windowWidth > 680){ 
        $('.list .one-block').removeClass('hover'); 
        } 
    });