Javascript 删除移动设备上的:悬停事件

Javascript 删除移动设备上的:悬停事件,javascript,jquery,css,sass,Javascript,Jquery,Css,Sass,我的:hover事件正在网站上运行,但当您在移动设备上使用该系统时,我遇到了一个问题 有没有办法在css或js中删除它?我试过很多东西,但运气不好 我尝试了Modernizer.com和媒体查询,但没有成功 我的sass代码: ul { li { padding: 20px; &:hover { background-color: $red; color: $black; } } } @media

我的
:hover
事件正在网站上运行,但当您在移动设备上使用该系统时,我遇到了一个问题

有没有办法在css或js中删除它?我试过很多东西,但运气不好

我尝试了Modernizer.com和媒体查询,但没有成功

我的sass代码:

ul {
    li {
      padding: 20px;
       &:hover {
        background-color: $red;
        color: $black;
      }
    }
  }
@media (max-width: $screen-sm-min) {
  ul {
    li {
      &:hover {
        color: inherit; 
        cursor: pointer;
      }
    }
  }
}
$screen-sm-min: 768px;
媒体查询:

ul {
    li {
      padding: 20px;
       &:hover {
        background-color: $red;
        color: $black;
      }
    }
  }
@media (max-width: $screen-sm-min) {
  ul {
    li {
      &:hover {
        color: inherit; 
        cursor: pointer;
      }
    }
  }
}
$screen-sm-min: 768px;
sass mq变量:

ul {
    li {
      padding: 20px;
       &:hover {
        background-color: $red;
        color: $black;
      }
    }
  }
@media (max-width: $screen-sm-min) {
  ul {
    li {
      &:hover {
        color: inherit; 
        cursor: pointer;
      }
    }
  }
}
$screen-sm-min: 768px;
您可以将CSS媒体查询用于交互功能,但它们相对较新,iOS9+和Android 5+:

您可以使用仅应用此功能可用的
:hover
样式

/*:悬停现在只能在Edge、Chrome、Safari 9+中使用*/
@媒体(悬停:悬停){
.您的选择器:悬停{
颜色:红色;
}
}

或者,如果您现在需要更广泛的支持,请在可能的情况下仅删除
:hover

/*:将在iOS 9+和Android 5+中删除悬停*/
.您的选择器:悬停{
颜色:红色;
}
@媒体(悬停:无){
.您的选择器:悬停{
颜色:旧颜色;
}
}

如果您想要更广泛的支持,您需要通过javascript检测触摸功能。一个相当标准的方法是:

/*将类添加到*/
var isTouch='ontouchstart'在窗口中;
document.documentElement.className+=isTouch?'touch':'no touch';
/*仅在无触摸类存在时使用悬停*/
1.禁止触摸{
.您的选择器:悬停{
颜色:红色;
}
}

将最后一个解决方案与代码一起使用:

ul {
  li {
    padding: 20px;
     .no-touch &:hover {
      background-color: $red;
      color: $black;
    }
  }
}
您可以将CSS媒体查询用于交互功能,但它们相对较新,iOS9+和Android 5+:

您可以使用仅应用此功能可用的
:hover
样式

/*:悬停现在只能在Edge、Chrome、Safari 9+中使用*/
@媒体(悬停:悬停){
.您的选择器:悬停{
颜色:红色;
}
}

或者,如果您现在需要更广泛的支持,请在可能的情况下仅删除
:hover

/*:将在iOS 9+和Android 5+中删除悬停*/
.您的选择器:悬停{
颜色:红色;
}
@媒体(悬停:无){
.您的选择器:悬停{
颜色:旧颜色;
}
}

如果您想要更广泛的支持,您需要通过javascript检测触摸功能。一个相当标准的方法是:

/*将类添加到*/
var isTouch='ontouchstart'在窗口中;
document.documentElement.className+=isTouch?'touch':'no touch';
/*仅在无触摸类存在时使用悬停*/
1.禁止触摸{
.您的选择器:悬停{
颜色:红色;
}
}

将最后一个解决方案与代码一起使用:

ul {
  li {
    padding: 20px;
     .no-touch &:hover {
      background-color: $red;
      color: $black;
    }
  }
}

虽然您已经尝试过媒体查询,但我还是会让您知道这是可能的。请共享您的代码我用代码编辑我的问题。为什么您不只将悬停样式应用于所需的宽度,而不是将其应用于所有宽度,然后尝试撤消它们?尽管您已经尝试过媒体查询,尽管如此,我还是会让你知道这是可能的。请分享你的代码。我用代码编辑我的问题。你为什么不只在你想要的宽度上应用悬停样式,而不是在所有宽度上应用它们,然后尝试撤销它们?我学到了一些新东西-谢谢。从未使用媒体查询的互动功能-我将从现在开始!我学到了一些新东西——谢谢。从未使用媒体查询的互动功能-我将从现在开始!