Виджет записей для сайта

Для начала работы мы подключим скрипт prefixfree.min.js в тег head
 
Код
<script src="js/prefixfree.min.js"></script>

и последнюю версию jQuery для работы нашего скрипта
 
Код
<script src="http://code.jquery.com/jquery-latest.js"></script>

этот скрипт помогает нам не писать все браузерные префиксы, так как скрипт сам подставит нужный префикс нужному браузеру!

Так же подключим сброс стилей

Код
<link rel="stylesheet" href="css/normalize.css">

Напишем нашу разметку 

Код
<div class="tasks">
  <header>
  <a href="#" class="btn left"><span class="icon btn-add add-task"></span></a>
  <h1>Блокнот</h1>
  <a href="#" class="btn right"><span class="icon btn-trash"></span></a>
  </header>
  <section>
  <ul class="all-tasks">
  <li><a href="http://get-element.3dn.ru" class="task"><span class="checkbox"></span>Зайти на сайт Get-Element.3dn.ru</a></li>
  <li><a href="#" class="task"><span class="checkbox"></span>Сходить за продуктами</a></li>
  <li><a href="#" class="task"><span class="checkbox"></span>Забрать ребенка из садика</a></li>
  </ul>  
  <div class="form"><a href="#" class="add-task"></a><form method="post"><input type="text" name="" class="add" placeholder="Введите текст" /></form>  
  </div>
  </section>
</div>

CSS:

