侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

在纯css的新悬停中结束正在运行的转换

2023-03-10 星期五 / 0 评论 / 0 点赞 / 75 阅读 / 2668 字

我试图结束(覆盖)纯CSS中的运行转换.尝试覆盖的css代码不起作用;它不仅被忽视,我无法解释这种行为. 下面是一个示例代码,其中包含3个链接,每个链接后跟1个div.之后再添加3个div用于测

... . . 我试图结束(覆盖)纯CSS中的运行转换.尝试覆盖的css代码不起作用;它不仅被忽视,我无法解释这种行为.

下面是一个示例代码,其中包含3个链接,每个链接后跟1个div.之后再添加3个div用于测试.

div {  background-color: white;  width: 50px;  transition: all;  transition-delay: 1s;}a:hover ~ div {  width: 50px;  color: red;}a:hover + div {  width: 100px;  transition-delay: 0s;}
<a>link 1</a><div>text 1</div><a>link 2</a><div>tekst 2</div><a>link 3</a><div>tekst 3</div><div>tekst 4</div><div>tekst 5</div><div>tekst 6</div>

>悬停在链接上时,由于选择器,只有第一个跟随div的宽度发生了变化.
>转换延迟使此悬停持续1秒.

问题是,当新的悬停发生时,我希望所有后续框中的所有悬停效果都终止.把它想象成一个菜单;当徘徊一个新的menupoint,我希望所有其他子菜单关闭,只有当前的子菜单打开.

>希望是〜选择器使所有后续div恢复到正常宽度,然后a:hover div可以扩展正确宽度.但这不起作用.

颜色:添加红色文本着色以进行测试.因为经过一些测试我发现问题不是〜选择器也不是css-order,而是转换.删除所有过渡线和结果完全符合预期,没有延迟.你可以在这里看到结果:

> Here is a fiddle与上述非工作代码,和
> here is a fiddle删除了过渡代码行,这一切都有效(但没有延迟).

没有转换代码行,所有后续div都会获得红色文本 – 底部还有三个额外的文本.但是对于转换代码行,它们不是红色的 – 实际上只有被覆盖的代码行是红色的,这意味着代码行不会被完全忽略,但不再作为〜选择器.

结论是过渡干扰.我显然无法阻止正在运行的转换,并且干扰的代码块表现出意外而不会被忽略.

导致这种情况的转换代码行的确切行为是什么?

对于那些好奇的我可以告诉我实际上在项目中我正在处理原始宽度,然后悬停为0.因此这个解决方案将起作用:

a:hover ~ div {  display:none;}

我没有尝试重置宽度,而是移除宽度,一切都很好.我宁愿问上面的问题要明白,问题是什么.

.

解决方法

. 你几乎就在那里,只需将过渡:none添加到你的a:hover~div

https://jsfiddle.net/e3p97ewj/

. . .. ...

广告 广告

评论区