css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
11 Фев
Этот плагин к jQuery написал Ralf Stoltze. Мне очень понравилось – можно немного отдохнуть и расслабиться. И самое интересное – легко и просто можно подставить любую картинку, да хоть свою фотографию…
В общем расслабьтесь и поиграйте пока, а все пояснения потом, когда отдохнете.
Для того, чтобы сделать эту игрушку на своем сайте необходимо будет скачать библиотеку jQuery и плагин jqPuzzle.
В примере, исходный код которого Вы можете скачать на моем сайте, плагин jqPuzzle уже есть.
В раздел HEAD страницы надо файлов javascript, вот так:
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.jqpuzzle.js"></script>
и, если Вы используете не пример с моего сайта Вам надо будет подключить файл стилей (в моем примере стили включены в страницу).
<link rel="stylesheet" type="text/css" href="jquery.jqpuzzle.css" />
Дальнейшая настройка возможна тремя различными способами:
Способ первый, самый простой.
Просто добавляем на страницу понравившуюся картинку
<img src="image.jpg" alt="Моя картинка" class="jqPuzzle" />
и указываем имя класса class=»jqPuzzle». Это все! Пятнашки будут работать! Правда все настройки будут установлены по умолчанию и Вам придется довольствоваться надписями на кнопках на английском языке.
Способ второй, настройка с использованием CSS микроформатов.
Этот способ позволит настроить наиболее важные возможности. По сути, Вы просто добавляете второе (дополнительное) имя класса к уже существующему имени в тэге IMG, соблюдая следующий синтаксис:
jqp[-LANGUAGE]-rROWS-cCOLS[-hHOLE][-sSHUFFLE_ROUNDS][-FLAGS]
Здесь необходимо заменить символы в верхнем регистре реальными значениями. Все, что заключено в квадратные скобки можно не использовать. Приведу список возможных значений и примеры.
LANGUAGE: код языка. По умолчанию – английский (en). Доступные языки – fr, de, pt и я дописал для русского – ru (это если использовать исходный код с моего сайта).
ROWS: количество строк (от 3 до 9)
COLS: количество столбцов (от 3 до 9)
HOLE: позиция свободного места (от 1 до ROWS*COLS). По умолчанию – последняя позиция, в правом нижнем углу.
SHUFFLE ROUNDS: количество циклов перемешивания. По умолчанию установлено 3.
FLAGS: дополнительные опции с помощью которых можно настроить вид игрушки при загрузке страницы (перечислены ниже). Можно использовать любое количество флагов, в любом порядке.
S: картинка будет перемешана при загрузке страницы.
N: при загрузке цифры будут скрыты.
A: скрывает кнопку «Перемешать».
B: скрывает кнопку «Оригинал».
C: скрывает кнопку «Цифры».
D: скрывает количество перемещений.
E: скрывает количество секунд.
Несколько примеров, чтобы стало совсем понятно.
Пример 1: 3 строки, 5 колонок, «дырка» в позиции 5.
<img src="image.jpg" alt="Моя картинка" class="jqPuzzle jqp-r3-c5-h5" />
Пример 2: язык – немецкий, 5 строк, 5 колонок.
<img src="image.jpg" alt="Моя картинка" class="jqPuzzle jqp-de-r5-c5" />
Пример 3: язык – русский, 3 строки, 3 колонки, «дырка» в позиции 5, загружается со скрытыми цифрами и не отображается количество перемещений и время.
<img src="image.jpg" alt="Моя картинка" class="jqPuzzle jqp-ru-r3-c3-h5-NDE" />
думаю, что смысл здесь вполне понятен.
Способ третий, использование синтаксиса jQuery.
<script type="text/javascript">
$(document).ready(function() {
$("img").jqPuzzle();
});
</script>
это простейший пример, с настройками по умолчанию, который сделает пятнашки из всех тэгов img на странице. Понятно, что это для примера, реально Вы можете использовать любой селектор. Вообще же jqPuzzle() может принимать два аргумента, первый из которых содержит настройки, а второй – надписи на кнопках. Выглядеть это может вот так:
<script type="text/javascript">
$(document).ready(function(){
var myTexts = {
shuffleLabel: "Перемешать",
toggleOriginalLabel: "Оригинал",
toggleNumbersLabel: "Цифры",
confirmShuffleMessage: "Перемешать?",
movesLabel: "перемещений",
secondsLabel: "секунд"
}
var settings = {
rows: 4,
cols: 4,
hole: 16,
shuffle: false,
numbers: true,
language: en
}
$(".jqPuzzle").jqPuzzle(settings, myTexts);
});
</script>
Что касается стилевого оформления – можно подправить все на свой вкус и цвет, естественно не трогая названий классов.
Согласитесь, прикольная игрушка?
Отзывов (26) на «jQuery Puzzle»
простите, но у меня не получается перемещать пазлы, првоерял в опере 9.51 и FF3
Как насчет вкл./откл. поддержки JavaScript в броузерах? Поддержка должна быть включена.
ещё, возможно, это играет роль, я под линуксом заходил…
фф2 под виндой – таки да, пашет… ( проверил под виртуалкой)
Гы, как только напишу коммент в блоге, у меня тоже работать перестает…. Как только почистишь браузер от сессий – работает….
да и коментарий я написал уже после того, как проверил работоспособность, а не наоборот
просто буквально недавно столкнулся с тем, что одни и те же браузеры ведут себя по-разному в разных осях…
Сурово! У меня под Виндами в Опере 9.24 и в IE6 все прекрасно и без проблем. А вот в FF3.0.1 действительно непонятки….. Под FF2 – нормально.
кхм… вот не знаю, кто тут крайний, но сейчас у меня работает везде
даже в фф3
O_o
кстати, даже после написания комента всё нормально работает в опере… жуть…
думаю, тогда имеет смысл почистить коментарии, давайте сведём всё к моей криворукости и забудем
Классная штука!
А кто-нибудь может подсказать, как можно внедрить вот эту мозайку. Я почему-то не догнал. Где там JS файлы брать, как подключать
_http://www.bennadel.com/blog/1009-jQuery-Demo-Creating-A-Sliding-Image-Puzzle-Plug-In.htm?&_=0.3996545052124678#comments_24762
Заранее спасибо!
Пример подключения на той же самой странице, вверху, самый первый код, который приведен. Ссылка на загрузку файла внизу, в конце статьи, но перед началом комментариев.
Спасибо! Извините, я наверное со своим тугим английским не смог разобраться.
Вопросик, а как этоп плагин прикрутить к уже существующей галереи картинок php? плиз помогите!!!
что бы из любой картинки можно было складывать пазл?
А как можно вынести функционал кнопок «перемешать» и «оригинал» за пределы паззла? (хочу вместо кнопок сделать текстовые ссылки для работы с паззлом)
Здравствуйте!
Подскажите как сделать, чтобы паззлы на фото появлялись не сразу, а только после клика по определенной ссылке или кнопке. Долго экспериментировал, не получается, паззлы появляются только, когда на фото сразу прописан class=»jqPuzzle».
И еще, сайт отличный и очень полезная информация, не много таких сайтов. Так что так держать! А те, кто проголосовал в опросе «Отстой какой-то!», люди не далекие, ничего не понимающие в нашем деле, не обижайтесь на них.
Выход – инициализировать плагин не по готовности документа, т.е. по событию ready, а по какому либо другому событию, например click:
<script type="text/javascript"> $(document).ready(function() { $('a.puzzle').click(function(){ $('img:first').jqPuzzle(); }); }); </script>В приведенном примере, при клике на ссылке, которая имеет класс puzzle, плагин будет инициализирован для первого элемента img на странице… Это только пример, который поясняет принцип. И тут совсем необязательно наличие class=’jqPuzzle’ у картинки. Надо немножно понять возможности селекторов jQuery и разобраться с обработкой событий в этой библиотеке.
Оказывается всё очень просто, можно когда надо вызывать функцию jqPuzzle();. А я тут было уже такие конструкции наворотил. Плагин наполовину разобрал.
Теперь Всё отлично, всё работает!
Большое спасибо!!!
Ещё вопрос, если можно. После вызова jqPuzzle(); фото становится паззлами. А как вернуть обратно. Если без перезагрузки страницы невозможно, то как сделать с перезагрузкой?
Перезагрузкой можно, но неинтересно… (см. http://javascript.ru/window-location)
А так можно (нужно) поэкспериментировать. Например, заменить атрибут src у картинки средствами jQuery или поискать кнопку Original (пользуясь средствами отладки, тем же FireBug или Dragon Fly для Opera) и попробовать воздействовать на нее…
Да много вариантов может быть.
Ура! Придумал, всё работает:
$(document).ready(function(){
$(«.15″).toggle(
function () {
$(«div.jqPuzzle»).remove();
$(«#fotka»).removeAttr(«style»);
$(«.15″).text(» Играть в пятнашки «);
},
function () {
$(«#15″).clone().insertAfter(«#15″);
$(«#15:first»).jqPuzzle();
$(«#fotka»).css(«display»,»none»);
$(«.15″).text(» Выход «);
}
).click();
});
Играть в пятнашки
Теперь думаю ещё проще сделать.
Где весь текст? Текст не весь отобразился
Здравствуйте Геннадий! Подскажите пожалуйста как найти на странице тег TD где находится определенный текст и изменить цвет bgcolor и сам текст.
Было:
<td> bgcolor=»#FFFFFF» align=»center»>старый текст</td>
Что нужно получить:
<td> bgcolor=»#FF0000″ align=»center»>новый текст</td>
Здравствуйте Сергей!
На такой вопрос Вам с удовольствием ответят на форуме jQuery. Там интерфейс намного более приспособлен для этого, чем комментарии в блоге.
Оставьте отзыв