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

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

14.04.2009, 00:04. Показов 15093. Ответов 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
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru