Рассмотрим вот этот лоадер
http://jquery.eisbehr.de/
Подробнее
-
jquery lazy load — показать все изображения по клику.
-
jquery — Простое раскрывающееся меню (левое).
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798<script>$(document).ready(function() {$('ul#my-menu li').each(function(i) {if($(this).find('ul').length>0){$(this).addClass('parrent').append('<i class="el-submenu__icon-arrow el-icon-arrow-down el-icon-arrow-top"></i>');}})$('ul#my-menu li.active_element').closest('ul').addClass('active');$('ul#my-menu li.active_element').parents('ul').addClass('active');//http://loco.ru/materials/66-javascript-expanded-collapse-menu$('ul#my-menu>li>i, ul#my-menu>li>a').click(function(e) { // Attach an event listener// debugger;e.preventDefault();var li=$(this).closest('li');var href=$(this).closest('li').find('a:first').attr('href');if(li.find('ul:first').length==0){location.href=href;}if(li.find('ul:first').is(':visible')){ li.find('ul:first').hide();li.removeClass('open');}else{li.find('ul:first').show();li.addClass('open');}// return false; // Prohibit the browser to follow the link address});//http://loco.ru/materials/66-javascript-expanded-collapse-menu$('ul#my-menu>li>ul>li>i, ul#my-menu>li>ul>li>a').click(function(e) { // Attach an event listener// debugger;e.preventDefault();var li=$(this).closest('li');var href=$(this).closest('li').find('a:first').attr('href');if(li.find('ul:first').length==0){location.href=href;}if(li.find('ul:first').is(':visible')){ li.find('ul:first').hide();li.removeClass('open');}else{li.find('ul:first').show();li.addClass('open');}});/*//http://loco.ru/materials/66-javascript-expanded-collapse-menu$('ul#my-menu>li>i').click(function(e) { // Attach an event listener// debugger;var li=$(this).closest('li');if(li.find('ul:first').is(':visible')){ li.find('ul:first').hide();li.removeClass('open');}else{li.find('ul:first').show();li.addClass('open');}// return false; // Prohibit the browser to follow the link address});//http://loco.ru/materials/66-javascript-expanded-collapse-menu$('ul#my-menu>li>ul>li>i').click(function() { // Attach an event listenervar li=$(this).closest('li');if(li.find('ul:first').is(':visible')){ li.find('ul:first').hide();li.removeClass('open');}else{li.find('ul:first').show();li.addClass('open');}});* */});</script> -
Сервис по разворачиванию js
для разворачивания сжатых js я пользуюсь:
Подробнее -
Очистка input radio (снятие выделения) с помощью Jquery
Для снятия выделения с Input type=radio надо использовать следующую команду jquery.
1jQuery("input[name='filter_category_id']").prop('checked', false); -
Считаем количество строк в тексте c помощью js и css
Для того что бы скрыть текст по количеству строк недостаточно css. Вернее достаточно, но мы не сможем подсчитать количество строк.
1. Надо сделать 2 вложенных блока. внутренний блок тянется и мы через js считаем его высоту. Высота обрамляющего блока фиксирована и сделан overflow для скрытия лишнего.12345<div class="product_prod_text_out"><div class="product_prod_text_in">text высотой в 100 пикселов и (5 строк ) шрифт јриал</div></div>Js измеряет высоту внутреннего блока.
Подробнее -
Yii2 — Несколько полезных фитч для компонента costa-rico/yii2-images
Маленькое резюме- текущая статья устарела в начале 2018 года, когда переписали это расширение. здесь можно взять общую организацию проекта. Я как автор опасаюсь, что вас веду в заблуждение. Если я опять возьмусь за разработку на Yii2- обязательно скорректирую эту статью, но с новым кодом. Если у вас есть конкретные корректировки- присылайте, я буду благодарен и будут благодарны многочисленные читатели этой статьи.
——————
Это настройки в файл web123456789101112131415'components' => [....// компонет рисунков'yii2images' => ['class' => 'rico\yii2images\Module',//be sure, that permissions ok//if you cant avoid permission errors you have to create "images" folder in web root manually and set 777 permissions'imagesStorePath' => 'upload/store', //path to origin images'imagesCachePath' => 'upload/cache', //path to resized copies'graphicsLibrary' => 'GD', //but really its better to use 'Imagick''placeHolderPath' => '@webroot/upload/store/no-image.png', // if you want to get placeholder when image not exists, string will be processed by Yii::getAlias],.....], -
jquery scroll : событие прокрутки до выбранного элемента и до конца страницы
Данный код определяет прокрутку до элемента .scroll_picca и если доходим до него то показываем меню или производим любое другое действие.
Вторая проверка- на скролл до низа страницы. Если дошли до низа — производим нужное действие.123456789101112131415161718jQuery(window).scroll(function() {// проверка на докрутку до определенного элементаvar scroll_picca =jQuery('.scroll_picca').offset().top;console.log(scroll_picca) ;// выводим в консоль смещение элемента пицца//если мы докрутили до нужного элементаif (jQuery(this).scrollTop() > scroll_picca) {// создаем эффекты и анимациюjQuery(".bottom_float_menu").show();}else{jQuery(".bottom_float_menu").hide();}// если докрутил до низа страницыif(jQuery(window).scrollTop()+jQuery(window).height()>=jQuery(document).height()){jQuery(".bottom_float_menu").hide();}}); -
Позиционируем форму по центру экрану с возможностью прокрутки
После нажатия на кнопку, центрируем форму div.nashli_deshevle_form и показываем её. Показываем подложку -div.empty
1234567891011jQuery('a.nashli_deshevle_button').on('click', function(e){e.preventDefault();var scroll=jQuery(window).scrollTop();var b_height=jQuery(window).height(); //высота браузераvar f_height=jQuery("div.nashli_deshevle_form").height(); // высота формыscroll=scroll+(b_height-f_height)/2;jQuery("div.nashli_deshevle_form").css('top',scroll+'px'); // позиционируем формуjQuery("div.nashli_deshevle_form").show(); // показываем формуjQuery("div.empty").show(); // показываем подлолжкуreturn false;});1234567891011121314151617181920212223242526272829303132div.empty {display: none;position: fixed;width: 100%;height: 100%;left:0px;top:0px;z-index: 920;background: #000;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=30);-moz-opacity: 0.30;-khtml-opacity: 0.30;opacity: 0.30;zoom: 1;}.nashli_deshevle_form {position: absolute;padding: 0px 0px 15px 0px;border-radius: 6px;overflow: hidden;display: none;/* position: fixed; */top: 40px;left: 350px;width: 500px;/* margin: 0px 0px 0px -250px; */z-index: 930;text-align: left;background-color: #fff;} -
Скролл по хешу (после решетки) в url- Jquery
ссылка http://test.ru/#scroll_garniry обрабатывается и скроллится до элемета в тексте у которого есть класс scroll_picca
1234567891011var hash=window.location.hash.toString();if(!empty(hash)){if(hash!="#"){var myclass = '.'+hash.slice(1);//var a_menu =jQuery('attr[href="'+hash+'"]').html('33333');position =jQuery(myclass).position();jQuery("html, body").animate({scrollTop: position.top-95}, 600);}}А вот меню для скролла.
только на главной странице скрол, на других — клик , затем переход на главную+ скролл на главной. Нужно заранее определиться с переменной $page .1234567891011121314151617181920212223242526272829303132333435<ul id="uslugi"><li><a class="arrow" href="">Меню</a><ul><?php$mas_id= array('scroll_picca'=>'Пицца','scroll_rolly'=>'Роллы','scroll_garniry'=>'Гарниры','scroll_salaty'=>'Салаты','scroll_bizlanch'=>'Бизнес ланч','scroll_deserty'=>'Десерты','scroll_napitki'=>'Напитки',);foreach ($mas_id as $key=>$val){$id_scroll=$key;if($page=='main'){$slesh='';?><li><a id="<?php echo $id_scroll; ?>" href="<?php echo $slesh; ?>#<?php echo $id_scroll; ?>"><?php echo $val; ?></a></li><?php}else{//$id_scroll='';$slesh='/';?><li><a id="<?php echo $id_scroll; ?>" href="<?php echo $slesh; ?>#<?php echo $id_scroll; ?>"><?php echo $val; ?></a></li><?php}}?></ul></li></ul> -
Дожидаемся загрузки изображений после срабатывания ajax
Эту функцию вынести за Ready
123456789101112131415161718192021222324// функция предзагрузки изображенияjQuery.preloadImages = function () {if (typeof arguments[arguments.length - 1] == 'function') {var callback = arguments[arguments.length - 1];} else {var callback = false;}if (typeof arguments[0] == 'object') {var images = arguments[0];var n = images.length;} else {var images = arguments;var n = images.length - 1;}var not_loaded = n;for (var i = 0; i < n; i++) {jQuery(new Image()).attr('src', images[i]).load(function() {if (--not_loaded < 1 && typeof callback == 'function') {callback();}});}}вот пример вызова ajax
123456789101112131415161718192021222324jQuery.get(url , function( data ) {var container_str='.container_category_'+category+' .row'; //тут прописываем id, класс цели , что будем проверятьjQuery(container_str).html(data);//обработка после загрузкиvar paths = [];var images = jQuery(container_str).find('img');images.each(function() {paths.push(jQuery(this).attr('src'));});jQuery.preloadImages(paths, function () {// инициализация галереи или иной код (можно удалить)- применялся для выравнивания блоков после загрузки. Функция setEqualHeight - описана в другой статьеif (jQuery(window).width() >= '750'){//выравнивание по высоте всех стразу пицц, роллов и другихvar obj=jQuery(container_str).find(".thumbnail");//функция выравнивания блоков по высоте ( )setEqualHeight(obj);}//alert(0);});});Одиночные картинки
123jQuery.preloadImages(["first_image.jpg","second_image.jpg"], function () {alert('Обе картинки загружены.');});по сути весь выше код это автоматизация вот этой команды
123$(new Image()).attr('src', '/img/preload_me_plz.jpg').load(function() {alert('Я загрузилось!');});
Цены
1500 р/чБолее подробно тут: https://ftask.ru/цены