Спустя 19 минут, 24 секунды (18.11.2010 - 20:44) Lenarfate написал(а):
читай про jquery. в нете полно уроков по нему
Спустя 7 минут, 46 секунд (18.11.2010 - 20:52) DmitryOpalev написал(а):
<a href="big.jpg" onclick="this.href='javascript:void(0);';">
<img src="small.jpg" border="0" onClick="new ImageExpander(this, 'big.jpg');">
Подпись, чтобы показать, что ничего не уезжает
</a>
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);
}
}
Сам копировал, все работает... подключаешь файл в <head>
Нужны две картинки... их указываешь в html коде
Спустя 14 минут, 52 секунды (18.11.2010 - 21:06) DySprozin написал(а):
ни разу не понимаю: зачем нужно jquery для этого? (; подгружать несколько десятков Кб кода, который еще неизвестно как обернется с xss... бр... извращение (;
ну это, канеш, для извращенцев типа меня, которые ручками все любят делать (;
"локально":
<img src="img.jpg" width="100px" onmouseover="this.style.width='200px'">
"удаленно":
<img src="img1.jpg" width="100px" id="img1">
<img src="img2.jpg" width="100px" onmouseover="document.getElementById('img1').style.width='200px'">
ну это, канеш, для извращенцев типа меня, которые ручками все любят делать (;
Спустя 2 минуты, 59 секунд (18.11.2010 - 21:09) DmitryOpalev написал(а):
Только тут оно у тебя сразу размер поменяет... в моем случае плавно
Я конечно тоже сам все пишу, и уважаю таких, но JS изучать пока времени нет

Я конечно тоже сам все пишу, и уважаю таких, но JS изучать пока времени нет

Спустя 17 минут, 32 секунды (18.11.2010 - 21:27) DySprozin написал(а):
;;в моем случае плавно
ну... никто не мешает запрогать небольшую функцию, где по таймеру (напр. каждую мс) изображение будет увеличиваться на n пикселей (;
ну... никто не мешает запрогать небольшую функцию, где по таймеру (напр. каждую мс) изображение будет увеличиваться на n пикселей (;
Спустя 9 минут, 24 секунды (18.11.2010 - 21:36) DmitryOpalev написал(а):
Согласен, но у меня это не получается
Тяжёлые у меня отношения с JS

Тяжёлые у меня отношения с JS

Спустя 7 минут, 41 секунда (18.11.2010 - 21:44) job-nik написал(а):
а чем CSS не устраивает?
Спустя 1 минута, 58 секунд (18.11.2010 - 21:46) DmitryOpalev написал(а):
CSS опять же резко
Спустя 3 минуты, 46 секунд (18.11.2010 - 21:50) Demjan написал(а):
DmitryOpalev, не тот эффект вышел немного, картинка плавно, но не увеличивается а перемещается по экрану, DySprozin как отписал сработало, другой вопрос насколько плавно, но это тоже хороший вариант, как работает устраивает.
Спустя 48 секунд (18.11.2010 - 21:51) DmitryOpalev написал(а):
Надо две картинки, одна большая, другая маленькая

Спустя 1 минута, 22 секунды (18.11.2010 - 21:52) Demjan написал(а):
Цитата (job-nik @ 18.11.2010 - 18:44) |
а чем CSS не устраивает? |
не известно как сделать, это единственное что не устраивает

Спустя 4 минуты, 19 секунд (18.11.2010 - 21:56) DmitryOpalev написал(а):
C СSS надо псевдокласс (о, какое слово
) :hover
Сейчас посмотрю у себя, что там такое...

Сейчас посмотрю у себя, что там такое...
Спустя 1 минута, 24 секунды (18.11.2010 - 21:58) Demjan написал(а):
Почему всё время две картинки, если переход должен быть плавным? промежуточный размер всё-равно растягиванием достигается, разве нит способа сделать из одной картинки увеличение, хоть на JavaScript, хоть на CSS ??

Спустя 3 минуты, 15 секунд (18.11.2010 - 22:01) Demjan написал(а):
Я вообще за CSS, JS отключать можно, значит наверняка кто-то отключает и эффекты исчезают, а если это сделать через CSS никто не отключит, и раз нарисовал то придётся смотеть всем, никуда не денутся



Спустя 2 минуты, 6 секунд (18.11.2010 - 22:03) DmitryOpalev написал(а):
А, ну вообщем он увеличивает картинку (но у тебя она одна и та же, поэтому не заметно) и выставляет ее в центр экрана... картинка потом появляется в иходном размере
Цитата |
Я вообще за CSS, JS отключать можно, значит наверняка кто-то отключает и эффекты исчезают, а если это сделать через CSS никто не отключит, и раз нарисовал то придётся смотреть всем, никуда не денутся |
Тут они тоже по-любому посмотрят, даже если отключат (только в новом окне)
Спустя 4 минуты, 25 секунд (18.11.2010 - 22:07) job-nik написал(а):
можно использовать transition для плавности
Спустя 2 минуты, 33 секунды (18.11.2010 - 22:10) Demjan написал(а):
Цитата (job-nik @ 18.11.2010 - 19:07) |
можно использовать transition для плавности |
а примером можно? с самым самым кратким пояснением
Спустя 20 минут, 38 секунд (18.11.2010 - 22:31) inpost написал(а):
Просто откройте уроки по jQuery, там много всяких полезностей, google не зря использует его... лучший фреймворк!
Спустя 16 минут, 56 секунд (18.11.2010 - 22:48) job-nik написал(а):
Цитата (inpost @ 18.11.2010 - 19:31) |
google не зря использует его... лучший фреймворк! |
не знаю не знаю.... может для целей гугла и лучший. зачем подгружать файл в пол мега, когда не используешь и десятую часть его возможностей ? это грузит сайт особо когда ресурсы на счету
Спустя 5 минут, 49 секунд (18.11.2010 - 22:53) inpost написал(а):
job-nik
1) Общаюсь сейчас с клиентом: "Не знаю как у Вас там, но у нас тут в Москве плохого интернета почти нету. Делай так, чтобы было круто и красиво!".
2) Весит mini-jquery 78кб. Грузится моментально при загрузки сайта, далее браузерами кешируется, жалко выделить лишние 78кб в начале?
1) Общаюсь сейчас с клиентом: "Не знаю как у Вас там, но у нас тут в Москве плохого интернета почти нету. Делай так, чтобы было круто и красиво!".
2) Весит mini-jquery 78кб. Грузится моментально при загрузки сайта, далее браузерами кешируется, жалко выделить лишние 78кб в начале?
Спустя 2 минуты, 27 секунд (18.11.2010 - 22:56) job-nik написал(а):
каждому своё

Спустя 1 минута, 39 секунд (18.11.2010 - 22:58) Demjan написал(а):
Цитата (job-nik @ 18.11.2010 - 19:48) | ||
не знаю не знаю.... может для целей гугла и лучший. зачем подгружать файл в пол мега, когда не используешь и десятую часть его возможностей ? это грузит сайт особо когда ресурсы на счету |
нашёл я как делается увеличение, но плавно проходит только в опере и ещё в сафари и хроме, код вот:
<html>
<head>
<style type="text/css">
#block {
background: #333;
width: 100px;
color: #fff;
font-family: Segoe UI, Arial, Helvetica;
text-shadow: 0px 0px 3px #000;
padding: 30px;
-webkit-transition: all 1s ease-in;
-o-transition: all 1s ease-in;
}
#block:hover {
width: 450px;
background: #486;
text-align: center;
}
#block2 {
width: 100px;
-webkit-transition: all 1s ease-in;
-o-transition: all 1s ease-in;
}
#block2:hover {
width: 150px;
}
</style>
</head>
<body>
<div style="width:300px; height:150px; text-align:center; background:#999999;">
<img id="block2" src="img.jpg">
текст
</div>
<div id="block">Наведи на меня курсор, и я растянусь, а также сменю цвет!</div>
</body>
</html>
Но изображение смещает другие объекты и к тому-же не плавно в мазиле и ие, как "можно использовать transition для плавности" и не смещать другие блоки?
Спустя 2 минуты, 24 секунды (18.11.2010 - 23:00) inpost написал(а):
Demjan
Четкие размеры. Маленький пример:
$('#second').hide();
<div id="first" style="height:500px"><div id="second"></div></div>
Просто уберётся центральный див, как бы исчезнет, при этом общий не сдвинет сайт, как как его высота фиксированная.
Или "position:absolute", вообще проблем не будет!
Четкие размеры. Маленький пример:
$('#second').hide();
<div id="first" style="height:500px"><div id="second"></div></div>
Просто уберётся центральный див, как бы исчезнет, при этом общий не сдвинет сайт, как как его высота фиксированная.
Или "position:absolute", вообще проблем не будет!
Спустя 5 минут, 22 секунды (18.11.2010 - 23:05) Demjan написал(а):
Цитата (inpost @ 18.11.2010 - 19:53) |
job-nik 1) Общаюсь сейчас с клиентом: "Не знаю как у Вас там, но у нас тут в Москве плохого интернета почти нету. Делай так, чтобы было круто и красиво!". 2) Весит mini-jquery 78кб. Грузится моментально при загрузки сайта, далее браузерами кешируется, жалко выделить лишние 78кб в начале? |
у человека - целевая аудитория с хорошим интернетом, сайт может рассчитываться на компьютеры с минимальными требованиями , и ,как ни странно, с отключенным ява-скрипт вообще, я если честно, вообще не знал что увеличивать можно через css, так бы и открыл тему там, ХОТЯ ТЕМЫ ПО CSS КАЖЕТСЯ НЕТУ? , надеюсь ктонибудь признается как сделать альтернативный вариант на CSS

