Fly to cart

«Полет в корзину», если у нас нужно «отправлять в полет» только картинку, то все очень легко, пример с перемещением всей карточки и текст описания и картинка. Безымянный15 Свойство zoom не использую, ибо при его использовании расчет координат отличается от браузера к браузеру, использую transform: scale, если не поддерживается, просто «сворачиваю» по высоте.
Ниже код того что на картинке. <style> .card { font-size: 60px; color: #444; } .card .panel-body { font-size: 60px; } .card .fa-cart-plus { font-size: 26px; } .cart { margin: 60px 100px; } .cart i { font-size: 46px; color: #aeb733; } .card-body { position: relative; margin-bottom: 6px; } .card-body-copy { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1100; zoom: 1; } </style> <div id="cart" class="cart clearfix"> <button type="button" class="btn btn-default btn-lg pull-right"><i class="fa fa-shopping-cart" aria-hidden="true"></i></button> </div> <div class="row"> <div class="col-xs-3"> <div class="card panel panel-default"> <div class="panel-heading clearfix"> <div class="pull-right"><h4>Card 1</h4></div> </div> <div class="panel-body"> <div class="card-body"> <img src="/public/img/export_excel2.png"> 111<i style="color: #ee0;" class="fa fa-bitcoin" aria-hidden="true"></i> </div> <div class="clearfix"> <div class="pull-right"><button class="btn"><i class="fa fa-cart-plus" aria-hidden="true"></i></button></div> </div> </div> </div> </div> <div class="col-xs-3"> <div class="card panel panel-default"> <div class="panel-heading clearfix"> <div class="pull-right"><h4>Card 2</h4></div> </div> <div class="panel-body"> <div class="card-body"> <img src="/public/img/export_excel2.png"> 222<i style="color: #c0e;" class="fa fa-eur" aria-hidden="true"></i> </div> <div class="clearfix"> <div class="pull-right"><button class="btn"><i class="fa fa-cart-plus" aria-hidden="true"></i></button></div> </div> </div> </div> </div> <div class="col-xs-3"> <div class="card panel panel-default"> <div class="panel-heading clearfix"> <div class="pull-right"><h4>Card 3</h4></div> </div> <div class="panel-body"> <div class="card-body"> <img src="/public/img/export_excel2.png"> 333<i style="color: #0f0;" class="fa fa-dollar" aria-hidden="true"></i> </div> <div class="clearfix"> <div class="pull-right"><button class="btn"><i class="fa fa-cart-plus" aria-hidden="true"></i></button></div> </div> </div> </div> </div> </div> <script type="text/javascript"> (function($) { $('body').on('click', '.btn', function(e) { var card = $(this).closest('.panel-body').find('.card-body'); if (!card.size()) return; var cardCopy = $(this).closest('.panel-body').find('.card-body-copy'); if (!cardCopy.size()) $('<div/>').addClass('card-body-copy').html( card.html() ).appendTo(card); var cart = $('#cart .fa-shopping-cart'); var cardCopy = $(this).closest('.panel-body').find('.card-body-copy'); if (!cardCopy.size() || !cart.size()) return; var cardCoord = cardCopy.offset(); var cartCoord = cart.offset(); var lenght = Math.sqrt(Math.pow((cardCoord.top-cartCoord.top),2) + Math.pow((cardCoord.left-cartCoord.left),2)); var zoom = 0.5; var speed = 1/4; // pixel in msec var maybeTransform = (card.get(0).style['transform'] !== undefined); var l = (cartCoord.left - cardCoord.left); var t = (cartCoord.top - cardCoord.top); $(cardCopy).animate($.extend({ opacity: 0.4, left: (l > 0 ? '+' : '') + l.toString(), top: (t > 0 ? '+' : '') + t.toString(), }, maybeTransform ? {} : {height: 'toggle'}), { duration: lenght/speed, step:function(now, fx){ if (fx.prop == 'left') { $(this).css('transform-origin', '0 0' ); $(this).css('transform', 'scale('+ (zoom+(1-zoom)*(1-now/l)) +')' ); } }, complete:function(){ $(this).remove(); // cart.toggle( "bounce", { times: 3 }, "slow" ); } }); }); })(jQuery); </script>

IE and cursor and pseudo element, detect click event on pseudo-element

Отображаем курсор над псевдо элементом, как обычно у всех, все хорошо, в ИЕ не работает.
IE :-(
IE :-)
Для ИЕ используем пустой спан как контейнер.
<div id="test1" class="test">IE -(</div>
<div id="test2" class="test">IE -)<span></span></div>
И уже на него
#test2 span {
 cursor: pointer;
}
Ну и тут же тема, как ловить события от псевдоэлемента, имеем три варианта:
1) воспользуемся CSS свойством pointer-events, но тут ограничение, поддержка только в современных браузерах, так и сделано для первого примера
2) обернуть реальным элементом, тема для второго варианта
3) еще можно контролировать координаты точки клика, как-то так
if (e.offsetX > e.target.clientWidth) {

text-overflow: ellipsis и иже сним

Забью свой костыль в виде аналога эффекта получаемого с помощью свойства text-overflow: ellipsis.
В моем случае задача немного сложнее, текст не умещался совсем не много, не больше чем на 50%, потому нужно было его отобразить при наведении курсора.
Все очень легко, на помощь пришли, псевдокласс :hover и свойство direction: rtl. Все бы ничего, Firefox, Chrome, Opera, все отлично, IE приплыли.
Безымянный Ну раз уж, придется задействовать JavaScript, значит чуточку добавим требований, текст не будет просто переключаться с отображения, то с начала, то с конца, пусть он плавно прокручивается, тут и ограничение в 50% снимется.
Сляпал плагин, малютка, меньше сотни строк.

А как работает твой браузер?
Раз, два, три, четыре, пять, вышел зайчик погулять, заинька вышел… Вдруг охотник выбегает, прямо в зайчика стреляет, пиф-паф, ой-ой-ой, умирает зайчик мой, привезли его домой, оказался он живой
Живой пример
Раз, два, три, четыре, пять, вышел зайчик погулять, заинька вышел… Вдруг охотник выбегает, прямо в зайчика стреляет, пиф-паф, ой-ой-ой, умирает зайчик мой, привезли его домой, оказался он живой
Есть нюанс в зависимости от шрифта могут «уехать» точки, нужно добавить некую поправку, но пока править не стал, в моем случае все и так работало.

Simple filter table jQuery plugin

Понадобился простой фильтр в табличке по значениям с «памятью» все сессий, сваял jQuery плагин с хранением данных в локальном хранилище (localStorage).
NИДМЭСДоговорКварталКомментарийСостояние
1 58 МЭС Центра 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
2 57 МЭС Северо-Запада 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
3 56 МЭС Волги 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
4 55 МЭС Урала 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
5 54 МЭС Западной Сибири 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
6 53 МЭС Сибири 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
7 52 МЭС Востока 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
8 51 МЭС Центра 30-2012 от 18.10.2012 III 2016 Формирование
9 50 МЭС Северо-Запада 30-2012 от 18.10.2012 IV 2015 Не подлежит закрытию Формирование
10 49 МЭС Волги 30-2012 от 18.10.2012 IV 2015 Не подлежит закрытию Формирование
11 48 МЭС Востока 30-2012 от 18.10.2012 IV 2016 Октябрь 2016 Утвержден
12 47 МЭС Урала 30-2012 от 18.10.2012 IV 2016 Октябрь 2016 Утвержден
13 46 МЭС Западной Сибири 30-2012 от 18.10.2012 IV 2016 Октябрь 2016 Утвержден
14 45 МЭС Востока 30-2012 от 18.10.2012 IV 2015 Не подлежит закрытию Формирование
15 44 МЭС Урала 30-2012 от 18.10.2012 IV 2015 Не подлежит закрытию Формирование
16 43 МЭС Западной Сибири 30-2012 от 18.10.2012 IV 2015 Не подлежит закрытию Формирование
17 42 МЭС Центра 30-2012 от 18.10.2012 IV 2016 Перенос на октябрь Утвержден
18 41 МЭС Сибири 30-2012 от 18.10.2012 IV 2016 Перенос на октябрь Утвержден
19 40 МЭС Центра 30-2012 от 18.10.2012 IV 2015 Не подлежит закрытию Формирование
20 39 МЭС Северо-Запада 30-2012 от 18.10.2012 IV 2016 Перенос на октябрь Утвержден
21 38 МЭС Центра 30-2012 от 18.10.2012 III 2016 Утвержден
22 37 МЭС Юга 30-2012 от 18.10.2012 IV 2016 Декабрь 2016 Формирование
23 36 МЭС Волги 30-2012 от 18.10.2012 IV 2016 Перенос на октябрь Утвержден
24 35 МЭС Урала 30-2012 от 18.10.2012 III 2016 Утвержден
25 34 МЭС Западной Сибири 30-2012 от 18.10.2012 III 2016 Утвержден
26 33 МЭС Сибири 30-2012 от 18.10.2012 III 2016 Утвержден
27 32 МЭС Сибири 30-2012 от 18.10.2012 IV 2015 Не подлежит закрытию Формирование
28 31 МЭС Востока 30-2012 от 18.10.2012 III 2016 Утвержден
29 26 МЭС Урала 30-2012 от 18.10.2012 II 2016 Утвержден
30 25 МЭС Волги 30-2012 от 18.10.2012 II 2016 Утвержден
31 24 МЭС Северо-Запада 30-2012 от 18.10.2012 II 2016 Утвержден
32 22 МЭС Западной Сибири 30-2012 от 18.10.2012 II 2016 Утвержден
33 21 МЭС Сибири 30-2012 от 18.10.2012 II 2016 Утвержден
34 20 МЭС Юга 30-2012 от 18.10.2012 II 2016 Утвержден
35 19 МЭС Центра 30-2012 от 18.10.2012 II 2016 Утвержден

css title

Задача, в таблице есть строки с некоторыми стилями флагами, код и js недоступен, только css, нужно проставить title атрибут, некий аналог.

tr.is-foreign:hover td:nth-child(2):before {
 position: absolute;
 background: #fff;
 border: 1px solid grey;
 border-radius: 3px;
 color: #000;
 padding: 4px 6px;
 margin-top: -24px;
 content: "\421\418\20\43D\430\20\0437\430\43C\435\43D\443";
}
 
От "Чужое СИ" взял Unicode Entities, получил  %u0427%u0443%u0436%u043E%u0435%20%u0421%u0418
%u0 заменяем на \, %u на \ получаем значение content
 
Безымянный92