【问题标题】:CSS :valid :invalid behaves different when using the sibling selector in IECSS :valid :invalid 在 IE 中使用同级选择器时的行为不同
【发布时间】:2015-05-06 20:12:42
【问题描述】:

我有以下代码:

<style>
        input:valid ~ .test {
            border: 1px solid green;
        }

        input:invalid ~ .test {
            border: 1px solid red;
        }

        input:valid {
            border: 1px solid green;
        }

        input:invalid {
            border: 1px solid red;
        }
    </style>

    <input type="text" required />
    <div class="test">test</div>

现在,如果您开始在文本框中输入内容,验证应该修改输入和“测试”div 的边框。这在 Chrome 中有效,但是在 IE 中,只有在我点击其他地方时才会触发“测试”div 边框更改。

为什么这在 IE 中表现不同?以及如何使其正常工作

编辑:potatopeelings 的回答是正确的,但我的问题似乎过于简化了。

input:valid ~ small .actionEmpty {
            display: block;
        }

        input:invalid ~ small .actionEmpty {
            display: none;
        }

在显示 css 设置的情况下它似乎不起作用,无效的似乎起作用,而有效的并不奇怪。 mousedown 上的行为仍然存在

还有什么想法吗?

【问题讨论】:

  • 我这里没有最新的 IE 可以测试,但恐怕你必须求助于 JavaScript 来捕捉一些击键。
  • 这是 IE 处理输入行为的方式

标签: css internet-explorer siblings


【解决方案1】:

这似乎与:empty pseudo class issue with added/removed content and sibling combinators 非常相似(不过,这个是用于 + 组合器和 :empty 伪类的)。然而,一个类似的修复方法会起作用,即在 .test 元素上添加一个无限循环的动画 - 在样式部分的末尾添加它

input + .test {
    animation: repaint 1000s infinite linear;
}

@keyframes repaint {
    from { opacity: 1; }
    to { opacity: 0.99999; }
}

请注意,我将其从缩放(在链接的问题中)更改为不透明度。

【讨论】:

  • 很棒的家伙,这行得通,这不是最干净的方式,但我看不到任何其他方式
  • 好的,抱歉,我还没完全到那里,看看我的“编辑”部分
  • 只需将 input + .test 更改为 input + small - 我检查了 我的消息 并且有效。顺便说一句,我认为您交换了显示值(假设您正在尝试验证消息)
  • 就是这样!大声笑,它不起作用,因为我试图这样做:输入 + 小 .actionEmpty { 动画:重绘 1000 秒无限线性; } 认为这会起作用,但是是的,只是很小的工作正常 :D 非常感谢,至少现在我会睡得舒服;)
猜你喜欢
  • 2020-06-25
  • 2012-03-24
  • 2013-11-17
  • 2015-08-16
  • 2016-11-08
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多