Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Раздвигающееся меню, смещение кнопок

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: АЯ   (15.01.2010 в 20:59)   письмо автору
 
   для: pautina   (15.01.2010 в 20:22)
 

Я щас кипятком уписаюсь, честное слово :-)
Ведь "о валидности я и не подумал"...


Вот этого
<div class="cPan" id="iPan0"><script type="text/javascript">fFormContent (0, 'Размещение'     )</script>

               <div class="vneshniy_link1">
                        <div class="zagolovok_link1">и так далее
вам НЕ НАДО.

Вам надо ТАК:
<div class="cPan" id="iPan0"><div class="vneshniy_link1">
                        <div class="zagolovok_link1">и так далее

НЕ НУЖЕН вам скриптовой блок СОВСЕМ.
И невалидный без type="text/javascript" - НЕ НУЖЕН, и валидный с type="text/javascript" - тоже НЕ НУЖЕН.

Он был нужен мне, для того, чтобы пустой <div class="cPan"></div> для примера заполнить бессмысленным содержанием. Скриптовая функция мне это бессмысленное содержание формировала.
У вас же собственное содержание ЕСТЬ. В каждом из трёх DIV'ов. Все эти ваши заголовки и списки в блоках с закругленными краями.
Вы трижды вызываете несуществующую функцию fFormContent () - код её вы по моему совету совершенно правильно ведь удалили. Неужели ни в одном из перечисленных вами браузеров вы не посмотрели "Консоль ошибок"?


В общем, я очень рад, что вы помните о валидности :-)
Хотя... "поздно пить боржоми, когда почки отвалились" (с)

  Ответить  
 
 автор: pautina   (15.01.2010 в 20:22)   письмо автору
 
   для: АЯ   (15.01.2010 в 16:10)
 

А о валидности вы не подумали.
Если не писать
type="text/javascript"
идёт ошибка.
Я заменил на своё содержимое да, там у меня блок с закруглёнными углами, элементы списка, фон, белая полоса между закруглёнными блоками.
#iMenu div.cBtn img {width: 14px; height: 14px; margin: 19px 10px 0 0; }

Здесь да 19 по верху, и 10 справа, между рисунком +- и ссылкой надо небольшой зазор
проверял в ie 7, opera 9.6, mozila 3.0, safari 3.1 всё нормально. :-)

  Ответить  
 
 автор: АЯ   (15.01.2010 в 16:10)   письмо автору
 
   для: pautina   (15.01.2010 в 15:56)
 

1. Я вам ТРИЖДЫ жирным шрифтом написал: <!-- Замените на своё содержимое -->

А вы вместо замены ТРИЖДЫ "улучшили" (добавили type="text/javascript") и оставили
абсолютно ненужные вам скриптовые блоки с вызовом функции внутри DIV'ов класса "cPan" и только после них добавили ваше содержимое.


2. Кроме того, я ведь специально высчитал и указал вам маргин для тегов <img> -
margin: 19px 3px 0 0

Но вы снова "улучшили" и 19 пикселов заменили на НОЛЬ.
Посмотрите на своё творение в MSIE6.0 - там вы увидите всю "прелесть" своего "улучшения" :-)

Тяжко быть бестолковым, правда? :-)

  Ответить  
 
 автор: pautina   (15.01.2010 в 15:56)   письмо автору
 
   для: АЯ   (15.01.2010 в 14:58)
 

Благодаря Вам сверстал хороший макет. http://www.my-page29.narod.ru.
Прямо всё как хотел сделать, полностью реализовано.
Спасибо Вам огромное.

  Ответить  
 
 автор: АЯ   (15.01.2010 в 14:58)   письмо автору
 
   для: pautina   (15.01.2010 в 13:45)
 

1. Добавьте в стили строку:
#iMenu div.cBtn img {width: 14px; height: 14px; margin: 19px 3px 0 0}

2. Добавьте в HTML-код:
<div class="cBtn" id="iBtn0" onclick="fChangeStatus (0)"><img src="http://www.my-page29.narod.ru/image/plus.jpg">Размещение рекламы</div>
<div class="cBtn" id="iBtn1" onclick="fChangeStatus (1)"><img src="http://www.my-page29.narod.ru/image/plus.jpg">Изготовление рекламы</div>
<div class="cBtn" id="iBtn2" onclick="fChangeStatus (2)"><img src="http://www.my-page29.narod.ru/image/plus.jpg">Интернет-проекты</div>

