Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/78: Рейтинг темы: голосов - 78, средняя оценка - 4.65
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267

Увеличение картинок

14.04.2009, 00:04. Показов 15110. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать плавное увеличение картинки по клику?
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2009, 00:04
Ответы с готовыми решениями:

Увеличение картинок
Есть js, который позволяет плавно увеличить картинку: ssr=600; ssd=200; function uvelihenie(Position) { if (ssr >...

увеличение картинок
Здравствуйте,помогите пожалуйста изменить код чтобы при наведение курсора на картинку она увеличивалась,но не сдвигала остальные, например...

Загрузка и увеличение картинок
Создать область сайта в которую загружаются картинки через кнопку. А при нажатии на кнопку картинка увеличивается. Помогите пжлста.

11
 Аватар для Edik_hacker
14 / 13 / 5
Регистрация: 24.03.2009
Сообщений: 80
14.04.2009, 02:49
Лучший ответ Сообщение было отмечено как решение

Решение

Тебе сначало нада две картинки - большая и маленькая. Например большая big.jpg а small.jpg маленькая.
1. Открываешь блокнот
2. Копируеш ниже скрипт в блокнот
JavaScript
1
2
3
4
5
6
7
8
9
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
function ImageExpander(oThumb, sImgSrc)
{
    // store thumbnail image and overwrite its onclick handler.
    this.oThumb = oThumb;
    this.oThumb.expander = this;
    this.oThumb.onclick = function() { this.expander.expand(); }
    
    // record original size
    this.smallWidth = oThumb.offsetWidth;
    this.smallHeight = oThumb.offsetHeight; 
 
    this.bExpand = true;
    this.bTicks = false;
    
    // self organized list
    if ( !window.aImageExpanders )
    {
        window.aImageExpanders = new Array();
    }
    window.aImageExpanders.push(this);
 
    // create the full sized image.
    this.oImg = new Image();
    this.oImg.expander = this;
    this.oImg.onload = function(){this.expander.onload();}
    this.oImg.src = sImgSrc;
}
 
ImageExpander.prototype.onload = function()
{
    this.oDiv = document.createElement("div");
    document.body.appendChild(this.oDiv);
    this.oDiv.appendChild(this.oImg);
    this.oDiv.style.position = "absolute";
    this.oDiv.expander = this;
    this.oDiv.onclick = function() {this.expander.toggle();};
    this.oImg.title = "Click to reduce.";
    this.bigWidth = this.oImg.width;
    this.bigHeight = this.oImg.height;
    
    if ( this.bExpand )
    {
        this.expand();
    }
    else
    {
        this.oDiv.style.visibility = "hidden";
        this.oImg.style.visibility = "hidden";
    }
}
ImageExpander.prototype.toggle = function()
{
    this.bExpand = !this.bExpand;
    if ( this.bExpand )
    {
        for ( var i in window.aImageExpanders )
            if ( window.aImageExpanders[i] !== this )
                window.aImageExpanders[i].reduce();
    }
}
ImageExpander.prototype.expand = function()
{
    // set direction of expansion.
    this.bExpand = true;
 
    // set all other images to reduce
    for ( var i in window.aImageExpanders )
        if ( window.aImageExpanders[i] !== this )
            window.aImageExpanders[i].reduce();
 
    // if not loaded, don't continue just yet
    if ( !this.oDiv ) return;
    
    // hide the thumbnail
    this.oThumb.style.visibility = "hidden";
    
    // calculate initial dimensions
    this.x = this.oThumb.offsetLeft;
    this.y = this.oThumb.offsetTop;
    this.w = this.oThumb.clientWidth;
    this.h = this.oThumb.clientHeight;
    
    this.oDiv.style.left = this.x + "px";
    this.oDiv.style.top = this.y + "px";
    this.oImg.style.width = this.w + "px";
    this.oImg.style.height = this.h + "px";
    this.oDiv.style.visibility = "visible";
    this.oImg.style.visibility = "visible";
    
    // start the animation engine.
    if ( !this.bTicks )
    {
        this.bTicks = true;
        var pThis = this;
        window.setTimeout(function(){pThis.tick();},25);    
    }
}
ImageExpander.prototype.reduce = function()
{
    // set direction of expansion.
    this.bExpand = false;
}
ImageExpander.prototype.tick = function()
{
    // calculate screen dimensions
    var cw = document.body.clientWidth;
    var ch = document.body.clientHeight;
    var cx = document.body.scrollLeft + cw / 2;
    var cy = document.body.scrollTop + ch / 2;
 
    // calculate target
    var tw,th,tx,ty;
    if ( this.bExpand )
    {
        tw = this.bigWidth;
        th = this.bigHeight;
        if ( tw > cw )
        {
            th *= cw / tw;
            tw = cw;
        }   
        if ( th > ch )
        {
            tw *= ch / th;
            th = ch;
        }
        tx = cx - tw / 2;
        ty = cy - th / 2; 
    }
    else
    {
        tw = this.smallWidth;
        th = this.smallHeight;
        tx = this.oThumb.offsetLeft;
        ty = this.oThumb.offsetTop;
    }   
    // move 5% closer to target
    var nHit = 0;
    var fMove = function(n,tn) 
    {
        var dn = tn - n;
        if ( Math.abs(dn) < 3 )
        {
            nHit++;
            return tn;
        }
        else
        {
            return n + dn / 10;
        }
    }
    this.x = fMove(this.x, tx);
    this.y = fMove(this.y, ty);
    this.w = fMove(this.w, tw);
    this.h = fMove(this.h, th);
    
    this.oDiv.style.left = this.x + "px";
    this.oDiv.style.top = this.y + "px";
    this.oImg.style.width = this.w + "px";
    this.oImg.style.height = this.h + "px";
 
    // if reducing and size/position is a match, stop the tick  
    if ( !this.bExpand && (nHit == 4) )
    {
        this.oImg.style.visibility = "hidden";
        this.oDiv.style.visibility = "hidden";
        this.oThumb.style.visibility = "visible";
 
        this.bTicks = false;
    }
    
    if ( this.bTicks )
    {
        var pThis = this;
        window.setTimeout(function(){pThis.tick();},25);
    }
}
3. Сохраняешь под названием image_zoom.js (формат *.js )
4. Вставляешь код в HTML страницу
HTML5
1
2
3
<a href="big.jpg" onclick="this.href='javascript:void(0);';">
<img src="small.jpg" border="0" onClick="new ImageExpander(this, 'big.jpg');">
</a>
5. Сохраняешь
7
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 5
23.04.2012, 20:09
Edik_hacker, Спасибо за скрипт, наткнулся на него через поиск. Понимаю скрипт старый, но мне очень подходит хочу его использовать. Попробовал его, работает но... в Опере 9 отлично, картинка выползант на цент экрана и равномерно увеличивается во все стороны, я вот в Лисе 3 и ИЕ 8, картинка не выходит на центр зкрана. Если она стоит в самом верху страницы, то ползет горизонтально к средине и пытается увеличиваться вверх, а так как вверх уже некуда она не увеличивается. Как можно это дело подправить, чтобы в этих браузерах она тоже перемещалась к центру экрана?

Добавлено через 14 часов 54 минуты
Народ помогите, работа стоИт. Я в скриптах не силен, но заглянув в него вижу, что там заданны кординаты перемещения горизонтальные и вертикальные, видимо их и надо подправить. В Лисе и ИЕ вертикальное премещение идет вверх, а надо к середине экрана.

Добавлено через 1 час 3 минуты
Возможно в скрипт нужно добавить размер большой картинки, чтобы расчет положения был правильным?

Добавлено через 4 часа 28 минут
Почти сутки пялюсь в монитор, жду помощи. Неужели никто не может помочь?
0
 Аватар для xxl1992
1 / 1 / 0
Регистрация: 23.04.2012
Сообщений: 16
23.04.2012, 20:25
А какой движок? плагинов помоему достаточно на эту тему...
0
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 5
23.04.2012, 20:59
HTML сайт на несколько страниц, локально. Я много пересмотрел разных скриптов, не подходят. Мне нужен именно этот, он маленький, простой, легко подключается, не требует настройки (как разные универсальные), не тянет с собой специальный css. Меня этот полностью устраивает, вот чуть-чуть подправить-бы его.
0
 Аватар для xxl1992
1 / 1 / 0
Регистрация: 23.04.2012
Сообщений: 16
23.04.2012, 21:53
Цитата Сообщение от Bingo Посмотреть сообщение
HTML сайт на несколько страниц, локально. Я много пересмотрел разных скриптов, не подходят. Мне нужен именно этот, он маленький, простой, легко подключается, не требует настройки (как разные универсальные), не тянет с собой специальный css. Меня этот полностью устраивает, вот чуть-чуть подправить-бы его.
Что именно подправить?
0
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 5
23.04.2012, 23:47
Цитата Сообщение от xxl1992 Посмотреть сообщение
Что именно подправить?
Вот это.
Цитата Сообщение от Bingo - читаем внимательно посты выше Посмотреть сообщение
...в Опере 9 отлично, картинка выползант на цент экрана и равномерно увеличивается во все стороны, я вот в Лисе 3 и ИЕ 8, картинка не выходит на центр зкрана. Если она стоит в самом верху страницы, то ползет горизонтально к средине и пытается увеличиваться вверх, а так как вверх уже некуда она не увеличивается.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
24.04.2012, 03:37
Если разместить приведенные коды на пустой странице (где более никакого другого кода нет), то всё работает.
Как минимум в MSIEv8, в FFv11, в OPERAv11.62 и в CHROMEv18.

Так что... разбирайтесь в ваших дополнительных "фичах" на странице.
0
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 5
24.04.2012, 13:49
Проверяю я его именно на пустой страние, только одна картинка.
В Опере 9 работает отлично, картинка выползант на центр экрана (по горизонтали и вертикали) и равномерно увеличивается во все стороны, я вот в Лисе 3 и ИЕ7, картинка не выходит на центр зкрана. Если она стоит в самом верху страницы, то ползет только горизонтально (вертикально не выходит на средину окна) к средине и пытается увеличиваться вверх, а так как вверх уже некуда она не увеличивается
Я ошибся, проверяю не в ИЕ8, а в ИЕ7. Мне очень желательно, чтобы и в этих браузерах работало.
0
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 5
28.04.2012, 10:56
Вопрос актуален, надеюсь на помощь.
0
1 / 1 / 1
Регистрация: 15.10.2014
Сообщений: 13
13.03.2015, 16:35
Пытаюсь применить данный скрипт: в фф, хроме все работает, но в ie при нажатии изображение увеличивается не с центра мелкого изображения а с левого верхнего края экрана и уменьшается туда же. Выяснил, что в этих браузерах по разному интерпретируется элемент this, который передается в onclick. В фф и хроме его родитель body, а в ie - предыдущие элементы (в моем случае - body -> div -> div -> this). А поскольку позиция абсолютная, то this.oThumb.offsetLeft и this.oThumb.offsetTop становятся в ie некорректными. Вопрос: как это поправить (может как-то задать явно вместо this -> body) ?
Еще необходимо в функции ImageExpander.prototype.onload поправить this.oImg.width на clientWidth и this.oImg.height на clientHeight.

Добавлено через 1 час 36 минут
Проблема решилась. Оказалось что в моей странице в цепочке body -> div (#page) -> div (#main) -> div (#im_line) -> div (#im_gcell) -> img (this) последний два div имели display: table и display: table-cell (применил такое выравнивание по центру). Отказавшись от такого способа все заработало. Правда и ie есть еще один глюк - когда увеличивается изображение до максимума начинают моргать (исчезать и пояляться) полосы прокрутки. Вылечил добавив -20 пикселей к cw и ch в функции tick. В ФФ почемут-о подтормаживает во время масштабирования.

Добавлено через 8 минут
Немного ошибся, цепочка наследования должна быть такая: body -> img (this). У меня же получалось еще два промежуточных div в ней.
0
1 / 1 / 1
Регистрация: 15.10.2014
Сообщений: 13
17.03.2015, 10:50
Что-то все равно глючит скрипт - пощелкал несколько изображений - стали уменьшаться вместо увеличения. Перешел на fancybox
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2015, 10:50
Помогаю со студенческими работами здесь

Красивое увеличение картинок по клику
Привет! Подскажите как сделать красивое увеличение картинок по клику. Но чтобы не через маленькую и большую картинку. А чтобы например....

Можно ли в Owl carousel сделать увеличение картинок по щелчку?
Собственно не знаю, можно ли в слайдере Owl carousel сделать увеличение картинок по щелчку. Если можно, то подскажите как это сделать? Буду...

Не работает увеличение картинок
Тескт панели &lt;div class=&quot;panel&quot;&gt; &lt;p&gt;Автор - Михаил Темнохуд&lt;/p&gt;&lt;br&gt; &lt;div align=&quot;center&quot;&gt; &lt;a class=&quot;first&quot;...

Увеличение картинок
Всем доброго времени суток! Битрикс Малый бизнес. Самый простой и обычный интернет магазин. У товара есть изображение в подробном...

Увеличение картинок в папке (дубли)
При внесении (загрузки) изображений для статей, почему-то картинки дублируются_ когда захожу в папку Вордпресс , где сохраняются все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru