Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2018, 12:45
Новичок на форуме
Отправить личное сообщение для Djavastik Посмотреть профиль Найти все сообщения от Djavastik
 
Регистрация: 21.01.2018
Сообщений: 2

Исчезающий текст, можно ли упростить скрипт?
Собственно, имеется скрипт. Это вставляем в боди:

Код:
<body onload='fn();fz();'>
Это отображается:

Код:
<span id='saved'> что-то тут написано</span>
<span id='boom'> какой-то текст </span>
А это сам скрипт:

Код:
<script>

  var saved = document.getElementById('saved');
  var color = 0
  function fn(){
    saved.style.color = 'rgb('+255+','+color+','+color+')'
    color += 20
    if(color < 255) setTimeout(fn, 100)
    else {saved.style.color = 'rgb(255,255,255)';return;}
    
    }  
</script>


<script>

  var boom = document.getElementById('boom');
  var color = 0
  function fz(){
    boom.style.color = 'rgb('+255+','+color+','+color+')'
    color += 20
    if(color < 255) setTimeout(fz, 400)
    else {boom.style.color = 'rgb(255,255,255)';return;}
    
    }  
</script>
Если внимательно приглядеться, то их тут два, на самом то деле ))) Всё работает нормально. Так как надо. Но кажется мне, что это как-то... эммм.. по чайниковски что ли... что можно это сделать проще. Но как именно... вот этого я не понимаю. Попробовал покрутить getElementByClassName, но что-то у меня ничего толкового из этого не вышло. Суть в том, что скрипт либо читает только один span, заставляя исчезнуть, либо вообще никаких реакций.

Сама же задача заключается в том, что у меня таких спанов может быть... ну скажем двадцать. Присвоить им циклом через пхп уникальные цифровые идентификаторы не проблема, проблема в том, что этот скрипт не ловит цифры(это раз), а два - даже если он словит первый спан, то остальные останутся... не тронутыми.

То есть, мне либо для каждого нового текстового блока создавать новый script , либо доработать этот таким образом, чтобы он ловил все идентификаторы, которые надо убра.. ну, чтобы они исчезли(в данном случае побелели).

То есть, к примеру, есть у меня такое:

По длинной дороге идёт большой ослик и помахивает коротким хвостиком, отгоняя назойливых мух.

В данном случае "длинной, большой, коротким, назойливых" заключаются в спаны с идентификаторами id=01, id=02, id=03, id=04, а при запуске скрипта эти спаны глушатся. Соответственно, остаться в видимом спектре должно "По дороге идёт ослик и помахивает хвостиком, отгоняя мух."

Я не вдаюсь в подробности того, как именно это всё реализовывается и расставляется, но мне бы хотелось понять, можно ли как-то упростить работу скрипта, на который возложена конкретная задача. И.. если можно, то как именно.
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2018, 13:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Djavastik,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .test {
         color: #FF0000;
         transition: 2s;
    }
    .active .test{
      color: #FFFFFF;
    }

  </style>


</head>

<body onload='document.body.classList.add("active")'>

<span class="test"> что-то тут написано</span>
<span class="test"> какой-то текст </span>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2018, 17:12
Новичок на форуме
Отправить личное сообщение для Djavastik Посмотреть профиль Найти все сообщения от Djavastik
 
Регистрация: 21.01.2018
Сообщений: 2

- Здравствуйте, взвесьте пожалуйста килограмм масла
- О, вы знаете... у нас есть маргарин
- То есть... масла у вас нет?
- А чем вам не нравится наш маргарин?
- Дело в том, что у нас пятизвёздочный ресторан
- А у нас самый лучший маргарин на свете
- Хорошо, взвесьте пожалуйста килограмм маргарина

- Здравствуйте, что на бутерброде с икрой делает маргарин?
- О, вы знаете... у нас самые лучшие бутерброды!
- Но что на бутерброде за 1000 евро делает маргарин?
- Вам не понравилось?
- Дело в том, что нам бы хотелось отведать лучшего масла, с лучшей икрой в лучшем ресторане города
- Да, но вы сами продали нам маргарин



Рони, у вас замечательный пример с использованием css. Спасибо. Однако, мне интересна реализация на java.
Ответить с цитированием
  #4 (permalink)  
Старый 21.01.2018, 17:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от Djavastik
Однако, мне интересна реализация на java.
тогда вы ошиблись форумом
Сообщение от Djavastik
Попробовал покрутить getElementByClassName
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .test {
         color: #FF0000;
         transition: 2s;
    }
    .active .test{
      color: #FFFFFF;
    }

  </style>
 <script>
