热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS转换不在活动链接中工作

如何解决《CSS转换不在活动链接中工作》经验,为你挑选了1个好方法。

我对网站有一个奇怪的问题.我使用CSS3转换(translate)在按钮处于:active状态时产生"按下"效果.尽管我使用了所有供应商前缀(包括)和没有前缀的标准,但除了IE 11之外,所有浏览器都能很好地工作-ms-.有没有办法在IE 11中实现相同的效果?

#nav-bar li:not(.active-page):active {
    -webkit-transform: translate(4px, 4px);
    -moz-transform: translate(4px, 4px);
    -ms-transform: translate(4px, 4px);
    -o-transform: translate(4px, 4px);
    transform: translate(4px, 4px);
}

Sampson.. 7

注意:以下内容仅适用于Internet Explorer.Microsoft Edge中已解决此错误.

最终答案

如下面的评论中所述,原始(未提供)源在列表项中立即嵌套了锚点.以下应该是一个很好的例子:


重要的是要注意,CSS 2.1规范或Selectors Level 3模块都不会说明状态是否:active也适用于元素的父级:

CSS没有定义哪些元素可能处于上述状态,或者如何输入和保留状态.脚本可以改变元素是否对用户事件做出反应,并且不同的设备和UA可以具有指向或激活元素的不同方式.CSS 2.1没有定义':active'或':hover'元素的父元素是否也处于该状态.

- CSS 2.1规范,第5.11.3节

可能存在文档语言或实现特定限制,哪些元素可以变为:活动或获取:焦点... 选择器不定义元素的父级是否为":active"或":hover"是否也处于该状态.

- 选择器级别3,第6.6.1.2节

考虑到上述情况,我们并不期望所有浏览器不仅将:active伪类应用于当前正在激活的锚元素,而且还应用于锚的父元素.不幸的是,在这种情况下,Chrome和Firefox似乎冒泡了伪类,而Internet Explorer却没有.

虽然这不是规范实现中的错误,但我将为我们的团队打开一个Interop Bug(这些对我们来说是重要的问题).与此同时,您可以通过一些脚本创建您正在寻找的功能.我将在下面使用jQuery:

(function ($) {

    "use strict";

    $("#nav-bar").on({
        "mousedown mouseup": function () { $(this).toggleClass("pressed"); },
        /* mouseleave just incase "mouseup" happens outside of the anchor */
        "mouseleave": function () { $(this).removeClass("pressed"); }
    }, "li");

}(jQuery));

最后,只需对选择器进行一次调整,使其适用于.pressed该类:

#nav-bar li:not(.active-page):active, 
#nav-bar li:not(.active-page).pressed {
    transform: translate(10px, 10px);
}

最终结果似乎是您希望实现的效果:http:
//jsfiddle.net/jonathansampson/dsy9g2j2/8/

在此输入图像描述

更新的答案

在下面的评论中进一步讨论该问题之后,您似乎正在使用translate(x, y)偏移元素而不是留下元素.您应该没有任何问题,因为Internet Explorer已经支持所有适当的功能多年.

我带头并使用了您在评论中提到的标记/ CSS:


#nav-bar li:not(.active-page):active {
    transform: translate(10px, 10px);
}

正如您所看到的,这在Internet Explorer中按原样工作,无需额外工作:

在此输入图像描述

小提琴:http://jsfiddle.net/dsy9g2j2/4/

至于为什么你没有得到这些结果,你可能遇到了一个bug.几个月前,我在translate函数中提出了一个关于右边填充y值的问题,使整个属性值无效:

transform: translate( 10px, 10px );

请注意parens中的空格 - 关闭paren之前的空格会使Internet Explorer中的值无效.幸运的是,我们的团队已经解决了这个问题,并且在将来的版本中不会出现问题,但是现在,您需要确保y值没有用空格填充.

小提琴(预计会被打破):http://jsfiddle.net/dsy9g2j2/5/

原始答案

听起来你可能正在使用它translateZ来减少元素在其:active状态期间的大小; 如果是这种情况,您需要确保直接将元素应用于元素,或者将某个透视应用于祖先树.没有透视,浏览器无法确定翻译的效果应该有多明显.

.button:active {
    transform: perspective(300px) translateZ(-1em);
}

最终结果在所有浏览器中都是一致的,包括Internet Explorer 11:

在此输入图像描述

小提琴:http://jsfiddle.net/jonathansampson/dsy9g2j2/3/



1> Sampson..:

注意:以下内容仅适用于Internet Explorer.Microsoft Edge中已解决此错误.

最终答案

如下面的评论中所述,原始(未提供)源在列表项中立即嵌套了锚点.以下应该是一个很好的例子:


