Главная » Статьи » Статьи о/про uCoz » Оформление сайтов в uCoz

Оформляем стандартный спойлер (uSpoiler). Стили для форума юКоз (uCoz)

Сначала хотел назвать этот пост «Стандартный  юКозовский спойлер (uSpoiler) на новый лад», но, когда сохранял документ, передумал.
Но, не в этом дело.

На форуме, «Сообщество uCoz», прозвучал вопрос:

Quote (Anime-FS)
Еще один вопрос возник, насчет спойлеров на форуме, возможно ли с помощью CSS сделать, чтобы они открывались по клику не только на кнопку но и по всему блоку...
П.С.: Принцип работы, чтобы был, как на рутракере(торрентс.ру)...

И, что самое интересно, ни одного более-менее толкового ответа на этот вопрос, я не припомнил... Хотя, думаю, что  по вопросам HTML/CSS/JavaScript облазил этот форум досконально.
И это, конечно же, не значит, что именно эта статья - самый, что ни на есть преправильный ответ на этот вопрос.
Конечно нет.
Это - просто мой вариант изменения стандартного, для сайтов в uCoz, спойлера.

Задача:

  • 1. Изменить, внешний вид спойлера.
  • 2. Изменить событие «click()» и поведение при клике.
  • 3. Всё это должно быть максимально просто, и при минимальном вмешательстве в исходный код.

Если вы не в курсе, стандартный спойлер выглядит вот так (с моими стилями «по умолчанию»):



А это его исходник:

Code
<!--uSpoiler-->
<div class="uSpoilerClosed" id="uSpoiler38msMJ"> /* Мняет класс при клике на «uSpoilerOpened», id - разное */
<div class="uSpoilerButBl"><input class="uSpoilerButton" onclick="if($('#uSpoiler38msMJ')[0]){if ($('.uSpoilerText',$('#uSpoiler38msMJ'))[0].style.display=='none'){$('.uSpoilerText',$('#uSpoiler38msMJ'))[0].style.display='';$('.uSpoilerButton',$('#uSpoiler38msMJ')).val('[\–] Оригиналы файлов');$('#uSpoiler38msMJ').attr('class','uSpoilerOpened');}else {$('.uSpoilerText',$('#uSpoiler38msMJ'))[0].style.display='none';$('.uSpoilerButton',$('#uSpoiler38msMJ')).val('[+] Оригиналы файлов');$('#uSpoiler38msMJ').attr('class','uSpoilerClosed');}}" value="[+] Оригиналы файлов" type="button"></div>
<div class="uSpoilerText" style="display: none;"><!--ust-->-=/ Здесь контент спойлера /=-<!--/ust--><!--usn(=Оригиналы файлов)--></div>
</div>
<!--/uSpoiler-->

Задаём стилевое оформление.

Ну, с этим всё просто.
Примерно вот так. Плюсы/минусы - стандартные юКозовские. Лежат у всех по адресу - «/.s/img/icon/pm.gif».

У меня это будет так:

Code
<style type="text/css">
/* StartStyle */
.posttdMessage .uSpoilerClosed,.posttdMessage .uSpoilerOpened{border:1px solid #c3cbd1;margin:5px 7px;clear:both;float:none;}
.posttdMessage .uSpoilerButBl{background:#e9e9e6;overflow:hidden;}
input.uSpoilerButton{font:bold 11px/1 Verdana,sans-serif;padding:3px 3px 3px 15px;margin-left:5px;cursor:pointer;width:100%;text-align:left;border:0 none;outline:0 none;color:#00C;background:transparent url('/.s/img/icon/pm.gif') no-repeat scroll left 5px;}
.posttdMessage input.uSpoilerButton::-moz-focus-inner{border:0 none;}
.posttdMessage .uSpoilerText{padding:3px 5px;background:#fcfdff;border-top:1px solid #c3cbd1;}
.posttdMessage .uSpoilerOpened input.uSpoilerButton{background-position:left -16px;color:#C30;}
/* EndStyle */
</style>

Стили прописаны относительно ячейки «.posttdMessage» - это актуально, если у вас для тегов «input» уже прописаны стили по умолчанию, и, если у вас разные стили оформления спойлеров для форума и других модулей/страниц сайта.

Пример:


Всё бы хорошо, но установленные по умолчанию значения для открытого [-] и закрытого [+] немного «не в кассу» ...
Хотя, можно оставить и так, и просто убрать из стилей фоновую картинку (плюс-минус) ....

Если вам этого достаточно - установите прозрачный фон, и поправьте отступы.

Примерно, вот так:

Code
<style type="text/css">
/* StartStyle */
.posttdMessage .uSpoilerClosed,.posttdMessage .uSpoilerOpened{border:1px solid #c3cbd1;margin:5px 7px;clear:both;float:none;}
.posttdMessage .uSpoilerButBl{background:#e9e9e6;overflow:hidden;}
.posttdMessage input.uSpoilerButton{font:bold 11px/normal Verdana,sans-serif;padding:3px 3px 4px 7px;cursor:pointer;width:100%;text-align:left;border:0 none;outline:0 none;color:#00C;background:transparent;}
.posttdMessage input.uSpoilerButton::-moz-focus-inner{border:0 none;}
.posttdMessage .uSpoilerOpened input.uSpoilerButton{color:#C30;}
.posttdMessage .uSpoilerText{padding:3px 5px;background:#fcfdff;border-top:1px solid #c3cbd1;}
/* EndStyle */
</style>

Пример:


Ну а если же нет, пишем скрипт, точнее, не пишем, а дорабатываем имеющийся. ヅ
Вот его законченная версия.

Code
<_?if($PAGE_ID$='threadpage')?_> /* если на форум, иначе не нужно */
<script type="text/javascript">
$('td.posttdMessage .uSpoilerButton').each(function (){
$(this).val($(this).val().replace(/\[[+-]]/g, '')).removeAttr('onclick');
$(this).click(function(){
$(this).parent().parent().toggleClass('uSpoilerOpened').find('.uSpoilerText').slideToggle('fast');
});
});
</script>
<_?endif?_>

Где:

$('td.posttdMessage .uSpoilerButton').each(function () - проходимся по всем кнопкам «uSpoilerButton» в ячейке «posttdMessage»

$(this).val($(this).val().replace(/\[[+-]]/g, '')) - убираем символы для открытого [-] или закрытого [+] значения ЭТОЙ $(this) кнопки.

.removeAttr('onclick') - удаляем имеющийся по умолчанию атрибут «onclick» - от стандартного скрипта.

$(this).click(function() - вешаем свою функцию на событие «onclick»

$(this).parent().parent().toggleClass('uSpoilerOpened') - поднимаемся на два уровня вверх от кнопки «uSpoilerButton», то есть до родительского дива с классом «uSpoilerClosed» и вешаем на него функцию «.toggleClass()» - переключает класс указанный в скобках - если у элемента указанный class существует, то удаляет его, если не существует - добавляет.

.find('.uSpoilerText').slideToggle('fast') - находим див контента «uSpoilerText» и устанавливаем для него функцию «.slideToggle()»  Скрывает видимые элементы и показывает скрытые используя эффект изменения высоты. Скорость (в скобках) может быть «slow», «normal», или «fast». Либо задаваться числом в мс.


Пример:


По этому вопросу, у меня, на текущий момент, больше нет соображений. ヅ

Если у вас остались вопросы, или что-то не получается - пишите на форум, и, если кратко, в комментариях.

К статье, если можно так назвать, имеется пример.   Пример. Все варианты на одной странице.

Стили - минимальные. Смотрите исходник.



P.S.

Всем удачи... ヅ
Flesh.




Источник: Оформляем стандартный спойлер (uSpoiler). Стили для форума юКоз, Сообщество uCoz, рутракер,торрент.ру,HTML, CSS, JavaScript
Категория: Оформление сайтов в uCoz | Добавил: likbezz (08.09.2010)
Просмотров: 24235 | Комментарии: 12 | Теги: рутракер, Стили, uSpoiler, для форума, стандартный, UCOZ, спойлер, HTML, сообщество, юкоз
Всего комментариев: 12
0  
12  niki [Материал[21.05.2013]

Все выглядит норм, на форуме, а вот в разделе материалов, не получилось в идеале все
после открытия и закрытия спойлера все же появляется [+]\ [-], как убрать их появление ?

0  
10  Акула [Материал[24.01.2013]

"Другой - это НЕ этот?
Здесь все убирается: "
Нет не этот! А другой совершенно, сталкерский!
Мне надо знать как убрать стандартный юкозовский. В КСС следов не видела.

0  
11  likbezz [Материал[25.01.2013]

Код
<script type="text/javascript">
$('input.uSpoilerButton').each(function(){
this.value=this.value.replace(/\[[+-]]/g,'');
});
</script>

0  
8  Акула [Материал[19.01.2013]

likbezz, у меня вот вопрос по поводу спойлера. Поставила другой спойлер. А юкозовский плюс/минус мешаются. Как их убрать? В css не вижу где убирать.

0  
9  likbezz [Материал[20.01.2013]

Другой - это НЕ этот?
Здесь все убирается:

Цитата (Likbezz)
$(this).val($(this).val().replace(/\[[+-]]/g, '')) - убираем символы для открытого [-] или закрытого [+] значения ЭТОЙ $(this) кнопки.

...

0  
7  likbezz [Материал[02.07.2012]

Если у вас остались вопросы, или что-то не получается - пишите на форум, если кратко, то в комментариях.

0  
5  Ада-Ангел [Материал[01.07.2012]

likbezz, "отредактировать стили" - это и есть помощь?...
Я все css перелопатила, но так и не нашла - где и что отвечает за спойлер!
Мне нужен дельный реальный совет специалиста что и как. Это только на первый взгляд кажется, что так все просто.

0  
6  likbezz [Материал[02.07.2012]

Quote (Ада-Ангел)
likbezz, "отредактировать стили" - это и есть помощь?...

С учетом вашего вопроса, это наиболее полный ответ что я могу дать.

Quote (Ада-Ангел)
Я все css перелопатила, но так и не нашла - где и что отвечает за спойлер!

Может там их нет? И нужно просто взять и дописать?

Quote (Ада-Ангел)
Мне нужен дельный реальный совет специалиста что и как.

Ну как я могу давать какие-то дельные советы не зная о чем речь?

Если это стандартный юКозовский спойлер, то классы отвечающие за него упомянуты в данном материале, в самом верху:
Задаём стилевое оформление
Code
div.uSpoilerOpened{}
div.uSpoilerClosed{}
div.uSpoilerButBl{}
input.uSpoilerButton{}
div.uSpoilerText{}


Если это НЕ стандартный или НЕ укозовский - то тут я вам вообще ничего не скажу - просто не в курсе что у вас может быть за “мой спойлер”.

А тыкать пальцем в небо - я просто не люблю.

0  
3  Ада-Ангел [Материал[30.06.2012]

Меня мой спойлер устраивает. Но: при наведении на спойлер мышкой появляется ненужный голубой цвет, а при его раскрытии - голубая рамка вокруг кнопки.
Можно голубой заменить на более подходящий цвет для моего форума?
Помогите, пожалуйста! Очень раздражает...

0  
4  likbezz [Материал[01.07.2012]

Quote (Ада-Ангел)
Меня мой спойлер устраивает. Но: при наведении на спойлер мышкой появляется ненужный голубой цвет, а при его раскрытии - голубая рамка вокруг кнопки.
Можно голубой заменить на более подходящий цвет для моего форума?

Можно.
Отредактировать стили.

0  
2  саня [Материал[22.03.2012]

Как отрыть 10 сполеров на одной странице???
Выходит так что одним сполером открываеш а другим закрываешь)

0  
1  ZЛОЙ [Материал[09.11.2011]

Вопрос: можно ли оставить стандартный спойлер (переделан цвет и т.п.) но что бы Тайтл спойлера читался, в данный момент текст на спойлере не находят поисковики, а очень надо... Help Please...))

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]