Плавное изменение CSS-свойства при нажатии на ссылку
Всем доброй ночи. Подскажите, пожалуйста, как можно реализовать данную задачу средствами jQuery:
![]() При нажатии на ссылку с классом "in" у DIV-элемента с классом "#st" плавно меняется прозрачность бордера с 0.5 до 1 и потом обратно до 0.5 ? Ссылка с классом, на которую нажимаем, выглядит так: <a class="in" href="123">добавить</a> Класс DIV-элемента, который должен поменять прозрачность, выглядит так: #st { border: 5px solid rgba(0, 143, 255, 0.5); } Спасибо за кооперацию. |
Вот так выглядит сам DIV.
![]() |
caboke,
Пример нормально работает во всех браузерах, кроме IE - в IE прозрачность меняется только в одну сторону, ничем не смог заставить работать, как все:( <!DOCTYPE html > <html> <head> <title></title> <style type="text/css"> #st { border: 5px solid rgba(0, 143, 255, 0.5); border-radius: 20px; position:absolute; top:20px; left:150px; height :150px; width :200px; -webkit-transition:border 1s ease; -moz-transition:border 1s ease; -o-transition:border 1s ease; transition:border 1s ease; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script type="text/javascript"> window.onload = function () { $('.in').on('click', function () { $("#st").css("border", "5px solid rgba(0, 143, 255, 1)"); setTimeout(function () { $("#st").css("border", "5px solid rgba(0, 143, 255, 0.5") }, 1000); }); } </script> </head> <body> <div id="st" ></div> <a class="in" href="#">добавить</a> </body> </html> |
Dilettante_Pro, большое спасибо. А что нужно сделать, чтобы кнопка "Выполнить" появилась?
|
caboke,
Цитата:
Нужно собрать код в один модуль, в т.ч. с подгрузкой требуемых скриптов, заключить в теги HTML и в головном теге добавить run (можете сделать цитату по моему посту и посмотреть, если что непонятно) |
Dilettante_Pro, спасибо. В общем так это выглядит в собранном виде. Единственное, что я не понял - почему-то, если тело скрипта находится выше кнопки «добавить», то скрипт не срабатывает. Не знаете, почему?
<!DOCTYPE html > <html> <head> <title></title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <style type="text/css"> #st { border: 5px solid rgba(0, 143, 255, 0.5); width: 200px; height: 100px; border-radius: 10px; } .clicked { animation: fade-bodred 3s linear; } @keyframes fade-bodred { 0% { border-color: rgba(0, 143, 255, .5); } 50% { border-color: rgba(255, 0, 0, 1); } 100% { border-color: rgba(0, 143, 255, .5); } } </style> </head> <body> <a class="in" href="#">добавить</a> <div id="st"></div> <script type="text/javascript"> $('.in').on('click', function() { $('#st').addClass('clicked'); setTimeout(function() { $('#st').removeClass('clicked'); }, 3000); }); </script> </body> </html> |
caboke,
а зачем вообще это? $('#st').removeClass('clicked');}, 3000); если можно на css сделать? Если изменить время, придется в двух местах менять - многовато :) |
Цитата:
|
<!DOCTYPE html> <html> <head> <title></title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <style type="text/css"> #st { border: 5px solid rgba(0, 143, 255, 0.5); width: 200px; height: 100px; border-radius: 10px; } .clicked { animation: fade-bodred 3s linear alternate; } @keyframes fade-bodred { 0% { border-color: rgba(0, 143, 255, .5); } 50% { border-color: rgba(255, 0, 0, 1); } } </style> </head> <body> <a class="in" href="#">добавить</a> <div id="st"></div> <script type="text/javascript"> $('.in').on('click', function() { $('#st').addClass('clicked'); }); $('#st').on('animationend', function () { $(this).removeClass('clicked'); }); </script> </body> </html> |
destus, а за счёт чего идёт обратная анимация от красного к синему цвету?
|
Часовой пояс GMT +3, время: 02:49. |