重要的是要注意,CSS 2.1规范或Selectors Level 3模块都不会说明状态是否:active也适用于元素的父级:

CSS没有定义哪些元素可能处于上述状态,或者如何输入和保留状态.脚本可以改变元素是否对用户事件做出反应,并且不同的设备和UA可以具有指向或激活元素的不同方式.CSS 2.1没有定义':active'或':hover'元素的父元素是否也处于该状态.

- CSS 2.1规范,第5.11.3节

可能存在文档语言或实现特定限制,哪些元素可以变为:活动或获取:焦点... 选择器不定义元素的父级是否为":active"或":hover"是否也处于该状态.

- 选择器级别3,第6.6.1.2节

考虑到上述情况,我们并不期望所有浏览器不仅将:active伪类应用于当前正在激活的锚元素,而且还应用于锚的父元素.不幸的是,在这种情况下,Chrome和Firefox似乎冒泡了伪类,而Internet Explorer却没有.

虽然这不是规范实现中的错误,但我将为我们的团队打开一个Interop Bug(这些对我们来说是重要的问题).与此同时,您可以通过一些脚本创建您正在寻找的功能.我将在下面使用jQuery:

(function ($) {

    "use strict";

    $("#nav-bar").on({
        "mousedown mouseup": function () { $(this).toggleClass("pressed"); },
        /* mouseleave just incase "mouseup" happens outside of the anchor */
        "mouseleave": function () { $(this).removeClass("pressed"); }
    }, "li");

}(jQuery));

最后,只需对选择器进行一次调整,使其适用于.pressed该类:

#nav-bar li:not(.active-page):active, 
#nav-bar li:not(.active-page).pressed {
    transform: translate(10px, 10px);
}

最终结果似乎是您希望实现的效果:http:
//jsfiddle.net/jonathansampson/dsy9g2j2/8/

在此输入图像描述

更新的答案

在下面的评论中进一步讨论该问题之后,您似乎正在使用translate(x, y)偏移元素而不是留下元素.您应该没有任何问题,因为Internet Explorer已经支持所有适当的功能多年.

我带头并使用了您在评论中提到的标记/ CSS:


#nav-bar li:not(.active-page):active {
    transform: translate(10px, 10px);
}

正如您所看到的,这在Internet Explorer中按原样工作,无需额外工作:

在此输入图像描述

小提琴:http://jsfiddle.net/dsy9g2j2/4/

至于为什么你没有得到这些结果,你可能遇到了一个bug.几个月前,我在translate函数中提出了一个关于右边填充y值的问题,使整个属性值无效:

transform: translate( 10px, 10px );

请注意parens中的空格 - 关闭paren之前的空格会使Internet Explorer中的值无效.幸运的是,我们的团队已经解决了这个问题,并且在将来的版本中不会出现问题,但是现在,您需要确保y值没有用空格填充.

小提琴(预计会被打破):http://jsfiddle.net/dsy9g2j2/5/

原始答案

听起来你可能正在使用它translateZ来减少元素在其:active状态期间的大小; 如果是这种情况,您需要确保直接将元素应用于元素,或者将某个透视应用于祖先树.没有透视,浏览器无法确定翻译的效果应该有多明显.

.button:active {
    transform: perspective(300px) translateZ(-1em);
}

最终结果在所有浏览器中都是一致的,包括Internet Explorer 11:

在此输入图像描述

小提琴:http://jsfiddle.net/jonathansampson/dsy9g2j2/3/


@MarceloMiguelBazan这就是为什么在你提问时总是*发布你的代码很重要;)我已经更新了上面的答案.
推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • jQuery实现简单的动画效果及用法详解
    本文详细介绍了使用jQuery实现简单动画效果的方法,包括显示/隐藏、向上收缩/向下展开、淡入/淡出、自定义动画等。同时提供了具体的用法示例,并解释了参数的含义和使用技巧。通过本文的学习,读者可以掌握如何使用jQuery实现各种动画效果,为网页增添生动和互动性。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文介绍了使用jQuery实现图片预加载和等比例缩放的方法,同时提供了演示和相关代码。该方法可以重置图片的宽度和高度,并使图片在水平和垂直方向上居中显示。 ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • this prototype 闭包 总结
    this对象整理下思路:一般用到this中的情景:1.构造方法中functionA(){this.nameyinshen;}varanewA() ... [详细]
  • 前端不规则图像点击_如何在前端开发的潮流中快速学习学好学以致用?
    大家好,我是致力于前端开发,前端设计,前端入门的前端小姐姐,今天为大家带来的前端新知识是【雪碧图和滑动门】,不 ... [详细]
author-avatar
一个人灬过世界amp丶_420
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有