【问题标题】:CSS Columns Bug — breaks in mobile while using the :checked pseudo classCSS Columns Bug — 使用 :checked 伪类时移动设备中断
【发布时间】:2012-02-27 20:00:39
【问题描述】:

我正在构建一个仅使用 CSS3 显示网格并过滤掉缩略图的投资组合网站。

You can see what I've done here.

我通过使用 this tutorial 和 :checked 伪类使过滤器功能正常工作。

网格是使用 css3 列创建的,以创建无缝的响应式照片网格。我用Chris Coyier's example

在大多数现代浏览器中一切正常,但在 iPhone 的移动 safari 中却中断了。经过进一步测试,它似乎也可以在 iPhone 的 Sleipnir 浏览器中中断,但在 Opera Mini 浏览器中可以正常工作。此外,它在适用于 iPad 的 iOS Safari 上执行完全相同的操作。

还需要注意的是,由于浏览器宽度较小,因此不会出现该错误。它适用于 Mac OSX Safari 5 上的小浏览器宽度。

现在解决问题: 在 iPhone 上查看时,一切看起来都很棒,直到您单击过滤器标签(网页设计、插图、字体、标识和打印)。点击标签后,什么都不会移动。只有缩略图的不透明度会改变。例如,单击“身份”后,右侧的列中断并且图像似乎消失了。现在,点击“全部”,图片会重新出现在右栏中,并且所有内容都与您第一次访问该页面时一样。

图像似乎位于第一列图像下方,位于页脚下方且看不见。

这是假设点击“身份”后的样子 — http://cl.ly/1M3F1t1N410s150h1o40

这就是它实际上现在的样子——http://cl.ly/0r1v0Z2c1f0I2U0X0T3m

更新: 从我的 CSS 中删除 list-style: none; 似乎改善了很多。我不知道为什么。虽然仍然不能完美地工作。一些缩略图仍在消失。会继续努力的。

更新 2: 我在两个运行本机浏览器的安卓平板电脑上测试了该网站。它似乎在android上做同样的事情。这真的很烦人,因为它只发生在 webkit(我认为)移动浏览器上。也许这与标签/输入有关。这是我能想到的唯一与移动浏览器不同的地方。我必须输入一些 javascript,以便 iOS Safari 允许标签上的触摸事件。默认情况下,iOS 不允许您触摸标签以选择输入(我正在使用隐藏的单选按钮)。我不知道为什么会在页面上移动图像。也许与缩放输入触摸功能有关?

更新 3: 可在此处找到的 Firefox 移动开发人员工具上工作:http://www.mozilla.org/en-US/mobile/。 这让我相信这绝对是一个移动 webkit 问题,而不仅仅是 iOS。

如果您有兴趣,这里是我用于 :checked 伪类缩略图过滤的代码。

.ff-container input{
display: none;
}

.ff-items li img{
display: block;
}

.clr {
clear:both;
}

.ff-items li{
opacity: 0;
-webkit-transition: opacity 0.2s ease-in-out;
        transition: opacity 0.2s ease-in-out;   
}

.ff-container input.ff-selector-type-all:checked ~ .ff-items li,
.ff-container input.ff-selector-type-1:checked ~ .ff-items .ff-item-type-1,
.ff-container input.ff-selector-type-2:checked ~ .ff-items .ff-item-type-2,
.ff-container input.ff-selector-type-3:checked ~ .ff-items .ff-item-type-3,
.ff-container input.ff-selector-type-4:checked ~ .ff-items .ff-item-type-4,
.ff-container input.ff-selector-type-5:checked ~ .ff-items .ff-item-type-5{
opacity: 1;
}

.ff-container input.ff-selector-type-1:checked ~ .ff-items li:not(.ff-item-type-1),
.ff-container input.ff-selector-type-2:checked ~ .ff-items li:not(.ff-item-type-2),
.ff-container input.ff-selector-type-3:checked ~ .ff-items li:not(.ff-item-type-3),
.ff-container input.ff-selector-type-4:checked ~ .ff-items li:not(.ff-item-type-4),
.ff-container input.ff-selector-type-5:checked ~ .ff-items li:not(.ff-item-type-5){
opacity: 0.1;
}

HTML 的一小部分: <li class="ff-item-type-1">
<a href="projects/emily-patridge/">
<img src="images/em_c.jpg" alt="Emily Patridge Website" /> </a>
</li>

【问题讨论】:

  • 一个友好的提醒,在您完成代码后尽可能填写其余的供应商前缀,这样其他供应商就不会感到被遗忘:)
  • 不确定到底发生了什么 - 右侧的缩略图实际上下降到底部,在左侧的缩略图下方,而不是完全消失。此外,当我旋转 iPhone 时,缩略图会回到正确的位置。
  • 你是对的。它们位于缩略图的左列下方。似乎它们位于页脚下方。
  • 更新了我的问题。我在 iPad 上测试了它,它也不起作用。它似乎只影响 iOS safari 和其他运行类似代码的移动浏览器。也许是 webkit?
  • 有人可以用安卓手机测试[test.davewhitley.com/not-wp/static_folder/index.php](我的网站),看看它是否只是iOS Safari?

标签: css grid mobile-safari pseudo-class


【解决方案1】:

好的...简短的回答是我通过消除css-columns 让它工作。我改为使用inline-block 创建网格,并使用vertical-align:middle 使其无缝。您也可以使用浮点数来制作网格。

在这里启动并运行:http://test.davewhitley.com/not-wp/debug/index.php

据我所知,css-columns + css opacity 过滤会导致 iOS 中一个非常模糊的错误。有趣的是它只在 iOS 中出现......我觉得再也没有人会遇到这个错误了,因为它太晦涩难懂了。

我很想有一天将它分解并提交错误......但我只听说过提交到 Safari,而不是 iOS Safari。

【讨论】:

    【解决方案2】:

    这是因为 :checked 仅在 Opera 浏览器中受支持。

    请参阅here 了解更多信息。

    【讨论】:

    • 关于 W3Schools 已经说得够多了,但是 W3Schools 在这里确实是完全错误的(或不合时宜的)。如果 WebKit 浏览器不支持它,那么它可能无法在 Mac 上的 Safari 上运行。
    • 真的吗?我以前从未经历过他们错了。但是,是的,您在 Safari 中看到它是对的。
    • 嗯,它很可能已经过时了 - :checked 已经在所有主流浏览器的最新版本中提供了不错的支持。
    • 我最困惑的是为什么它可以在桌面 Safari 而不是移动 Safari 上运行。
    • 我认为问题不是:checked 类的支持问题。我在我的 iPhone 上成功通过了测试here,所以 iOS Safari 似乎在某种程度上支持伪类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2018-11-30
    • 2019-07-22
    相关资源
    最近更新 更多