Статьи

Создайте захватывающую фотогалерею с MooTools

Библиотеки JavaScript, такие как MooTools, могут сэкономить много времени при разработке сайта. В этом уроке я покажу вам, как объединить многие функции MooTools для создания красивой фотогалереи.




Прежде чем начать, посмотрите на демо. Будет легче понять цель каждого шага, если вы знаете цель.

Сначала создайте простой файл HTML и добавьте ссылку на таблицу стилей (main.css) и два файла JavaScript (mootools.js и main.js). Создайте эти файлы в том же каталоге. Затем перейдите в MooTools Core Builder . Выберите все компоненты и нажмите «Скачать». Это загрузит mootools-1.2-core.js. Скопируйте содержимое этого файла в файл mootools.js. Затем перейдите в MooTools More Builder, выберите все компоненты и нажмите «Скачать». Скопируйте содержимое еще раз и вставьте его в конец mootools.js.

(Примечание. Большинству сайтов, включая эту фотогалерею, не нужны все компоненты. Однако использование всех их в начале, а затем вырезание тех, которые вам не нужны, значительно упрощают разработку. В середине проекта вы поняли, что хотите, чтобы в один из компонентов, которые вы не загружали, были добавлены другие функции, поэтому вам нужно будет загрузить его снова, прежде чем продолжить. Таким образом, вам нужно будет загрузить его снова только после завершения.)

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml»>
<head>
<title>Photo Gallery</title>
 
<link rel=»stylesheet» type=»text/css» href=»main.css» />
 
<script type=»text/javascript» src=»mootools.js»></script>
<script type=»text/javascript» src=»main.js»></script>
 
</head>
 
<body>
 
</body>
</html>

Теперь нам нужно создать макет для нашей фотогалереи, используя HTML и CSS. Добавьте следующий код в теги body вашего HTML-файла.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<div id=»container»>
 
<h1>Photo Gallery</h1>
 
<div id=»picture_section»>
    <div id=»inside»>
        <img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» />
        <img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» />
        <img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» />
        <img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» />
        <img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» /><img src=»#» />
    </div>
</div>
 
<div id=»controls_vert»>
    <div id=»up» class=»deactivated»>Scroll Up</div>
    <div id=»down»>Scroll Down</div>
</div>
 
<div id=»controls_horz»>
    <div id=»left»>Left</div>
    <div id=»right»>Right</div>
</div>
 
</div>

Это создает контейнер для окружения всего кода на сайте, заголовка, раздела для изображений и элементов управления для сайта. Почему все пустые теги img? В CSS ниже мы даем им размеры и другой цвет фона, поэтому мы можем протестировать галерею без необходимости добавлять и изменять размеры реальных изображений. Теперь мы добавляем CSS в файл main.css.

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
* { margin:0;
 
.hide { display:none;
 
body {
    background:#000;
    color:#fff;
    padding:30px;
    font-family:Arial, Helvetica, sans-serif;
}
 
#container {
    width:596px;
    height:400px;
    background:#111;
    overflow:hidden;
    border:1px solid #333;
}
 
h1 {
    background:#222;
    width:592px;
    height:29px;
    padding-left:7px;
    border-bottom:1px solid #333;
    font-size:18px;
    line-height:29px;
    font-weight:normal;
}
 
#picture_section {
    padding:7px 0 7px 7px;
    width:590px;
    height:332px;
    overflow:hidden;
}
    #inside {
        width:590px;
        height:332px;
    }
    #picture_section img {
        border:0;
        height:57px;
        width:111px;
        float:left;
        background:#333;
        margin-bottom:7px;
        margin-right:7px;
        cursor:pointer;
    }
 
