CSS3 односторонній перехід?


81

Використовуючи переходи CSS3, можна мати ефект `` згладжування '' та `` згладжування '' до будь-якої властивості.

Чи можу я налаштувати його так, щоб він мав лише ефект згладжування? Я хотів би, щоб рішення було лише в CSS, уникаючи JavaScript, якщо це можливо.

Логічний потік:

  • Користувач клацає елементом
  • Перехід займає 0,5 с, щоб змінити колір тла з білого на чорний
  • Користувач відпускає ліву кнопку миші
  • Перехід займає 0,5 с, щоб змінити колір тла з чорного на білий

Що я хочу:

  • Користувач клацає елементом
  • Для переходу потрібні 0 с
  • Користувач відпускає кнопку миші
  • Перехід займає 0,5 с для зміни ...

Не існує часу переходу, але є час переходу.

Відповіді:


129

Я спробував наступне в редакторі CSS3 Tryit, і це працювало в Chrome (12.0.742.60 beta-m).

/* transition out, on mouseup, to white, 0.5s */
input
{
  background:white;
  -webkit-transition:background 0.5s;
  -moz-transition:background 0.5s;
  -ms-transition:background 0.5s;
  -o-transition:background 0.5s;
  transition:background 0.5s;
}

/* transition in, on click, to black, 0s */
input:active
{
  background:black;
  -webkit-transition:background 0s;
  -moz-transition:background 0s;
  -ms-transition:background 0s;
  -o-transition:background 0s;
  transition:background 0s;
}
<input type="button" value="click me to see the transition effect!">


4
дох! Не можу повірити, що мені це не спало на думку ... Звичайно! Базовий перехід встановлений на 0 с, а перехід активного стану перевизначає базові значення, і це встановлено на 0,5 с ... Зітхання ... Мені потрібна чашка кави ...
Абхішек

14
У моєму випадку я хотів перехід до затримки / виникнення при наведенні, а не при наведенні. Рішення стало простішим, коли я прочитав вищезазначене: просто встановіть перехід до правила: hover, не потрібно нічого більше скасовувати. Дякуємо, що вказали в правильному напрямку, з яскравим прикладом.
Шмулі

Дякую за вашу відповідь, я тестував, але це спрацювало для мене (у Chrome), коли перехід був встановлений навпаки, я не знаю, змінилися специфікації чи щось інше
АбдулРахман АльХамалі

Дякую! Думаю, я думав надто складно. Я хотів, opacityщоб елемент "зникав" елемента після того, як клас CSS bбув присутній, але щоб різко показав зміни, як тільки клас CSS зник (без переходу). Тож я визначив .a { transition: ... 0s...; } .b { opacity: 0.5; } .b.a { transition: ... 2s ...; }. Тепер, якщо елемент, до якого завжди aприєднаний клас CSS , також отримує клас b, непрозорість зменшується до 0,5, тоді як коли bраптом більше немає, переходу назад немає.
Ігор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.