window.addEventListener("DOMContentLoaded", function() {
  [].forEach.call(document.querySelectorAll(".test"), function(el) {
    var color = 0;
    void function fz() {
      el.style.color = "rgb(" + 255 + "," + color + "," + color + ")";
      color += 20;
      if (color < 255) {
        setTimeout(fz, 400);
      } else {
        el.style.color = "rgb(255,255,255)";
        return;
      }
    }();
  });
});
 </script>
</head>

<body >

<span class="test"> что-то тут написано</span>
<span class="test"> какой-то текст </span>

</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 21.01.2018, 17:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Djavastik,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .test {
         color: #FF0000;
         transition: .1s;
         display:block;
         font-size: 24px;
    }


  </style>
 <script>
window.addEventListener("DOMContentLoaded", function() {
  [].forEach.call(document.querySelectorAll(".test"), function(el,i) {
    var color = 0;
    function fz() {
      el.style.color = "rgb(" + 255 + "," + color + "," + color + ")";
      color += 20;
      if (color < 255) {
        setTimeout(fz, 100);
      } else {
        el.style.color = "rgb(255,255,255)";
        return;
      }
    };
    setTimeout(fz, 1200 * i);
  });
});
 </script>
</head>

<body >
<span class="test">- Здравствуйте, взвесьте пожалуйста килограмм масла</span>
<span class="test">- О, вы знаете... у нас есть маргарин</span>
<span class="test">- То есть... масла у вас нет?</span>
<span class="test">- А чем вам не нравится наш маргарин?</span>
<span class="test">- Дело в том, что у нас пятизвёздочный ресторан</span>
<span class="test">- А у нас самый лучший маргарин на свете</span>
<span class="test">- Хорошо, взвесьте пожалуйста килограмм маргарина</span>

<span class="test">- Здравствуйте, что на бутерброде с икрой делает маргарин?</span>
<span class="test">- О, вы знаете... у нас самые лучшие бутерброды!</span>
<span class="test">- Но что на бутерброде за 1000 евро делает маргарин?</span>
<span class="test">- Вам не понравилось?</span>
<span class="test">- Дело в том, что нам бы хотелось отведать лучшего масла, с лучшей икрой в лучшем ресторане города</span>
<span class="test">- Да, но вы сами продали нам маргарин</span>


</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 22.01.2018, 10:51
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Вариант
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .test {
         color: #FF0000;
         transition:all .4s 0 ease;
    }
    span { font-size:10pt; }
  </style>
 <script>
window.addEventListener("DOMContentLoaded", function() {
  [].forEach.call(document.querySelectorAll(".test"), function(el) {
    var opa = 1, fs = 10;
    void function fz() {
      el.style.opacity = opa;
      el.style.fontSize = fs + "pt";
      opa -= 0.1, fs -= 1;
      if (opa > 0) {
        setTimeout(fz, 400);
      } else {
        el.style.opacity = 0;
        el.style.fontSize = 0;
        return;
      }
    }();
  });
});
 </script>
</head>

<body >

<span>По</span>
<span class="test"> длинной</span>
<span> дороге идёт</span>
<span class="test"> большой</span>
<span> ослик и помахивает</span>
<span class="test"> коротким</span>
<span> хвостиком, отгоняя</span>
<span class="test"> назойливых</span>
<span> мух.</span> 
</body>
</html>

Не смог добиться плавного изменения размера

Последний раз редактировалось Dilettante_Pro, 22.01.2018 в 11:38.
Ответить с цитированием
  #7 (permalink)  
Старый 22.01.2018, 15:45
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Dilettante_Pro,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .test {
         color: #FF0000;
         transition:all .4s 0 ease;
    }
    span { font-size:10pt; }
  </style>
 <script>
window.addEventListener("DOMContentLoaded", function() {
  [].forEach.call(document.querySelectorAll(".test"), function(el) {
    var opa = 1, fs = 10;
    void function fz() {
      el.style.opacity = opa;
      el.style.fontSize = fs + "pt";
      opa -= 0.001, fs -= 0.01;
      if (opa > 0) {
        setTimeout(fz, 4);
      } else {
        el.style.opacity = 0;
        el.style.fontSize = 0;
        return;
      }
    }();
  });
});
 </script>
</head>

<body >

<span>По</span>
<span class="test"> длинной</span>
<span> дороге идёт</span>
<span class="test"> большой</span>
<span> ослик и помахивает</span>
<span class="test"> коротким</span>
<span> хвостиком, отгоняя</span>
<span class="test"> назойливых</span>
<span> мух.</span> 
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 22.01.2018, 16:44
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

j0hnik,
Такой вариант очевиден, я надеялся как-то при помощи transition сгладить шаги
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сворачивание строк таблицы eFusion jQuery 6 13.05.2014 15:08
Прокрутка; Изменение координат картинки (Sandr) Общие вопросы Javascript 12 31.12.2011 04:34
Выравнять три дива в одной строке debugx (X)HTML/CSS 9 06.10.2011 12:03
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30