Спустя 2 минуты, 10 секунд (18.11.2010 - 23:07) Demjan написал(а):
Цитата (inpost @ 18.11.2010 - 20:00) |
Четкие размеры. |
Это чтоб не сомневаться- увеличился или нет

Спустя 33 секунды (18.11.2010 - 23:08) inpost написал(а):
a:hover, но это будет моментально, а не плавно!
Спустя 8 минут, 6 секунд (18.11.2010 - 23:16) Demjan написал(а):
Цитата (inpost @ 18.11.2010 - 20:00) |
Demjan $('#second').hide(); <div id="first" style="height:500px"><div id="second"></div></div> Или "position:absolute", вообще проблем не будет! |
$('#second').hide(); - не понимаю, вроде не свойство, а "position:absolute" будет находится в непредсказуемом положении относительно текста при разной ширине экрана, на широких текст занимает меньшее место по высоте, рассчитывать на посетителей с определённой шириной экрана - много потерять из-за перекосов и смещений
Спустя 6 минут, 34 секунды (18.11.2010 - 23:23) Demjan написал(а):
$('#second').hide(); - понятно, программа, хотелось-бы без дополнительных программ по возможности, всего-лишь увеличить картинку надо
Спустя 4 минуты, 14 секунд (18.11.2010 - 23:27) inpost написал(а):
Demjan
js: getDocumentById('id').style.width = '50000px';
js: getDocumentById('id').style.width = '50000px';
Спустя 2 минуты, 49 секунд (18.11.2010 - 23:30) job-nik написал(а):
Demjan
почитай специфику браузеров. работать не везде будет.
почитай специфику браузеров. работать не везде будет.
где не работает JS таймер тебе в помощь
<!DOCTYPE html>
<html>
<head>
<title>temp</title>
<style type="text/css">
#block {
background: #333;
width: 100px;
color: #fff;
font-family: Segoe UI, Arial, Helvetica;
text-shadow: 0px 0px 3px #000;
padding: 30px;
-webkit-transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
transition: all 1s ease;
}
#block:hover {
width: 450px;
background: #486;
text-align: center;
}
#block2 {
width: 100px;
-webkit-transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
transition: all 1s ease;
}
#block2:hover {
width: 450px;
}
</style>
</head>
<body>
<div style="width:300px; height:150px; text-align:center; background:#999999;">
<img id="block2" src="img.jpg">
текст
</div>
<div id="block">Наведи на меня курсор, и я растянусь, а также сменю цвет!</div>
</body>
</html>
Спустя 3 дня, 23 часа, 52 минуты, 54 секунды (22.11.2010 - 23:23) Demjan написал(а):
Рыл, рыл и нарыл. Классный альтернативный способ изменить размер рисунка на css3, от js отступаюсь, основные браузеры поддерживают спецификацию, правда последние версии. Что сам узнал - оформил здесь : http://волшебный-брелок.рф/skript/instrukc...denii-css3.html, если где-то ошибаюсь - готов к критике. Удивлён очень что такого варианта никто не предложил. Всем огромное спасибо!