ВНИМАНИЕ: писать следует именно ТАК, без пробелов и без переносов строк между тегами внутри DIV'ов

3. Сделайте следующие изменения в скрипте:
а) После комментария //делаем кнопку неактивной добавьте строку
document.getElementById ('iBtn' + x).firstChild.style.visibility = 'hidden';

б) Кусок кода
      if (st == 1 && he == obj.scrollHeight) gStatus [j] = 2; //меняем статус на "полностью развёрнута"
      if (st == 3 && he == 1) gStatus [j] = 0; //меняем статус на "полностью свёрнута"
      if (st != gStatus [j]) with (document.getElementById ('iBtn' + j).style)
      {fontWeight = 'bold'; color = 'black'; textDecoration = 'underline'; cursor = 'pointer'} //делаем кнопку активной
замените на
      if (st == 1 && he == obj.scrollHeight) {gStatus [j] = 2; document.getElementById ('iBtn' + j).firstChild.src = 'http://www.my-page29.narod.ru/image/minus.jpg'} //меняем статус на "полностью развёрнута"
      if (st == 3 && he == 1) {gStatus [j] = 0; document.getElementById ('iBtn' + j).firstChild.src = 'http://www.my-page29.narod.ru/image/plus.jpg'} //меняем статус на "полностью свёрнута"
      if (st != gStatus [j]) {with (document.getElementById ('iBtn' + j).style)
      {fontWeight = 'bold'; color = 'black'; textDecoration = 'underline'; cursor = 'pointer'} //делаем кнопку активной
      document.getElementById ('iBtn' + j).firstChild.style.visibility = 'visible'}

  Ответить  
 
 автор: GeorgeIV   (15.01.2010 в 13:49)   письмо автору
 
   для: pautina   (15.01.2010 в 13:45)
 

я делаю иначе - если панель начала раскрываться, то следующее нажатие начинает процесс свертывания и меняю значок на кнопке на соответствующий. состояния панели храню в куке, чтобы пользователь, вернувшись на страницу, имел тоже состояние панели, в каком оставил, покинув страницу

  Ответить  
 
 автор: pautina   (15.01.2010 в 13:45)   письмо автору
 
   для: GeorgeIV   (15.01.2010 в 11:36)
 

Ну просто отлично,
Даже не знаю как Вас отблагодарить. Сейчас собираю всё вместе.
Скрипт то что надо.
Можно ещё небольшой вопрос, Как прикрепить рядом с кнопкой раскладку +- чтобы работало таким образом (нажимаем кнопку + он меняется на - и идёт раскрытие панели, т.е. то же действие что и при нажатии ссылки, с - на + закрытие)

  Ответить  
 
 автор: GeorgeIV   (15.01.2010 в 11:36)   письмо автору
 
   для: pautina   (15.01.2010 в 11:09)
 

с Оперой хуже, у нее свои "понятия".
пока нет времени копать, если не решится вопрос с оперой, в течение дня попробую еще

  Ответить  
 
 автор: АЯ   (15.01.2010 в 11:36)   письмо автору
 
   для: pautina   (15.01.2010 в 11:09)
 

<style>
#iMenu          {float: left; width: 705px; border: 1px solid black}

#iMenu div.cBtn {float: left; width: 231px; height: 53px; line-height: 53px; text-align: center; cursor: pointer; font-weight: bold; color: black; text-decoration: underline}
#iMenu #iBtn0   {background-image: url('http://www.my-page29.narod.ru/image/link-1.jpg')}
#iMenu #iBtn1   {background-image: url('http://www.my-page29.narod.ru/image/link-2.jpg'); margin: 0 6px}
#iMenu #iBtn2   {background-image: url('http://www.my-page29.narod.ru/image/link-3.jpg')}

#iMenu #iClr    {clear: both}

#iMenu div.cPan {float: left; overflow: hidden; width: 231px; height: 1px}
#iMenu #iPan1   {margin: 0 6px}
</style>
<!--[if IE]><style>#iMenu {width: 707px}</style><![endif]--> 