#controls_vert {
    background:#222;
    width:600px;
    height:23px;
    border-top:1px solid #333;
}
#controls_horz {
    background:#222;
    width:600px;
    height:23px;
    border-top:1px solid #333;
}
    #up {
        height:10px;
        width:10px;
        margin-right:7px;
        background:url(up.jpg) no-repeat;
        text-indent:-9999px;
        float:left;
        margin:7px;
        margin-bottom:6px;
        cursor:pointer;
    }
 
    #down {
        height:10px;
        width:10px;
        background:url(down.jpg) no-repeat;
        text-indent:-9999px;
        float:left;
        margin:7px;
        margin-left:0;
        margin-bottom:6px;
        cursor:pointer;
    }
    #left {
        height:10px;
        width:10px;
        background:url(left.jpg) no-repeat;
        text-indent:-9999px;
        float:left;
        margin:7px;
        margin-bottom:6px;
        cursor:pointer;
    }
    #right {
        height:10px;
        width:10px;
        background:url(right.jpg) no-repeat;
        text-indent:-9999px;
        float:left;
        margin:7px;
        margin-left:0;
        margin-bottom:6px;
        cursor:pointer;
    }
 
    div#up.deactivated { opacity:0.2;
    div#down.deactivated { opacity:0.2;
    div#right.deactivated { opacity:0.2;
    div#left.deactivated { opacity:0.2;

Вот как это выглядит при применении.

Поскольку галерея начинается сверху, стрелка вверх автоматически отключается. Кроме того, стрелки влево и вправо автоматически скрываются, потому что они будут отображаться только при увеличении большого изображения. Кроме того, показаны только вершины изображений в шестом ряду, чтобы пользователь знал, что их ниже.

Теперь давайте добавим наложение, которое будет показывать большие изображения. Сначала добавьте следующий код прямо перед закрывающим тегом body в вашем HTML-файле.

1
2
3
<div id=»display_picture_container»>
<div id=»display_picture»>Click on the image to go back to the gallery.</div>
<div id=»display_picture_img»></div></div>a

Добавьте следующее в конец вашего CSS-файла, чтобы элементы div выглядели как наложение на миниатюры.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#display_picture_container {
    position:absolute;
    top:0;
    left:0;
    width:700px;
    height:400px;
    padding-top:16px;
}
 
#display_picture {
    position:absolute;
    top:61px;
    left:31px;
    width:596px;
    height:330px;
    background:#000;
    opacity:0.8;
    text-align:center;
    font-size:11px;
    padding-top:16px;
}
 
#display_picture_img {
    position:absolute;
    top:108px;
    left:65px;
    height:272px;
    width:530px;
    cursor:pointer;
}

Это создает этот эффект:

Большое изображение появится там, где находится div (теперь невидимый) display_picture_img (под кнопкой «Нажмите на изображение», чтобы вернуться к тексту галереи).

Это хорошее время, чтобы собрать все ваши фотографии и изменить их размер. Прежде всего, создайте папку «картинки» и папку «большие пальцы». Добавьте все свои изображения в папку с изображениями и назовите их 1.jpg, 2.jpg, 3.jpg и т. Д. Измените их размер до размера display_picture_img div: 530 пикселей в ширину и 272 пикселя в высоту. Затем скопируйте эти файлы в каталог thumbs и измените размер этих копий до 111 пикселей в ширину и 57 пикселей в высоту. Неважно, сколько фотографий у вас есть. Тем не менее, я бы рекомендовал использовать более 26 для этого урока, чтобы вы могли использовать вертикальную прокрутку.

Первое, что нужно сделать, это удалить все теги <img src = «#» /> в файле HTML. Это были только заполнители; мы добавим файлы с JavaScript позже. Теперь мы сделаем наложение исчезнет при загрузке страницы. Добавьте следующий код в файл main.js

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
var number_of_pictures = 32;
 
