04.06.2011, 13:46
|
Новичок на форуме
|
|
Регистрация: 04.06.2011
Сообщений: 4
|
|
Плавное раскрытие и сворачивание блока
Имеется скрипт который позволяет раскрывать и сворачивать блоки при этом позиция блока запоминается в cookie, но слишком всё резко, нужно добавить плавности при сворачивание и разворачивание блока
вот код
-----------------------------------------------
function setCookie(name, value, expiredays, path, domain, secure) {
if (expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
var expires = exdate.toGMTString();
}
document.cookie = name + "=" + escape(value) +
((expiredays) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
function getCookie(name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return setStr;
}
function block_now(id) {
if(getCookie(id) == 1) {
display = 'none';
setCookie(id, 0, 90, "/");
} else {
display = '';
setCookie(id, 1, 90, "/");
}
document.getElementById(id).style.display = display;
}
function block_start(id) {
var cookie_stat = getCookie(id);
if((cookie_stat == 1) || (!cookie_stat)){
display = '';
} else {
display = 'none';
}
document.getElementById(id).style.display = display;
}
Подключается это так
<script type="text/javascript" src="{THEME}/js/block.js"></script>
<script type="text/javascript">
function block_search(){
block_start("blok_1");
block_start("blok_2");
// block_start("blok_3");
// block_start("blok_4");
// добавляет столько вызовов функций, сколько у вас будет блоков
}
</script>
И так
<table>
<tr onClick="block_now('blok_1')" style="cursor:pointer;">
<th>Заголовок блока</th>
</tr>
<tr id="blok_1" style="">
<td>Содержимое блока</td>
</tr>
</table>
Помогите пожалуйста очень нужно
|
|
04.06.2011, 22:31
|
Аспирант
|
|
Регистрация: 12.09.2010
Сообщений: 98
|
|
Ну вот так можно:
function block_now(id) {
if(getCookie(id) == 1) {
$('#' + id).stop().slideUp();
setCookie(id, 0, 90, "/");
} else {
$('#' + id).stop().slideDown();
setCookie(id, 1, 90, "/");
}
}
только библиотеку jquery подключить, если у вас не подключена
|
|
05.06.2011, 16:33
|
Новичок на форуме
|
|
Регистрация: 04.06.2011
Сообщений: 4
|
|
Сообщение от kostr
|
Ну вот так можно:
function block_now(id) {
if(getCookie(id) == 1) {
$('#' + id).stop().slideUp();
setCookie(id, 0, 90, "/");
} else {
$('#' + id).stop().slideDown();
setCookie(id, 1, 90, "/");
}
}
только библиотеку jquery подключить, если у вас не подключена
|
Вообще не работает так =(
|
|
05.06.2011, 18:03
|
Аспирант
|
|
Регистрация: 12.09.2010
Сообщений: 98
|
|
У вас jquery подключена?
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
function setCookie(name, value, expiredays, path, domain, secure) {
if (expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
var expires = exdate.toGMTString();
}
document.cookie = name + "=" + escape(value) +
((expiredays) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
function getCookie(name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return setStr;
}
function block_now(id) {
if(getCookie(id) == 1) {
$('#' + id).stop().slideUp();
setCookie(id, 0, 90, "/");
} else {
$('#' + id).stop().slideDown();
setCookie(id, 1, 90, "/");
}
}
function block_start(id) {
var cookie_stat = getCookie(id);
if((cookie_stat == 1) || (!cookie_stat)){
display = '';
} else {
display = 'none';
}
document.getElementById(id).style.display = display;
}
</script>
<table>
<tr onClick="block_now('blok_1')" style="cursor:pointer;">
<th>Заголовок блока</th>
</tr>
<tr>
<td>
<div id="blok_1">
Содержимое блока <br>
Содержимое блока <br>
Содержимое блока <br>
Содержимое блока <br>
Содержимое блока
</div>
</td>
</tr>
</table>
<script>
block_start("blok_1");
</script>
Последний раз редактировалось kostr, 05.06.2011 в 18:13.
|
|
05.06.2011, 23:24
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
можно и так :
<style>
div {
-moz-transition : height 1s ease-in-out;
transition : height 1s ease-in-out;
-webkit-transition : height 1s ease-in-out;
-o-transition : height 1s ease-in-out;
overflow: hidden;
height: 200px; /* пример. */
}
div.an{
height: 0;
}
</style>
<script type="text/javascript">
function setCookie(name, value, expiredays, path, domain, secure) {
if (expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
var expires = exdate.toGMTString();
}
document.cookie = name + "=" + escape(value) +
((expiredays) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
function getCookie(name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return setStr;
}
function block_now(id) {
if(getCookie(id) == 1) {
//set class
document.getElementById(id).className = "an";
setCookie(id, 0, 90, "/");
} else {
//remove class
document.getElementById(id).className = "";
setCookie(id, 1, 90, "/");
}
}
function block_start(id) {
var cookie_stat = getCookie(id);
if((cookie_stat == 1) || (!cookie_stat)){
display = '';
} else {
display = 'none';
}
document.getElementById(id).style.display = display;
}
</script>
<table>
<tr onClick="block_now('blok_1')" style="cursor:pointer;">
<th>Заголовок блока</th>
</tr>
<tr>
<td>
<div id="blok_1">
Содержимое блока <br>
Содержимое блока <br>
Содержимое блока <br>
Содержимое блока <br>
Содержимое блока
</div>
</td>
</tr>
</table>
|
|
09.06.2011, 17:40
|
Новичок на форуме
|
|
Регистрация: 04.06.2011
Сообщений: 4
|
|
jQuery разумеется подключен
|
|
07.07.2014, 16:00
|
|
Новичок на форуме
|
|
Регистрация: 07.07.2014
Сообщений: 2
|
|
Сделал как показал kostr, но закрытый блок при перезагрузке страницы, иногда на немного открывается.
И как бы иконки подцепить + и - (откр. закр. блок)
Последний раз редактировалось ДимДим, 07.07.2014 в 17:36.
|
|
|
|