Полезные jQuery сниппеты
jQuery — очень мощный инструмент для front-end разработки.
В этой статье представлены полезные jQuery сниппеты, которые можно применить в своих проектах.
Плавная прокрутка при нажатии на ссылку
Всегда приятно, если на сайте есть кнопка, которая позволяет прокручивать страницу вверх.
С помощью jQuery легко сделать ссылку, при нажатии на которую страница будет прокручена до нужного вам места.
При этом страница будет прокручена плавно, а не просто перепрыгнет вверх.
// HTML: // <h1 id="anchor">До этого заголовка будет прокрутка</h1> // <p><a href="#anchor">Back to Top</a></p> $(document).ready(function() { $("a.topLink").click(function() { $("html, body").animate({ scrollTop: $($(this).attr("href")).offset().top + "px" }, { duration: 500, easing: "swing" }); return false; }); });
Изменение размеров изображения с помощью jQuery
Обычно изменять размеры изображения — это обязанность сервера (PHP GD например), но иногда бывает полезно изменить размеры картинки, используя jQuery. Вот код, который позволит это сделать:
$(window).bind("load", function() { // IMAGE RESIZE $('#product_cat_list img').each(function() { var maxWidth = 120; var maxHeight = 120; var ratio = 0; var width = $(this).width(); var height = $(this).height(); if(width > maxWidth){ ratio = maxWidth / width; $(this).css("width", maxWidth); $(this).css("height", height * ratio); height = height * ratio; } var width = $(this).width(); var height = $(this).height(); if(height > maxHeight){ ratio = maxHeight / height; $(this).css("height", maxHeight); $(this).css("width", width * ratio); width = width * ratio; } }); //$("#contentpage img").show(); // IMAGE RESIZE });
Автоматическая загрузка контента при скролле
Некоторые сайты, Facebook например, автоматически подгружают контент, когда пользователь прокручивает страницу вниз. jQuery для динамической загрузки страницы:
var loading = false; $(window).scroll(function(){ if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){ if(loading == false){ loading = true; $('#loadingbar').css("display","block"); $.get("load.php?start="+$('#loaded_max').val(), function(loaded){ $('body').append(loaded); $('#loaded_max').val(parseInt($('#loaded_max').val())+50); $('#loadingbar').css("display","none"); loading = false; }); } } }); $(document).ready(function() { $('#loaded_max').val(50); });
Проверка надежности пароля с помощью jQuery
При создании форм полезно предоставить возможность проверки данных перед отправкой их на сервер. Этот сниппет использует регулярное выражение для проверки надежности пароля. При этом нельзя полностью доверять фронт-энду, не забывайте проверить данные на сервере!
$('#pass').keyup(function(e) { var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$", "g"); var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g"); var enoughRegex = new RegExp("(?=.{6,}).*", "g"); if (false == enoughRegex.test($(this).val())) { $('#passstrength').html('More Characters'); } else if (strongRegex.test($(this).val())) { $('#passstrength').className = 'ok'; $('#passstrength').html('Strong!'); } else if (mediumRegex.test($(this).val())) { $('#passstrength').className = 'alert'; $('#passstrength').html('Medium!'); } else { $('#passstrength').className = 'error'; $('#passstrength').html('Weak!'); } return true; });
Выравнивание div’ов по высоте
Выровнять высоту div’ов с помощью чистого CSS невозможно (ну или очень сложно), на jQuery сделать это гораздо проще. Следующий код автоматически выровняет высоту div элементов по самому высокому.
var maxHeight = 0; $("div").each(function(){ if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } }); $("div").height(maxHeight);
Делаем IE6 совместимым с PNG
Можно долго говорить о том как плох IE6, но верстать кросс-браузерно все равно надо. Хоть IE6 уже почти никто не использует, может возникнуть необходимость сделать IE6-совместимый сайт. Следующий код позволит IE6 справиться с прозрачностью PNG.
Просто добавьте класс .pngfix
ко всему, что надо исправить или выберите другой селектор.
$('.pngfix').each( function() { $(this).attr('writing-mode', 'tb-rl'); $(this).css('background-image', 'none'); $(this).css( 'filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="path/to/image.png",sizingMethod="scale")'); });
Парсинг json с помощью jQuery
Эффективный способ парсить данные JSON и отображать на странице.
function parseJson(){ //Сначала создаем JSON объект (в данном случае из файла) //Так же определим коллбэк для обработки данных $.getJSON('hcj.json',getPosts); function getPosts(data){ for(var i = 0; i < 5; i++){ var strPost = '<h2>' + data.posts[i].title + '</h2>' + '<p>' + data.posts[i].excerpt + '</p>' + '<a href="' + data.posts[i].url + '" title="Read ' + data.posts[i].title + '">Read ></a>'; $('body').append(strPost); } } } $(document).ready(function(){ parseJson(); });
Разные цвета строк
В больших списках или таблицах разные цвета строк сильно улучшают читаемость. Немного кода jQuery может решить проблему. Можно использовать любые html элементы td
, tr
, li
, и т.д.
//jquery $('div:odd').css("background-color", "#F4F4F8"); $('div:even').css("background-color", "#EFF1F1"); //html example <div>Row 1</div> <div>Row 2</div> <div>Row 3</div> <div>Row 4</div>
Нет комментариев