Комментарии 46
Приятно выглядит. Можно добавить еще примеров готовых страниц? И ripple эффект выглядит как-то не очень в gif. Могу я предложить залить на github страницу тестовую и сюда ссылку?
<div class="mcard" style="position: absolute; width:300px;top:200px;">
<image style="max-width: 100%; position: relative;">
Вы серьезно?
Размеры в зависимости от ситуации можно указать в стороннем CSS, можно задать через jQuery, можно родить их где-то внутри React-а… вариантов сотня.
MD нужен только для приложений. Но приложения обычно строятся на модульной системе, а тут просто куча тупо вкинута в глобальный скоуп. Плюс элементы обычно создаются на лету, а тут чтобы виджеты ожили надо вручную вызывать всякие функции, да еще неизвестно, как это сработает с уже живыми виджетами. Тема задается css-переменными, работать будет очень не везде, но при этом используется устаревший JS.
А так, конечно, выглядит неплохо, да и вес небольшой, это плюсы.
Если быть точным, то custom properties. Вообще они мощнее препроцессорных переменных в виду своей динамичности. Вот пост, где их сравнивают.
Вообще поддержка в браузерах уже приличная, но нет в ie и в edge только на подходе.
Как аналог миксинов будет @apply
, сейчас с поддержкой совсем плохо.
Обе фичи можно полифилить с помощью postcss-cssnext, но с ограничениями и они так же будут статическим, как и препроцессорные переменные.
— css замени на scss
— это не фреймворк
что там насчет поддержки для IE,Firefox,Opera,Chrome,Safari?
Какие минимальный версии браузеров для адекватной работы?
— переходи по максимум на css анимацию
К сожалению я так и не смог сделать анимацию волны на css. Если можете помочь, буду благодарен.
что там насчет поддержки
В Опере все работает нормально, в Firefox не работает волна и имеются небольшие проблемы с позиционированием отдельных элементов.
про js — используй ES6 или TypeScript с компиляцие в js (в них можно красиво создавать классы и модули и т.д., сможешь обернуть все, что получилось в одну библиотеку)
про css — используй after/before, иногда полезно)
про «разделяй и властвуй» — в файле html должен быть ТОЛЬКО каркас, в CSS — стили, в JS — логика. эти три кита должны быть более-мененее самостоятельными.
убери из HTML все кроме каркаса, классов, id и те элементы которые удовлетворяет W3C
для использования собственный атрибутов используй параметры «data»
пример:
<div data-name="vasya"></div>
// Cначала задаете стили для "волны" и скрываете ее через transform
.btn:before {
...
transform: scale(0,1);
}
// Имитируте клик по кнопке и добавляете необходимую анимацию
.btn:focus:not(:active):before {
animation: wave-animation ...;
}
// Анимация
@keyframes wave-animation {
0% {
opacity: 0;
transform: scale(0,1);
}
50% {
opacity: 1;
transform: scale(.5,1);
}
100% {
opacity: 0;
transform: scale(1,1);
}
}
http://codepen.io/Deka87/pen/zNJyqg.
Но так у вас остается деградированная но логика. И даже дело не в браузерах с отключенным ЖС, понять что инпут это инпут может и робот какой, или… браузер. Зачеркнутые замочки видели? Браузер по какому-то алгоритму их определяет…
Есть общепринятые нормы — кастомные инпуты выглядят как стандартные, а уже потом компонента ее переделывает как ей нужно. Самый жесткий пример — посмотрите любой редактор, ТиниМЦЕ к примеру. У нас текстареа который уже заменяют на див и т.п.
Надо использовать label с аттрибутом for, у него есть псевдоселекторы, а сам инпут использовать как модель и хайдить display: none
input[type=hidden]
в связке с установкой tabindex
на обертке для обработки фокуса. Не забыть только -1 выставить на соседних контроллах рядом с этим инпутом внутри этой обертки, если они присутствуют.а сделать их нельзя
"заполнитель" можно сделать с box-shadow.
А в целом, рекомендую автору копать в сторону веб-компонентов.
<div class="flatbutton ripple-effect" style="position: relative; top:140px;left:20px;" onclick="showDialog(document.getElementById('dialog1'))">
<p>Flat button</p>
</div>
вспоминается про то, что каждый начинающий программист обязан сделать велосипед, но с квадратными колесами…
onclick="showDialog(document.getElementById('dialog1'))"
За такое вообще на районе убивают без разговоров.
Вначале на главную проникла статья про Qiwi с nodejs 0.12 и адовой лапшой в коде, теперь вот это, что вообще происходит с хабром?
Может каждый из нас что-то может где-то лучше. Может лучше CSS, может лучше JS, может лучше архитектуру. Но у нас времени нет. Поэтому респект тем, кто тратит своё время на то, чтобы что-то сделать в открытом виде.
И если вы не поняли в чем заключался мой комментарий, то я там не критикую автора, каждый в праве писать то что хочет и пусть это делает, я высказался о том что если люди ставят + такой статье, то с них и надо спрашивать, что они нашли такого что заставило поставить +.
Поздравляем с велосипедом. Вы изобрели:
- http://materializecss.com/
- https://getmdl.io/
- http://fezvrasta.github.io/bootstrap-material-design/
- и.т.д.
А если серьезно, то почему бы и нет. Вы вложили много сил в эту работу, однако:
- На сайте очень сильно хромает английский. (Отдайте редактору)
- На сайте не хватает примеров, чтобы было тупо, на уровне копи паст. Смотрите здесь: http://materializecss.com/getting-started.html
- Обязательно нужна кроссбраузерная поддержка
- Разметка несколько грязная (но это уже сто десятое дело)
Если вы эти правки сделаете, есть шанс что проект взлетит.
<div class="slider" value="50" min="0" max="100" step="1"></div>
Обратите внимание, что элементу div присваиваются недопустимые атрибуты value, min, max, step. Однако, при загрузке страницы автоматически будет создан элемент input, который получит эти атрибуты, и ошибки не будет.
Почему тогда не
<div class="slider" data-value="50" data-min="0" data-max="100" data-step="1"></div>
Мой Material Design Framework