function show_pictures () {
    var while_pictures = 1;
    while(while_pictures <= number_of_pictures) {
        var new_image = new Element(‘img’, {
            ‘src’: ‘thumbs/’ + while_pictures + ‘.jpg’,
            ‘id’: ‘image_’ + while_pictures,
            ‘events’: {
                ‘click’: function(){
                    $(‘display_picture_img’).innerHTML = «<img src=\»» + this.src.replace(‘thumbs/’, ‘pictures/’) + «\» id=\»big_picture\» class=\»» + this.id + «\» />»;
                    $(‘display_picture_container’).fade(1);
                    $(‘big_picture’).fade(.999999);
                    $(‘controls_vert’).setStyle(‘display’, ‘none’);
 
                    if(this.id.replace(‘image_’, »)==1) {
                        $(‘left’).set(‘class’, ‘deactivated’);
                        $(‘right’).erase(‘class’);
                    } else if(this.id.replace(‘image_’, »)==number_of_pictures) {
                        $(‘left’).erase(‘class’);
                        $(‘right’).set(‘class’, ‘deactivated’);
                    } else {
                        $(‘left’).set(‘class’, ‘activated’);
                        $(‘right’).erase(‘class’);
                    }
 
                    $(‘controls_horz’).setStyle(‘display’, ‘block’);
                    $(‘left’).tween(‘margin-left’, ‘286px’);
                }
            }
        });
 
        new_image.inject($(‘inside’));
 
        // preload all of the images
        var preload_image = new Element(‘img’, {
            ‘src’: ‘pictures/’ + while_pictures + ‘.jpg’,
            ‘class’: ‘hide’
 
        });
        preload_image.inject($(‘container’));
 
        // NOTE: I didn’t create an alt attribute because it won’t be seen by anyone here anyway.
        while_pictures++;
    }
 
}
window.addEvent(‘domready’, function() {
 
    show_pictures();
 
    $(‘display_picture_container’).fade(‘hide’);
 
});

Вот как это выглядит:

Чтобы объяснить это, давайте начнем с низу. В MooTools код window.addEvent выполняет код внутри, когда DOM готов к визуализации элементов. $ (‘Display_picture_container’). Fade (‘hide’); скрывает элемент display_picture_container и все его содержимое. Я использовал метод fade (‘hide’), потому что мы будем использовать его позже. Мы не создаем показ: нет; оператор в нашем CSS-файле или JavaScript должен скрывать его таким образом; он должен быть скрыт функцией, которую мы собираемся использовать, чтобы показать ее позже (исчезать).

Теперь по большей части: функция show_pictures. Прежде всего, мы устанавливаем переменную number_of_pictures. Это говорит функции добавлять миниатюры из папки thumbs, используя каждое целое число от 1 до заданного числа. Чтобы добавить больше изображений в это слайд-шоу, все, что вам нужно сделать, это добавить их в папки, изменить их размер и увеличить значение number_of_pictures. Я использовал 32.

Следующая часть — это внутренняя работа show_pictures. Это, как следует из названия, показывает все картинки. Он также предварительно загружает большие картинки в фоновом режиме. Внутри функции while_pictures определено как 1. Это переменная, которую мы будем использовать в качестве отправной точки для отображения всех изображений. Следующий оператор while показывает, что код внутри будет выполняться один раз для каждого изображения, начиная с одного и заканчивая общим количеством изображений (number_of_pictures). Обратите внимание, что while_pictures ++; находится в конце цикла while, чтобы увеличить его на единицу каждый раз, когда цикл повторяется.

Далее мы создаем экземпляр Element для элемента img. Мы можем добавить атрибуты src, id, class, event и другие. Однако нам нужны только src, id и events. Используя ‘src’: ‘thumbs /’ + while_pictures + ‘.jpg’, мы заявляем, что хотим, чтобы src изображения был таким, каким является текущий номер oru, и внутри папки thumbs. Идентификаторы для всех наших миниатюр будут image_1, image_2 и т. Д.

Теперь мы хотим, чтобы после нажатия на миниатюру появилось большое изображение, поэтому мы создаем событие щелчка. Первая строка под этим делает display_picture_img div contian большим изображением с идентификатором big_picture и классом идентификатора миниатюры (image_1, image_2 и т. Д.). Помните, что в настоящее время div display_picture_img скрыто.

Теперь используйте метод .fade (1), чтобы добавить в div display_picture_container и все его содержимое. 1 представляет уровень непрозрачности (1 — 100%, .5 — 50% и т. Д.). Однако это вызывает ошибку во всех браузерах, кроме новейших, таких как Firefox 3 и Safari. Они появляются правильно, но другие просто появляются на изображении и исчезают в более темной области вокруг него. После долгих экспериментов я обнаружил, что если изображение большого размера (с идентификатором big_picture в качестве его идентификатора) исчезает с помощью собственного метода постепенного изменения, оно работает, но только в том случае, если для параметра плавного перехода не установлено значение 1. Однако нам нужна картинка быть на 100% непрозрачности. Поэтому я установил его на .999999, который не имеет заметной прозрачности.