<script>
function fFormContent (x, y) //JS-код формирования содержимого панелей, вам он не нужен, потом удалите
{
for (var s = '<ol>', j = 0; j < x; j++) s += '<li>' + y; with (document) {open (); write (s + '</ol>'); close ()}
//конец кода формирования содержимого панелей

var gStatus = new Array (0, 0, 0); //Статус трёх пар "кнопка/панель":
// 0 - кнопка активна    / панель полностью свёрнута
// 1 - кнопка недоступна / панель в процессе разворачивания
// 2 - кнопка активна    / панель полностью развёрнута
// 3 - кнопка недоступна / панель в процессе сворачивания


var gTimer = null; //состояние таймера

function fChangeStatus (x)
{
if (gStatus [x] % 2) return;              //статус нечётный (1 или 3), кнопка недоступна, выходим из функции
gStatus [x] = (!gStatus [x]) ? 1 : 3;     //установка нового статуса (1 - разворачиваем или 3 - сворачиваем)
with (document.getElementById ('iBtn' + x).style)
{fontWeight = 'normal'; color = 'gray'; textDecoration = 'none'; cursor = 'default'} //делаем кнопку неактивной
if (!gTimer) fProcess ();                 //запускаем таймер, если он ещё не включён
}

function fProcess ()
{
for (var k = j = 0, l = gStatus.length; j < l; j++) //просматриваем статусы всех пар "кнопка-панель"
   {
   var st = gStatus [j]; if (st % 2) //если статус нечётный (1 или 3), то сворачиваем/разворачиваем
      {
      var obj = document.getElementById ('iPan' + j);
      var he = obj.offsetHeight + 1 * ((st == 1) ? 1 : -1); //определяем текущую высоту панели и изменяем её (в плюс или в минус, в зависимости от статуса)
      obj.style.height = he + 'px';
      if (st == 1 && he == obj.scrollHeight) gStatus [j] = 2; //меняем статус на "полностью развёрнута"
      if (st == 3 && he == 1) gStatus [j] = 0; //меняем статус на "полностью свёрнута"
      if (st != gStatus [j]) with (document.getElementById ('iBtn' + j).style)
      {fontWeight = 'bold'; color = 'black'; textDecoration = 'underline'; cursor = 'pointer'} //делаем кнопку активной
      else k++; //статус не изменился, надо продолжать процесс, меняем флаг
      }
   }
if (k) gTimer = setTimeout (fProcess, 5); else gTimer = null; //продолжаем процесс или выходим из него
}
</script>

<div id="iMenu">
   <div class="cBtn" id="iBtn0" onclick="fChangeStatus (0)">Размещение рекламы</div>
   <div class="cBtn" id="iBtn1" onclick="fChangeStatus (1)">Изготовление рекламы</div>
   <div class="cBtn" id="iBtn2" onclick="fChangeStatus (2)">Интернет-проекты</div>
      <div id="iClr"></div>
   <div class="cPan" id="iPan0"><script>fFormContent (20, 'Размещение'     )</script><!-- Замените на своё содержимое --></div>
   <div class="cPan" id="iPan1"><script>fFormContent (15, 'Изготовление'   )</script><!-- Замените на своё содержимое --></div>
   <div class="cPan" id="iPan2"><script>fFormContent (10, 'Интернет-проект')</script><!-- Замените на своё содержимое --></div>
</div>

И, заметьте, никакого позиционирования вовсе :-)

PS. Тестировал в MSIE6, FF3.5.7, Opera10.10

  Ответить  
 
 автор: pautina   (15.01.2010 в 11:09)   письмо автору
 
   для: GeorgeIV   (15.01.2010 в 10:21)
 

Извиняюсь за отрицательное смещение.
Сейчас изменения внёс и вот что интересно.
В opera 3 кнопки располагаются в ряд, в ie в строку, почему не ясно

 #ras_knopki { border:1px solid black; height:auto; position:relative; width:715px; margin-left:20px; } 
 #raskladka1 { position:relative; left:0px; top:0px; display:inline-block; width:231px; }
 #raskladka2 { position:relative; left:7px; top:0px; display:inline-block; width:231px; }
 #raskladka3 { position:relative; left:7px; top:0px; display:inline-block; width:231px; }

Мне бы хотелось чтобы кнопки распологались горизонтально, пробовал для блока кнопок #ras_knopki ставить display:inline-block, display:inline ни помогло.
Ни скажете что здесь можно сделать.
Хотел добится чтобы 3 кнопки располагались горизонтально.

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования