jQuery « Смена рамки для картины на лету с помощью jquery?
Смотрим пример тут http://grafis.org/picture/2190 Смена рамок для картины.
Прошу совета как такое реализовать?
Вот только, там на сайте рамка загружается как фон для картины, целиком, одним изображением, и тут возникает вопрос, если эту рамку нужно для другого изображения применить, которое по ширине намного меньше, дай и высота другая, как тут обойтись одним изображением?
Можно хранить 8 частей рамки, (4 уголка и 4 стороны(наибольшие кусочки которые потом растянутся на всю ширину или высоту картины )), либо 1 изобр. для уголка и 1 для стороны рамки, потом крутить их как то(пока не понятно как).
В этом случае все просто и понятно. Только вот для добавления рамки, придется ее резать на несколько кусков(хотя если изобр. 2 то не проблема, только крутить их потом как?), или можно сделать это программно как то? (что тоже само по себе не простая задача, учитывая всякие аспекты изображения рамок).
Какие будут мысли )
Прошу совета как такое реализовать?
Вот только, там на сайте рамка загружается как фон для картины, целиком, одним изображением, и тут возникает вопрос, если эту рамку нужно для другого изображения применить, которое по ширине намного меньше, дай и высота другая, как тут обойтись одним изображением?
Можно хранить 8 частей рамки, (4 уголка и 4 стороны(наибольшие кусочки которые потом растянутся на всю ширину или высоту картины )), либо 1 изобр. для уголка и 1 для стороны рамки, потом крутить их как то(пока не понятно как).
В этом случае все просто и понятно. Только вот для добавления рамки, придется ее резать на несколько кусков(хотя если изобр. 2 то не проблема, только крутить их потом как?), или можно сделать это программно как то? (что тоже само по себе не простая задача, учитывая всякие аспекты изображения рамок).
Какие будут мысли )
1 ответов
ДЛя генератора рамочки будем использовать три картинки:
Называются слева направо: corners.png, horiz.png, vert.png
Верстается нехитрым образом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<title>Corners Check</title>
<link rel='stylesheet' href='style.css' type='text/css' media='all' />
</head>
<body>
<h1>Corners</h1>
<table cellpadding="0" cellspacing="0">
<tr>
<td class="lt corner"></td>
<td class="toph horiz"></td>
<td class="rt corner"></td>
</tr>
<tr>
<td class="lv vert"></td>
<td class="imagebox"><img src="http://www.gravatar.com/avatar.php?gravatar_id=9d7c5ad7d4bd82b371fdea5e884bfeed&default=identicon&size=80&rating=PG" /></td>
<td class="rv vert"></td>
</tr>
<tr>
<td class="lb corner"></td>
<td class="bh horiz"></td>
<td class="rb corner"></td>
</tr>
</table>
</body>
</html>
и style.css:
body { background-color:#66BB77;}
table {
background-color:white;
border: 0px none;
margin: 0px;
padding: 0px;
}
img { border: 0px none;}
.corner {
width: 40px;
height: 40px;
}
.horiz { height: 40px; }
.vert { width: 40px; }
.lt, .rt, .lb, .rb {
background-image: url(corners.png);
background-repeat: no-repeat;
}
.toph, .bh {
background-image: url(horiz.png);
background-repeat: repeat-x;
}
.lv, .rv {
background-image: url(vert.png);
background-repeat: repeat-y;
}
.lt { background-position: 0px 0px; }
.rt { background-position: -40px 0px; }
.lb { background-position: 0px -40px; }
.rb { background-position: -40px -40px;}
.toph { background-position: 0px 0px; }
.bh { background-position: 0px -40px; }
.lv { background-position: 0px 40px; }
.rv{ background-position: -40px 0px; }
Вам остается сохранить все, сложить в одну папку и получить вот это:
Ну как вам? потом просто с помощью JQ менять свойство background-image у нужных элементов.
UPD: чуть причесал CSS.
Идея в том, чтобы менять оформление в зависимости от смены класса, дабы не писать кучу скриптов, а на скриптах реализовывать эту самую смену класса.
В любом случае получится громоздкая конструкция в html.
По поводу частей картинки - лучше использовать спрайты. Тогда получиться всего 3 картинки на один вид рамки:
1 картинка - четыре уголка,
2 картинка - горизонтальный бг,
3 картинка - вертикальный бг.