Так что теперь большая картинка на экране. Однако мы также хотим, чтобы элементы управления переместились в центр и стали стрелками влево и вправо вместо стрелок вверх и вниз. Прежде всего, мы скрываем вертикальные элементы управления (controls_vert). Мы можем использовать дисплей: нет; для этого, потому что мы не собираемся исчезать или исчезать. Затем мы используем операторы if, if else и else, чтобы определить, было ли изображение, по которому щелкнули, первым или последним в нашей галерее. Если это был первый, мы не хотим, чтобы он мог идти влево, потому что предыдущего не существует. То же самое необходимо справа. Позже, когда у нас будут работать стрелки влево и вправо, мы обнаружим, есть ли у него деактивированный класс. Это определит, будет ли событие щелчка работать для него. (Также ознакомьтесь с CSS. Он устанавливает изображение стрелки на 20%. Это избавляет от необходимости иметь 8 изображений стрелки направления вместо 4.)

Далее мы отображаем горизонтальные элементы управления, устанавливая его стиль отображения на блокировку. Итак, скрывая вертикальные элементы управления и показывая горизонтальные элементы управления, мы просто отключили их. Однако мы хотим, чтобы горизонтальные элементы управления были центрированы. Я достиг этого, создав анимацию, которая оживляет увеличение левого поля до 286 пикселей, который является центром галереи.

Теперь, когда мы создали наш new_image, мы должны поместить его в документ. Метод inject позволяет нам вставить вновь созданный элемент img во внутренний div.

Мы также хотим предварительно загрузить каждое из изображений, чтобы не было никаких задержек, когда люди фактически щелкают по изображениям, чтобы затемнять их. Мы создаем новый элемент img для каждого полноразмерного изображения. Однако он использует класс hide, который в нашем CSS использует display: none; скрыть содержимое. Затем мы вставляем скрытое изображение предварительного загрузчика в контейнер div.

Вот как это выглядит после нажатия на миниатюру:

Теперь мы должны сделать так, чтобы картинка исчезла при нажатии на нее. Вставьте следующий код после $ (‘display_picture_container’). Fade (‘hide’); заявление в main.js.

1
2
3
4
5
6
7
8
9
$(‘display_picture_img’).addEvent(‘click’, function(){
       $(‘display_picture_container’).fade(0);
       $(‘big_picture’).fade(0);
       $(‘up’).setStyle(‘margin-left’, ‘286px’);
       $(‘controls_horz’).setStyle(‘display’, ‘none’);
       $(‘controls_vert’).setStyle(‘display’, ‘block’);
       $(‘left’).setStyle(‘margin-left’, ‘7px’);
       $(‘up’).tween(‘margin-left’, ‘7px’);
   });

Это добавляет событие щелчка к div, содержащему большое изображение. При щелчке контейнер исчезает до нуля, и из-за вышеупомянутой ошибки само изображение также исчезает до 0. Затем мы устанавливаем скрытый элемент div так, чтобы у него был такой же более высокий край слева, как у левого элемента div. Затем мы мгновенно переключаем горизонтальные элементы управления обратно на вертикальные элементы управления, а затем, после установки скрытого левого div обратно на исходное левое поле, мы анимируем левое поле стрелки вверх до исходного 7px, используя другую анимацию движения. Теперь вы можете нажать на миниатюры, чтобы взорвать их, а затем нажмите на большое изображение, чтобы скрыть его снова. Почти сделано!

Теперь возьмите следующий код и вставьте его над только что введенной вами кодой.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
var vertical_moves = 0;
var rows = Math.ceil(number_of_pictures/5);
 
