Почитал пост о HTML KickStart и тут же решил опробовать вышеупомянутый набор скриптов и стилей. После рассмотрения решил его применить на практике на конкретный проект. Но меня неприятно удивило отсутствие всплывающих окон, не люблю я часто по страницам переходить. Такие задачи, как, например форма добавления нового пользователя, как мне показалось, должны не перекидывать юзера на новую страницу, а отображать то, что нужно, во всплывающем окне. Вот я и накидал скрипт для этого. Подробности под катом.
Актуальная на момент написания статьи версия HTML KickStart 0.9 MIT.
Первым делом я создал отдельный файл для своего JavaScript-а. Назвал я его «user.js» и положил в папку «js» и сразу подключил на странице.
Было решено максимально упростить добавление блоков на страницу так, чтобы можно было на лету вставлять эти блоки в код, но для начала нужно создать подложку, которая затеняет страницу. Прямо над закрывающим тегом body я вставил div с id bg:
В style.css, лежащем в корне я прописал ему следующие стили:
Блоку, который будет открываться я решил присвоить класс «hiddenBlock» и приписывать уникальный id:
В css описал класс «hiddenBlock»:
К кнопке, которая должна открывать окно я добавил атрибут «box» с id окна, которое она должна открывать и добавил ей класс «show»:
Ну и сам код, наконец:
В итоге получилось так:
Демонстрация работы
Надеюсь кому-нибудь эта информация будет полезна.
Актуальная на момент написания статьи версия HTML KickStart 0.9 MIT.
Первым делом я создал отдельный файл для своего JavaScript-а. Назвал я его «user.js» и положил в папку «js» и сразу подключил на странице.
<script type="text/javascript" src="js/user.js"></script>
Было решено максимально упростить добавление блоков на страницу так, чтобы можно было на лету вставлять эти блоки в код, но для начала нужно создать подложку, которая затеняет страницу. Прямо над закрывающим тегом body я вставил div с id bg:
<div id="bg"></div>
В style.css, лежащем в корне я прописал ему следующие стили:
#bg { width:100%; height:100%; position:fixed; top:0;left:0; background:black; display:none; z-index:601; /* так получилось, что у меню в KickStart стоит z-index 600 */ opacity:0.3; }
Блоку, который будет открываться я решил присвоить класс «hiddenBlock» и приписывать уникальный id:
<div class="hiddenBlock" id="createUser">Форма добавления пользователя</div> <div id="bg"></div>
В css описал класс «hiddenBlock»:
.hiddenBlock { position:absolute; top:20%; left:50%; z-index:602; width:400px; background:#efefef; border: 1px solid #ccc; padding:10px 20px; border-radius:10px; margin-left:-210px; display:none; }
К кнопке, которая должна открывать окно я добавил атрибут «box» с id окна, которое она должна открывать и добавил ей класс «show»:
Чтобы закрыть окно, я создал в нем кнопку с классом «close»:<button class="medium blue show" box="createUser">Создать</button>
<button class="medium blue close">Закрыть</button>
Ну и сам код, наконец:
$(document).ready(function(){ $(".show").click(function(){ $("#bg").show(); $("#"+($(this).attr("box"))).slideDown("fast"); }); $(".close").click(function(){ $("#bg").hide(); $(".hiddenBlock").slideUp("fast"); return false; //чтобы не активировалась форма, в которой кнопка закрытия }) });
В итоге получилось так:
<button class="medium blue show" box="createUser">Создать</button> <div class="hiddenBlock" id="createUser"> <form action="index.php" method="post"> Здесь следуют инпуты (не стал вписывать в примере) <button class="medium green">Создать</button> <button class="medium blue close">Закрыть</button> </form> </div> <div id="bg"></div>
Демонстрация работы
Надеюсь кому-нибудь эта информация будет полезна.
