tarthur: Если речь идет именно об адаптивности разметки, то инструмент в Хроме достаточно точен. Если речь идет о тестирования определенной функциональности, то тут уже могут быть расхождения с реальными девайсами. Помогает опыт, can-i-use и тест в реальных устройствах (три телефона членов семьи, пара планшетов :) )
глобал не нужен в первой команде
php composer.phar require "fxp/composer-asset-plugin:1.0.0-beta3"
не знаю для чего конкретно нужен composer-asset-plugin. судя по всему, в продакшн он не нужен, только на этапе разработки. тогда добавить ключ --save-dev (хотя это не критично)
на сервере - тоже композер. но никто не мешает просто залить руками по ftp с локалки готовые файлы.
ну или разворачивают полноценную систему для деплоя.
выше уже писали. если композер не установлен у вас на компе, то вам нужно
скачать файлик https://getcomposer.org/composer.phar
положить его в корень вашего проекта
и далее выполнять те же команды с поправкой на .phar
php composer.phar global require "fxp/composer-asset-plugin:1.0.0-beta3"
php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic
Кому нужна инфа - не поленится написать специальный скрипт. тем более я лично ничего сложного в описании вашей "защиты" не увидел. Единственное препятствие - генереруемый урл. Ну так алгоритм генерации доступен в js файле, данные (все id, тикеты и прочее) получаем запросом - всё есть для генерации адреса.
Про ограничение времени там выше написали - решается прокси-листом.
В общем скриптик написать пару часов-день-два, в зависимости от уровня программиста.
импортант - это костыль.
CSS свойства применяются согласно своей специфичности, либо, если специфичность одинаковая, по порядку объявления в коде. медиа-запросы специфичность не повышают. Это значит вам сначала нужно объявить обычно правило. а потом ниже по коду медиазапрос. Если медиазапросы у вас в отдельном файле, то этот файл следует подключать после основного. Вот и всё. Никаких импортантов.
Ну не совсем они и отказались. Во второй альфе снова вернулись пиксели в сетке https://github.com/twbs/bootstrap/blob/v4.0.0-alph...
Хотя шрифтовые метрики и зависящие от шрифта - выражены в ремах.
Посмотрим, конечно, на чем остановятся в итоге, но вывод очевиден, каждой единице измерения - своё место.
djay: Кто вам сказал что прямой? Потому что в адресной строке вы видите новый адрес? Так это магия HistoryAPI
Ну а запросы идут, странно, что вы их не видите. Может не там смотрите? :)
Дмитрий: Про всплытие событий слышали?
Когда вы кликаете по форме, событие всплывает до ближайшего обработчика вверх по DOM дереву вплоть до самого document (т.е. на document вы можете в принципе отловить все события). Если на пути попался обработчик - он выполняется и событие всплывает дальше, если оно не было остановлено в этом обработчике.
Какой из этого следует вывод? Вроде бы простой - повесить обработчик на форму и останавливать в ней всплытие. Но тогда перестанут работать ссылки и кнопки, расположенные внутри формы.
Тогда на ум приходит другое решение - нужно смотреть на инициатора события (event.target) и в зависимости от того, кто это, выполнять или не выполнять определенные действия. Реализацию этого момента я оставляю на вашу ответственность.
Роман Огарков: Я бы сделал флексом, а 30% пользователей IE вполне смогли бы смотреть на сайт с неправильным расположением блоков. Включаем принцип - главное доступность информации, а внешние плюшки.
Для ie8-9 буквально на днях появился полифил https://github.com/10up/flexibility
Я правда его еще не применял, ничего конкретного сказать не могу по эффективности.