CSS: после перехода - PullRequest
       26

CSS: после перехода

9 голосов
/ 05 сентября 2011

Структура HTML

<div id="small_gal">
    <div><img src="images1.jpg" /></div>
    <div><img src="images1.jpg" /></div>
    <div><img src="images1.jpg" /></div>
    <div><img src="images1.jpg" /></div>
    <div><img src="images1.jpg" /></div>
    <div><img src="images1.jpg" /></div>
    <div><img src="images1.jpg" /></div>
    <div><img src="images1.jpg" /></div>
</div>

Изображения имеют тени, поэтому border не является решением, так как это будет за пределами изображения

enter image description here enter image description here

Граница имеет переход, и она работает плавно на FF, но не в 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, поэтому мы можем реализовать: после

Ответы [ 3 ]

15 голосов
/ 05 сентября 2011

Firefox 4+ - единственный браузер, который поддерживает переход псевдоэлементов, таких как :before и :after.

Источник: http://css -tricks.com / 13555-переходы-анимации-на-css-создан-контент /

3 голосов
/ 05 сентября 2011

CSS-переходы все еще являются экспериментальными в WebKit, поэтому, скорее всего, вы столкнулись с некоторой ошибкой в ​​крайнем случае, связанной с псевдо-селектором :: after.Я предлагаю вообще избегать этого и просто переходить 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;
}
1 голос
/ 23 декабря 2015

Вы можете использовать CSS-переходы для псевдоэлементов, например: before и: 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;
}
<div id="small_gal">
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div>
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div>
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div>
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div>
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div>
</div>
...