Changing :hover to touch/click for mobile devices

后端 未结 9 1940
余生分开走
余生分开走 2020-11-28 19:43

I\'ve had a look around but can\'t quite find what i\'m looking for.

I currently have a css animation on my page which is triggered by :hover. I would like this to c

相关标签:
9条回答
  • 2020-11-28 20:27

    I am a CSS noob but I have noticed that hover will work for touch screens so long as it's a "hoverable" element: image, link, button. You can do it all with CSS using the following trick.

    Change your div background to an actual image tag within the div or create a dummy link around the entire div, it will then register as a hover when you touch the image.

    Doing this will mean that you need the rest of your page to also be "hoverable" so when you touch outside of the image it recognizes that info-slide:hover has ended. My trick is to make all of my other content dummy links.

    It's not very elegant but it works.

    0 讨论(0)
  • 2020-11-28 20:30

    You can add onclick="" to hovered element. Hover will work after that.

    Edit: But you really shouldn't add anything style related to your markup, just posted it as an alternative.

    0 讨论(0)
  • 2020-11-28 20:35

    A CSS only solution for those who are having trouble with mobile touchscreen button styling.

    This will fix your hover-stick / active button problems.

    body, html {
      width: 600px;
    }
    p {
      font-size: 20px;
    }
    
    button {
      border: none;
      width: 200px;
      height: 60px;
      border-radius: 30px;
      background: #00aeff;
      font-size: 20px;
    }
    
    button:active {
      background: black;
      color: white;
    }
    
    .delayed {
      transition: all 0.2s;
      transition-delay: 300ms;
    }
    
    .delayed:active {
      transition: none;
    }
    <h1>Sticky styles for better touch screen buttons!</h1>
    
    <button>Normal button</button>
    
    <button class="delayed"><a href="https://www.google.com"/>Delayed style</a></button>
    
    <p>The CSS :active psuedo style is displayed between the time when a user touches down (when finger contacts screen) on a element to the time when the touch up (when finger leaves the screen) occures.   With a typical touch-screen tap interaction, the time of which the :active psuedo style is displayed can be very small resulting in the :active state not showing or being missed by the user entirely.  This can cause issues with users not undertanding if their button presses have actually reigstered or not.</p>
    
    <p>Having the the :active styling stick around for a few hundred more milliseconds after touch up would would improve user understanding when they have interacted with a button.</p>

    0 讨论(0)
提交回复
热议问题