Код
@import url(http://fonts.googleapis.com/css?family=Open+Sans:600);
html {
  width: 100%;
  height: 100%;
  overflow: hidden;
}

body {
  background-image: -webkit-gradient(radial, 50% 100%, 0, 50% 100%, 100, color-stop(50%, rgba(61, 110, 178, 0.2)), color-stop(100%, rgba(28, 45, 83, 0))), -webkit-gradient(radial, 100% 10%, 0, 100% 10%, 80, color-stop(20%, rgba(185, 75, 12, 0.6)), color-stop(80%, rgba(72, 154, 50, 0.3))), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(1%, #475ead), color-stop(50%, #ae8439), color-stop(100%, #1d2541));
  background-image: -webkit-radial-gradient(50% 100%, ellipse cover, rgba(61, 110, 178, 0.2) 50%, rgba(28, 45, 83, 0) 100%), -webkit-radial-gradient(100% 10%, ellipse cover, rgba(185, 75, 12, 0.6) 20%, rgba(72, 154, 50, 0.3) 80%), -webkit-linear-gradient(left top, #475ead 1%, #ae8439 50%, #1d2541 100%);
  background-image: -moz-radial-gradient(50% 100%, ellipse cover, rgba(61, 110, 178, 0.2) 50%, rgba(28, 45, 83, 0) 100%), -moz-radial-gradient(100% 10%, ellipse cover, rgba(185, 75, 12, 0.6) 20%, rgba(72, 154, 50, 0.3) 80%), -moz-linear-gradient(left top, #475ead 1%, #ae8439 50%, #1d2541 100%);
  background-image: -o-radial-gradient(50% 100%, ellipse cover, rgba(61, 110, 178, 0.2) 50%, rgba(28, 45, 83, 0) 100%), -o-radial-gradient(100% 10%, ellipse cover, rgba(185, 75, 12, 0.6) 20%, rgba(72, 154, 50, 0.3) 80%), -o-linear-gradient(left top, #475ead 1%, #ae8439 50%, #1d2541 100%);
  background-image: radial-gradient(50% 100%, ellipse cover, rgba(61, 110, 178, 0.2) 50%, rgba(28, 45, 83, 0) 100%), radial-gradient(100% 10%, ellipse cover, rgba(185, 75, 12, 0.6) 20%, rgba(72, 154, 50, 0.3) 80%), linear-gradient(left top, #475ead 1%, #ae8439 50%, #1d2541 100%);
}

.left {
  float: left;
}

.right {
  float: right;
}

a {
  text-decoration: none;
  color: #555;
}
a:hover {
  color: #000;
}

.tasks {
  border-radius: 5px 5px 2px 2px;
  width: 300px;
  margin: 50px auto 0;
  position: relative;
}
.tasks:before {
  content: '';
  position: absolute;
  bottom: -6px;
  left: 10px;
  right: 10px;
  background: #eeeeee;
  display: block;
  height: 5px;
  z-index: -6px;
  border-radius: 0 0 2px 2px;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}
.tasks:after {
  content: '';
  position: absolute;
  bottom: -3px;
  left: 5px;
  right: 5px;
  background: #eeeeee;
  display: block;
  height: 5px;
  z-index: -5px;
  border-radius: 0 0 2px 2px;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}
.tasks .icon {
  background: url(img/task_sprite.png) no-repeat;
  display: inline-block;
}
.tasks header {
  background: linear-gradient(#b56368, #ac535b);
  height: 40px;
  border-radius: 5px 5px 0 0;
  position: relative;
  box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.3), 0 0 5px rgba(0, 0, 0, 0.3);
  border: 1px solid #6f212f;
  border-bottom: 2px solid #6f212f;
  text-align: center;
}
.tasks h1 {
  font-family: ReklameScript-RegularDEMO;
  color: #fad2d4;
  text-shadow: 0 0 4px rgba(111, 33, 46, 0.75), -1px -1px 1px rgba(255, 255, 255, 0.1);
  font-weight: 300;
  display: inline-block;
  margin: 5px 0 0;
  padding: 0;
  font-size: 24px;
}
.tasks .btn {
  display: inline-block;
  border-radius: 3px;
  background: linear-gradient(#b7676b, #ac535b);
  border: 1px solid #6f212f;
  padding: 4px 4px 3px;
  margin: 7px 8px;
  box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.3), 0 2px 2px rgba(0, 0, 0, 0.15);
  line-height: 1;
  vertical-align: sub;
}
.tasks .btn:hover {
  background: linear-gradient(#b7676b, #994a51);
}
.tasks .btn:active {
  box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.1);
  background: #863f45;
}
.tasks .btn-add {
  width: 15px;
  height: 15px;
  background-position: -1px -1px;
}
.tasks .btn-trash {
  width: 15px;
  height: 15px;
  background-position: -19px -2px;
}
.tasks section {
  background: #f8f7f7;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
  position: relative;
  z-index: 1;
  border-radius: 0 0 2px 2px;
}
.tasks section:before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 35px;
  width: 1px;
  background: rgba(224, 13, 48, 0.1);
  z-index: 2;
}
.tasks section ul {
  position: relative;
  margin: 0;
  padding: 10px 0;
  list-style: none;
  font-family: "Open Sans", sans-serif;
  font-weight: 600;
}
.tasks section li {
  font-size: 13px;
  border-top: 1px solid #cccccc;
  padding: 0 10px;
}
.tasks section li a {
  line-height: 30px;
  display: block;
}
.tasks section li .complete {
  color: #999;
  text-decoration: line-through;
}
.tasks section li .checkbox {
  width: 17px;
  height: 17px;
  border-radius: 50%;
  box-shadow: inset 0 1px 1px rgba(100, 100, 100, 0.5), 0 1px 1px white;
  margin-right: 20px;
  position: relative;
  display: inline-block;
  top: 5px;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cbc4c5), color-stop(100%, #e2dede));
  background-image: -webkit-linear-gradient(top, #cbc4c5 0%, #e2dede 100%);
  background-image: -moz-linear-gradient(top, #cbc4c5 0%, #e2dede 100%);
  background-image: -o-linear-gradient(top, #cbc4c5 0%, #e2dede 100%);
  background-image: linear-gradient(top, #cbc4c5 0%, #e2dede 100%);
}
.tasks section li .checked {
  background: url(img/task_sprite.png) no-repeat -2px -21px;
}
.tasks section .form {
  padding: 0 10px 10px;
}
.tasks section form {
  display: inline-block;
}
.tasks section .add {
  color: #333;
  background: transparent;
  border: none;
  outline: none;
  font-family: "Open Sans", sans-serif;
  font-weight: 600;
  width: 230px;
  font-size: 13px;
}
.tasks section .add-task {
  width: 17px;
  height: 17px;
  margin-right: 20px;
  position: relative;
  display: inline-block;
  top: 5px;
  background: url(img/task_sprite.png) no-repeat -23px -21px;
}

::-webkit-input-placeholder {
  color: #539aac;
}

:-moz-placeholder {
  color: #539aac;
}


Напишем наш скрипт. Работа заключается в следующем: Если вы уже посмотрели демо то увидели, что добавление нового пункта заметки в блокнот осуществляется если вы заполнили поле каким либо текстом, а если поле пустое, то добавить новый пункт будет нельзя!

jQuery

Код
<script>
(function() {

var a = {  
  init: function() {
  a.sitecalls();
  },
  sitecalls: function() {
  $('a').on('click',function(e){
  e.preventDefault();  
  });
  $(document).on('click','.task',function(){
  $(this).toggleClass('complete').find('.checkbox').toggleClass('checked');
  });
  $('.add-task').on('click',function(){
  var newTask = $('.add');
  if (newTask.val()){
  $('.all-tasks').append($('<li />').append($('<a />').attr('href','#').addClass('task').append($('<span />').addClass('checkbox')).append($('<span />').html(newTask.val()))));
  newTask.val('');
  }
  });
  }
};

a.init();

})();
  </script>

  • FalleN

  • 1914

  • 1

  • 178

Ссылки на статью:

Похожие статьи:

Комментарии:

Аватар пользователя FalleN
FalleN
Ну не знаю как у вас, а у всех префиксфри работает! А по поводу самого урока, так это лишь скелет для приложения, готовый стиль так сказать. Поэтому его нужно будет дорабатывать для своих нужд!
Malik
Нормально не работает даже на Демо))) Херь полная....

Цитата
этот скрипт помогает нам не писать все браузерные префиксы, так как скрипт сам подставит нужный префикс нужному браузеру

Туфта.