CSS :after hover Transition CSS :after伪类用于向元素的内容之后插入一个伪元素。当使用:hover伪类选择器时,可以将过渡效果应用到:after伪元素。 例如,以下CSS代码将在鼠标悬停在元素上时,为元素的:after伪元素添加过渡效果: ```css .element:after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%;

11 浏览
0 Comments

CSS :after hover Transition CSS :after伪类用于向元素的内容之后插入一个伪元素。当使用:hover伪类选择器时,可以将过渡效果应用到:after伪元素。 例如,以下CSS代码将在鼠标悬停在元素上时,为元素的:after伪元素添加过渡效果: ```css .element:after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%;

HTML结构

    
    
    
    
    
    
    
    

图片带有阴影,所以border不是解决方案,因为它会在图片外部

enter image description here enter image description here

边框具有过渡效果,Firefox上运行流畅,但在Chrome或其他浏览器上不起作用

以下是我使用的代码

#small_gal div:hover{cursor: pointer;}
#small_gal div:after {
    content: '';
    position: absolute;
    width: 112px;
    height: 81px;
    border: 3px solid #e27501;
    left: 9px; top: 9px;
    z-index: 9;
    opacity: 0;
    -webkit-transition: opacity 0.5s ease-in-out;
    -moz-transition: opacity 0.5s ease-in-out;
    -o-transition: opacity 0.5s ease-in-out;
    -ms-transition: opacity 0.5s ease-in-out;
    transition: opacity 0.5s ease-in-out;
}
#small_gal div:hover:after {
    opacity: 1;
}

注意:

#small_gal

只是容器

每个图像都包裹在一个div中,这样我们就可以实现:after

0
0 Comments

CSS :after伪元素无法使用过渡效果的原因是:无法在伪元素上直接定义过渡效果,只能在元素本身上定义过渡效果,并在伪元素上使用inherit继承属性。

解决方法是:将过渡效果从opacity属性移至border-color属性。

以下是解决方法的代码示例:

*, *:before, *:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
#small_gal div {
  border-color: transparent;
  cursor: pointer;
  display: inline-block;
  position: relative;
  -webkit-transition: border-color 0.5s ease-in-out;
  -moz-transition: border-color 0.5s ease-in-out;
  -o-transition: border-color 0.5s ease-in-out;
  -ms-transition: border-color 0.5s ease-in-out;
  transition: border-color 0.5s ease-in-out;
}
#small_gal div:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  border-color: inherit;
  border-style: solid;
  border-width: 3px;
  left: 0;
  top: 0;
}
#small_gal div:hover {
  border-color: #e27501;
}
#small_gal div img {
  display: block;
  height: auto;
  max-width: 150px;
  width: auto;
}

以上代码将解决问题并实现了在:hover状态下,边框颜色由透明变为#e27501的过渡效果。

0
0 Comments

CSS过渡效果在WebKit中仍处于实验阶段,所以很可能你遇到了涉及到::after伪选择器的某种边缘情况bug。我建议完全避免使用它,而是转而对border-color进行过渡。这在Chrome和Safari中运行良好:

#small_gal div.p {
    border: 2px solid transparent;
    -webkit-transition: border-color 1s ease-in;
}
#small_gal div.p:hover {
    border-color: orange;
}

非常感谢您的反馈,我可以使用border,但是图片带有阴影和白色边框,所以应用任何类型的边框都会在阴影外添加,这是不希望的。

0
0 Comments

问题的原因是Firefox 4+是唯一支持过渡伪元素(例如`:before`和`:after`)的浏览器。解决方法是尝试使用jQuery,但是这样会导致麻烦,因为将橙色边框保持在图像内部并覆盖在图像上会导致鼠标移出图像时触发mouseout事件,从而产生抖动效果并且无法点击。

0