【问题标题】:CSS :focus Not Working in iOSCSS :focus 在 iOS 中不起作用
【发布时间】:2015-08-15 13:15:16
【问题描述】:

我有一个盒子,里面有一张图片。在悬停/聚焦时,我想要一个颜色叠加层和标题淡入它。它在几乎所有浏览器和设备上都能完美运行,除了 iOS 设备。

我同时使用 :hover 和 :focus 伪类来适应各种设备,但它似乎对 iOS 没有帮助。鼠标悬停时没有任何反应。

这是我的代码,我还有一个功能齐全的fiddle

* {
  padding: 0;
  margin: 0;
}
.my_image {
  float: left;
  width: 50%;
  margin: 0;
  padding: 0;
  position: relative;
}
.my_image p {
  position: absolute;
  color: #fff;
  display: block;
  padding: 0;
  margin: 0;
  opacity: 0;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  /* IE 9 */
  -webkit-transform: translate(-50%, -50%);
  /* Safari and Chrome */
  -webkit-transition: opacity .25s ease;
  -moz-transition: opacity .25s ease;
}
.overlay {
  top: 0;
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(121, 87, 164, .80);
  text-align: center;
  opacity: 0;
  -webkit-transition: opacity .25s ease;
  -moz-transition: opacity .25s ease;
}
.my_image:hover .overlay,
.my_image:hover p,
.my_image:focus .overlay,
.my_image:focus p {
  opacity: 1;
  visibility: visible;
}
<div class="my_image">
  <img src="https://unsplash.imgix.net/photo-1428976365951-b70e0fa5c551?fit=crop&fm=jpg&h=225&q=75&w=350" />
  <div class="overlay"></div>
  <p>Overlay Caption</p>
</div>

有没有什么方法可以在没有 JS 的情况下完成这项工作?我在页面上使用jQuery,所以我并不完全反对,我只是认为没有必要。

【问题讨论】:

标签: jquery ios css


【解决方案1】:

我在元素中添加了 tabindex="0",它似乎接受了焦点。

【讨论】:

    【解决方案2】:

    post Sergey Denisov shared 中的解决方案有效。您只需将 ontouchstart="" 添加到 body 元素,它就会神奇地工作,如下所示:

    <body ontouchstart="">
    ...
    </body>
    

    就是这样!无法告诉你它是如何或为什么起作用的,但确实如此。

    【讨论】:

    • 这个技巧在 iOS 10 上的 Safari 和 Chrome 中似乎不再适用了。
    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2023-03-31
    • 2023-04-02
    相关资源
    最近更新 更多