if(rows>5) {
 
    $(‘up’).addEvent(‘click’, function(event){
        if(!$(‘up’).hasClass(‘deactivated’)) {
            vertical_moves—;
            $(‘down’).erase(‘class’);
            $(‘inside’).tween(‘margin-top’, ‘-‘+ (64 * vertical_moves) +’px’);
            if (vertical_moves==0) {
                $(‘up’).set(‘class’, ‘deactivated’);
            }
        }
    });
 
    $(‘down’).addEvent(‘click’, function(event){
        if(!$(‘down’).hasClass(‘deactivated’)) {
            vertical_moves++;
            $(‘up’).erase(‘class’);
            $(‘inside’).tween(‘margin-top’, ‘-‘+ (64 * vertical_moves) +’px’);
            if(vertical_moves == (rows-5)) {
                $(‘down’).set(‘class’, ‘deactivated’);
            }
        }
    });
} else {
    $(‘up’).set(‘class’, ‘deactivated’);
    $(‘down’).set(‘class’, ‘deactivated’);
}
 
var current_id = 1;
 
$(‘left’).addEvent(‘click’, function(){
    if(!$(‘left’).hasClass(‘deactivated’)) {
        current_id = $(‘big_picture’).get(‘class’).replace(‘image_’, »);
        current_id—;
        $(‘big_picture’).fade(‘hide’);
        $(‘big_picture’).set(‘src’, ‘pictures/’ + current_id + ‘.jpg’);
        $(‘big_picture’).fade(1);
        $(‘big_picture’).set(‘class’, ‘image_’ + current_id);
        if(current_id==1) { $(‘left’).set(‘class’, ‘deactivated’);
        if(current_id==(number_of_pictures-1)) { $(‘right’).erase(‘class’);
    }
});
 
$(‘right’).addEvent(‘click’, function(){
    if(!$(‘right’).hasClass(‘deactivated’)) {
        current_id = $(‘big_picture’).get(‘class’).replace(‘image_’, »);
        current_id++;
        $(‘big_picture’).fade(‘hide’);
        $(‘big_picture’).set(‘src’, ‘pictures/’ + current_id + ‘.jpg’);
        $(‘big_picture’).fade(1);
        $(‘big_picture’).set(‘class’, ‘image_’ + current_id);
        if(current_id==2) { $(‘left’).erase(‘class’);
        if(current_id==number_of_pictures) { $(‘right’).set(‘class’, ‘deactivated’);
    }
});

Первое, что мы сделаем, это настроим вертикальную прокрутку. Прежде всего, мы создадим переменную с именем vertical_moves со значением 0. Это скажет нам, на сколько строк она сдвинулась вниз. Затем мы узнаем, сколько строк изображений у нас есть, с 5 изображениями подряд. Функция Math.ceil округляет любое число от десятичного до целого. Например, у меня есть 32 изображения. 32, деленное на 5, равно 6,4, что будет округлять до 6. Однако мы все еще хотим, чтобы показывались дополнительные изображения; несмотря на то, что в последнем ряду всего две картинки, мы хотим, чтобы они считались как целый ряд. Поскольку Math.ceil округляет все это, количество строк становится равным 7.

Затем мы обнаруживаем, есть ли более пяти строк. Если нет, мы отключаем стрелки вверх и вниз. При пяти строках или менее все изображения отображаются без необходимости использования кнопок прокрутки. Однако, если их шесть или более, мы хотим добавить к ним события. Для div стрелки вверх мы добавляем событие и затем определяем, было ли оно помечено как деактивированное или нет. Если он деактивирован, он будет отображаться с непрозрачностью только 20%, и когда вы нажмете на него, он ничего не будет делать. Кроме того, у него больше не будет указателя в качестве курсора. Однако, если у него нет этого класса, он продолжается. Если вы идете вверх, он уменьшает количество пройденных вами строк вниз, поэтому vertical_moves уменьшается на одну строку. Затем он стирает любой класс, который есть у down div. Если он находится в нижнем ряду и стрелка вниз деактивирована, то после перемещения вверх по ряду он сможет снова двигаться вниз. Следовательно, он мешает его деактивации.

Затем он заставляет все миниатюры двигаться вверх, обнаруживая, что такое новый vertical_moves, умножая его на 64 и делая его отрицательным. Число 64 используется, потому что это высота ряда миниатюр плюс поле под ним. Затем он применяет это значение к верхнему краю. Например, если маржинальная вершина изначально была -128px, она будет двигаться вверх, потому что новая маржинальная вершина будет только -64px. Метод анимации превращает его в новую позицию. Внутри файла main.css у него есть div picture_section, скрывающий переполнение. Это так, что когда вы применяете отрицательную верхнюю границу, она прячет ее, а не торчит. Затем она определяет, находится ли она наверху галереи. Если это так, он деактивирует стрелку вверх, поэтому он не может идти дальше. Стрелка вниз применяет те же действия, кроме обратного.

Теперь мы сделаем правильную работу левой и правой кнопок. Прежде всего, мы устанавливаем current_id равным единице, чтобы создать переменную. Это поможет нам определить, какое большое изображение отображается (помните, левая и правая кнопки появляются только при отображении большого изображения). Затем мы добавляем событие щелчка к левому элементу div и проверяем, деактивировано оно или нет. Если это не так, мы определяем класс img с идентификатором big_picture. Ранее это было установлено как image_ (введите номер текущего изображения здесь). Мы используем метод get, чтобы найти это, и метод replace, чтобы удалить префикс image_. Затем мы вычитаем его на единицу, потому что, двигаясь влево, мы возвращаемся к изображению с идентификатором, равным одному.

Затем мы мгновенно скрываем само изображение, а затем меняем его src на предыдущее изображение. Затем мы добавляем изображение к 100% непрозрачности. После этого мы меняем класс изображения на его новое значение, что позволяет пользователю многократно перемещаться влево. Затем мы обнаруживаем, что это на самом первом снимке. Если это так, мы больше не можем идти влево, поэтому мы деактивируем левую кнопку. Если после щелчка влево это изображение рядом с последним, это означает, что оно было только на последнем изображении, где правая кнопка была бы отключена. Если это так, мы активируем правую кнопку, чтобы они могли двигаться вперед. Практически идентичные действия применяются к правой кнопке, кроме, опять же, наоборот.

Теперь об этом. Большое изображение исчезает, когда вы нажимаете на миниатюру, вы можете перемещаться влево и вправо, возвращаться в основную галерею, нажимая на большое изображение, и прокручивать вверх и вниз. Но ждать! После разработки в хорошем браузере, таком как Firefox, вам необходимо протестировать его в других популярных браузерах, таких как Safari, IE6 и IE7. Я проверил их все, и все они работали, за исключением — сюрприз! — Internet Explorer 6. Когда вы нажимаете на изображение, и горизонтальные элементы управления выдвигаются, они слишком сильно выдвигаются в IE6. По какой-то причине IE6 считает, что все остальные браузеры считают 286px всего лишь 143px. Итак, измените следующий код:

1
$(‘left’).tween(‘margin-left’, ‘286px’);

К этому:

1
if(Browser.Engine.trident4) { $(‘left’).tween(‘margin-left’, ‘143px’);

Browser.Engine.trident4 возвращает true, если браузер IE6. В противном случае он возвращает false и выполняет исходный код. И следующий код:

1
$(‘up’).setStyle(‘margin-left’, ‘286px’);

К этому:

1
if(Browser.Engine.trident4) { $(‘up’).setStyle(‘margin-left’, ‘143px’);

Теперь это работает во всех браузерах. На этом этапе вы также можете перейти на сайт MooTools и выбрать только те компоненты, которые вы использовали. Хотя mootools.js, main.js, main.css и HTML-файл используют вместе менее 100 КБ, вы всегда можете уменьшить размер, чтобы оптимизировать работу пользователей с более медленным интернет-соединением. Однако я оставил для этого всю библиотеку MooTools в исходном коде, чтобы люди, которые хотят что-то изменить в галерее, могли использовать все компоненты.

И вот оно: рабочая фотогалерея MooTools. Помните, что документация MooTools всегда полезна при разработке сайта с помощью MooTools. Я надеюсь, что это поможет людям, пытающимся объединить многие действия JavaScript в единый сайт.