Спустя 2 часа, 6 минут, 45 секунд (23.11.2010 - 01:29) inpost написал(а):
Demjan
CSS3? ты издеваешься? Его можно будет использовать годика через 3 как минимум... Даже у меня работать не будет, а я уж не говорю про обычных пользователей!
CSS3? ты издеваешься? Его можно будет использовать годика через 3 как минимум... Даже у меня работать не будет, а я уж не говорю про обычных пользователей!
Спустя 10 часов, 10 минут, 52 секунды (23.11.2010 - 11:40) Demjan написал(а):
поче му даже?
на опере работает без проблем, фирефокс старый даже половину эффектов отображает, всего-лишь обновление браузеров, неужели народ обновлениями не пользуется?

Спустя 3 минуты, 18 секунд (23.11.2010 - 11:44) inpost написал(а):
Demjan
Нет, не пользуется! Ты и 40% не сосчитаешь, кто бы пользовался! У моего папы на работе используют ИЕ6, у меня стоит ИЕ7 специально для таких всяких разработок, с него и хожу по сайту.
Нет, не пользуется! Ты и 40% не сосчитаешь, кто бы пользовался! У моего папы на работе используют ИЕ6, у меня стоит ИЕ7 специально для таких всяких разработок, с него и хожу по сайту.
Спустя 12 минут, 11 секунд (23.11.2010 - 11:56) Basili4 написал(а):
Цитата (job-nik @ 18.11.2010 - 23:48) |
ий. зачем подгружать файл в пол мега, |
Сколько 20 кб весит кпакованый JQ я для разработки использую развернутый он 70.