2017-02-05 4 views
2

Почему граница исчезает мгновенно и не так медленно, как другие свойства?CSS Переход границы перехода мгновенно

Примечание: в этом случае граница появляется мгновенно вместо 2-секундной задержки.

.figure { 
 
\t height: 160px; 
 
\t width: 160px; 
 
\t background-color: red; 
 
\t transition-property: all; 
 
\t transition-duration: 2s; 
 
} 
 

 
.figure:hover{ 
 
\t background-color: blue; 
 
\t border: 10px solid pink; 
 
\t color: yellow; 
 
}
<div class='figure'>Stackoverflow</div>

ответ

3

initial value of the border-style property является none.

Это означает, что граница не возвращается, потому что граница не должна отображаться вообще, когда border-style установлено на none. Если вы установите начальное значение свойства border-style на что-то вроде solid, тогда он будет переходить, как ожидалось.

Стоит также отметить, что значение по умолчанию border-width property является medium и значение по умолчанию border-color property является currentColor (который по существу означает, что будет то, что свойство color устанавливается в).

.figure { 
 
    height: 160px; 
 
    width: 160px; 
 
    background-color: red; 
 
    border-style: solid; 
 
    border-width: 0; 
 
    transition-property: all; 
 
    transition-duration: 2s; 
 
} 
 
.figure:hover { 
 
    background-color: blue; 
 
    border: 10px solid pink; 
 
    color: yellow; 
 
}
<div class='figure'>Stackoverflow</div>

+0

Ha! хорошо, что имеет смысл! Благодаря! –

+0

Более точное объяснение заключается в том, что стили границы вообще не могут быть перенесены. Вы даже не можете переходить между твердой и пунктирной. И, конечно же, переход к любому из трехмерных перспективных стилей границы будет представлять собой проблему, чтобы выглядеть хорошо, не говоря уже о стандартизации. – BoltClock

+0

См. Также http://stackoverflow.com/questions/14385422/why-dont-css3-animations-work-on-outline-with-default-none/14386672#14386672, где то же самое относится к стилям контура. – BoltClock

0

Вам нужно добавить свойство перехода в обоих class и class:hover

.figure { 
    height: 160px; 
    width: 160px; 
    background-color: red; 
    transition: all linear 2s; 
    -webkit-transition: all linear 2s; 
    -moz-transition: all linear 2s; 
} 

.figure:hover{ 
    background-color: blue; 
    border: 10px solid pink; 
    color: yellow; 
    transition: all linear 2s; 
    -webkit-transition: all linear 2s; 
    -moz-transition: all linear 2s; 
} 

Добавление transition к обоим class и его :hover делает div вернуться к его нормальное состояние, в то же время оно изменяется на hover

 Смежные вопросы

  • Нет связанных вопросов^_^