Можно было бы, конечно, сверстать все используя лишь две иконки: ключа и пользователя. Но так как форма входа в адмику - это элемент не настолько массовый как сам сайт или админка, то я решил не заморачиваться.
Кстати, крестик в правом верхнем углу не закрывает форму, а сбрасывает значение полей.
1. Скачать архив и его содержимое (2 картинки) загрузить в каталог: /engine/skins/images/
2. Открыть /engine/skins/default.skin.php, найти код:
3. Вместо удаленного фрагмента вставить: (картинку и тайтл заменить на свои):
4. Открыть /engine/skins/default.css и в конец файла добавить:
Также, ко всему этому, прилагаю PSD макет:
Первое, что может броситься в глаза, это логотип со скругленными углами. Известно, что не все браузеры скругляют углы изображений, а если и скругляют, то зачастую неправильно. Чтобы сделать любую фотографию округленной можно использовать псевдоэлементы :after и :before.
Схема округления такая: к контейнеру с изображением применяються псевдоклассы
Цвет тени - белый, соответственно и фон должен быть такого же цвета. Минус данного способа - градиентный фон.
Второе, о чем бы я хотел написать - это стилизация HTML5 атрибута
Третье, что важно знать, - это код между тегов
На этом все. Хорошо, если форма кому-то приглянулось. Ежели возникают вопросы - задавайте в комментариях.
Кстати, крестик в правом верхнем углу не закрывает форму, а сбрасывает значение полей.
Инструкция по применению:
1. Скачать архив и его содержимое (2 картинки) загрузить в каталог: /engine/skins/images/
2. Открыть /engine/skins/default.skin.php, найти код:
$skin_login = <<<HTML и удалить весь код идущий после, до: HTML;.3. Вместо удаленного фрагмента вставить: (картинку и тайтл заменить на свои):
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Firstvector.org backoffice</title>
<meta charset="{$config['charset']}" />
<link rel="stylesheet" href="engine/skins/default.css?v=2">
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
jQuery(document).ready(function($){
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
$(window).load(function(){
$('input:-webkit-autofill').each(function(){
var text = $(this).val();
var name = $(this).attr('name');
$(this).after(this.outerHTML).remove();
$('input[name=' + name + ']').val(text);
});
});
}
});
</script>
</head>
<body>
<div class="login">
<div class="avatar">
<img src="/templates/sbport/dleimages/noavatar.png" alt="Firstvector.org" />
</div>
<form name="login" action="" method="post">
<input type="hidden" name="subaction" value="dologin" />
<input type="reset" value="" />
<div class="username">
<input type="text" name="username" placeholder="Username" />
</div>
<div class="password">
<input type="password" name="password" placeholder="Password" />
</div>
<div class="chckbox">
<div class="slide">
<input type="checkbox" value="1" id="login_not_save" name="login_not_save" />
<label for="login_not_save"></label>
</div>
<label for="login_not_save" class="label">Чужой компьютер?</label>
</div>
<input type="submit" value="Enter" />
<div class="error">{result}</div>
</form>
</div>
</body>
</html>4. Открыть /engine/skins/default.css и в конец файла добавить:
/* LOGIN */
.login {
position:relative;
top:200px;
width:335px;
height:250px;
margin:0 auto;
padding:10px 10px 0;
background:url(./images/formbg.png) no-repeat;
}
.login input[type="reset"] {
position:absolute;
right:13px;
top:11px;
width:13px;
height:13px;
background:none;
cursor:pointer;
}
.avatar {
position:relative;
width:65px;
height:65px;
margin:5px auto;
overflow:hidden;
}
.avatar:after,
.avatar:before {
content:"";
position:absolute;
z-index:2;
top:3px;
left:3px;
right:3px;
bottom:3px;
-webkit-border-radius:50%;
border-radius:50%;
-webkit-box-shadow:0 0 3px 0 #ccc;
box-shadow:0 0 3px 0 #ccc;
}
.avatar:after {
z-index:1;
-webkit-box-shadow:0 0 0 50px #fff;
box-shadow:0 0 0 50px #fff;
}
.avatar img {
display:block;
min-width:65px;
max-width:65px;
min-height:65px;
max-height:65px;
}
.login form {
clear:both;
width:218px;
margin:20px auto 0;
}
.login input {
border:none;
}
.login input:focus {
outline:none;
}
.login input::-webkit-input-placeholder {
color:#999;
}
.login input:-moz-placeholder {
color:#999;
}
.login input[type="password"],
.login input[type="text"] {
font-size:12px;
font-family:Candara;
color:#999;
width:168px;
height:30px;
padding:0 10px 0 40px;
background:url(./images/forminput.png) no-repeat;
}
.login input[type="password"]:focus,
.login input[type="text"]:focus {
-webkit-box-shadow: 0 0 3px rgba(130,211,79,.6) inset, 0 0 2px #82d34f;
box-shadow: 0 0 3px rgba(130,211,79,.6) inset, 0 0 2px #82d34f;
}
.login input[type="text"] {
margin-bottom:12px;
}
.login input[type="text"]:focus {
background-position:0 -60px;
}
.login input[type="password"] {
background-position:0 -30px;
}
.login input[type="password"]:focus {
background-position:0 -90px;
}
.chckbox {
float:left;
height:24px;
margin:20px 0 8px 5px;
}
.label {
float:left;
height:20px;
cursor:pointer;
color:#999;
margin:-1px 0 0 10px;
font-size:11px;
font-family:Candara;
-moz-user-select:none;
-khtml-user-select:none;
user-select:none;
}
.chckbox label:hover {
color:#222;
}
.slide {
position:relative;
float:left;
width:40px;
height:14px;
background:#91bf73;
-webkit-border-radius:50px;
border-radius:50px;
-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5), 0 1px 0 rgba(255,255,255,.2);
box-shadow:inset 0 1px 1px rgba(0,0,0,.5), 0 1px 0 rgba(255,255,255,.2);
}
.slide label {
position:absolute;
top:-1px;
left:25px;
display:block;
width:16px;
height:16px;
-webkit-border-radius:50px;
border-radius:50px;
-webkit-transition:all .4s ease;
-moz-transition:all .4s ease;
-o-transition:all .4s ease;
-ms-transition:all .4s ease;
transition:all .4s ease;
cursor:pointer;
-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.7);
box-shadow:0 0 2px 0 rgba(0,0,0,.7);
background:#fcfff4;
background:-webkit-linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%);
background:-moz-linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%);
background:-o-linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%);
background:-ms-linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%);
background:linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fcfff4',endColorstr='#b3bead',GradientType=0);
}
.slide input[type=checkbox]:checked + label {
left:0;
}
.login input[type="submit"] {
position:relative;
float:right;
height:20px;
color:#fff;
font-size:12px;
font-weight:bold;
font-family:Candara;
cursor:pointer;
margin-top:15px;
background:#ccc;
-webkit-box-shadow:0 2px 0 1px #bcbcbc;
box-shadow:0 2px 0 1px #bcbcbc;
-webkit-border-radius:2px;
border-radius:2px;
}
.login input[type="submit"]:hover {
background:#8db96f;
-webkit-box-shadow:0 2px 0 1px #80a269;
box-shadow:0 2px 0 1px #80a269;
}
.login input[type="submit"]:focus {
top:1px;
background:#8db96f;
-webkit-box-shadow:0 0 0 1px #80a269;
box-shadow:0 0 0 1px #80a269;
}
.error {
clear:both;
font-size:11px;
font-family:Candara;
margin-left:3px;
}Также, ко всему этому, прилагаю PSD макет:
Пояснения некоторых фрагментов кода и техник:
Первое, что может броситься в глаза, это логотип со скругленными углами. Известно, что не все браузеры скругляют углы изображений, а если и скругляют, то зачастую неправильно. Чтобы сделать любую фотографию округленной можно использовать псевдоэлементы :after и :before.
Схема округления такая: к контейнеру с изображением применяються псевдоклассы
:after и :before которые имеют border-radius:50% и box-shadow:0 0 0 50px #fff;. Таким образом у нас выходит квадрат, но с "вырезанной дырой", в которой и виднеется изображение.Цвет тени - белый, соответственно и фон должен быть такого же цвета. Минус данного способа - градиентный фон.
Второе, о чем бы я хотел написать - это стилизация HTML5 атрибута
placeholder. В CSS указан цвет текста плэйсходеров с помощью селекторов -webkit-input-placeholder и -moz-placeholder. Цвет текста один и тот же, а стили описаны дважды. Но ошибки тут нет, - так правильно. Важно помнить, что данные атрибуты нельзя указывать через запятую - браузер просто проигнорирует\не применит указанные стили.Третье, что важно знать, - это код между тегов
<script></script>. Назначение его - убрать желтую подсветку для полей с сохраненными значениями в браузерах на движке Webkit. Можно сделать и проще, полностью отказавшись от jQuery в данной форме. Для этого к полям type="text" и type="password" нужно применить атрибут autocomplete="off", но при этом следует учитывать что в этих полях не будут сохраняться данные и их придется вписывать при каждом использовании формы.На этом все. Хорошо, если форма кому-то приглянулось. Ежели возникают вопросы - задавайте в комментариях.



