Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
22 / 22 / 8
Регистрация: 23.02.2013
Сообщений: 130

Смена фона таблицы через некоторые промежутки времени

14.11.2016, 05:03. Показов 1369. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица с тестом и элементами управления, надо менять ее фон через несколько секунд.

HTML5
1
2
3
4
5
6
7
8
<TABLE border="0" width="100%" class="tableT">
<TBODY  >
<TR class="tbl_bg" height=500><TD colspan="5" valign="bottom">
 
тут важное содержимое которое должно располагаться именно тут
 
</TD>
</TR>
и скрипт который это меняет

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript" class="noprint">
    var aImages = new Array();
    var aURL = new Array();
    var aArtists = new Array();
    var iPrev = -1;
    var iRnd = -1;
    
    aImages[0]  = "jpg/templait/fon/01.jpg";
    aImages[1]  = "jpg/templait/fon/02.jpg";
    aImages[2]  = "jpg/templait/fon/03.jpg";
    aImages[3]  = "jpg/templait/fon/04.jpg";
    aImages[4]  = "jpg/templait/fon/05.jpg";
    aImages[5]  = "jpg/templait/fon/06.jpg";
    aImages[6]  = "jpg/templait/fon/07.jpg";
    aImages[7]  = "jpg/templait/fon/08.jpg";
    aImages[8]  = "jpg/templait/fon/09.jpg";
    aImages[9]  = "jpg/templait/fon/10.jpg";
    aImages[10] = "jpg/templait/fon/11.jpg";
    aImages[11] = "jpg/templait/fon/12.jpg";
    aImages[12] = "jpg/templait/fon/13.jpg";
    aImages[13] = "jpg/templait/fon/14.jpg";
    aImages[14] = "jpg/templait/fon/15.jpg";
    aImages[15] = "jpg/templait/fon/16.jpg";
    aImages[16] = "jpg/templait/fon/17.jpg";
    aImages[17] = "jpg/templait/fon/18.jpg";
    aImages[18] = "jpg/templait/fon/19.jpg";
    aImages[19] = "jpg/templait/fon/20.jpg";
    aImages[20] = "jpg/templait/fon/21.jpg";
 
 
    var intervalCsaHead = setInterval(LoadImages,2000);
 
    function LoadImage(iNr)
    {
      $('.tbl_bg').css({'background-image':'url('+aImages[iNr]+')'});
       };
    
    function LoadImages()
    {
        while(iPrev == iRnd)
        {
            iRnd = Math.floor(Math.random()*aImages.length);
        }
        LoadImage(iRnd);
        iPrev = iRnd;
    };
</script>
по сути просто замена CSS background-image проблема в том, что картинки довольно объемные 2000*500px и загружаются сильно медленно (например 1 секунда на загрузку с удаленного сервера). а так же в момент смены картинок виден фон, резкая смена яркости очень заметна глазом (яркая вспышка). как бы убрать эти эффекты что бы и загружалось сразу и менялось одним кадром.

пробовал CSS $('.tbl_bg').animate({'opacity':'0'},600 );, выглядит хорошо, но тогда скрывается все содержимое ячейки, а там меню.

перерыл инет, но оказалось, что все решения по плавной смене основаны не на смене фона, а на обновлении блоков или <img>, а вот нормальных сменщиков фонов нет в природе.

пробовал делать <DIV> нужного размера с хорошей библиотекой по смене картинок и надвигать на него свои объекты с position: relative; top:-500px; но работает коряво. у меня таблица во весь экран, т.е. ширина не фиксированная, поэтому при изменении размеров окна начинаются глюки с пустыми полосами по бокам. например, смещение в -500 для объекта дает белое поле снизу высотой около 500.

сейчас думаю, что можно было бы перекрашивать фоновое изображение без смены картинки, но не представляю как это можно сделать. может еще выходы есть ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2016, 05:03
Ответы с готовыми решениями:

Смена фона в зависимости от времени суток
Помогите разобраться,почему не работает &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html;...

Автоматическое открытие вкладки через равные промежутки времени
Доброго времени суток ! Хочу написать расширение для хрома, и нужно, чтобы HTML-страничка открывалась автоматически через каждые,...

Скрипт, запрашивающий страницу через определенные промежутки времени
Я не спец по java script. Может быть подскажите функцию, которая через каждые, к примеру, 60 сек. Запрашивает у сервера страницу...

5
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
14.11.2016, 09:41
Во-первых, замените пожалуйста вот это
JavaScript
1
2
3
4
aImages[0]  = "jpg/templait/fon/01.jpg";
aImages[1]  = "jpg/templait/fon/02.jpg";
...
aImages[20] = "jpg/templait/fon/21.jpg";
на это:
JavaScript
1
for (var i = 0; i < 21; i++) aImages[i] = "jpg/templait/fon/"+(i+1)+".jpg";
А то мне плохо становится, когда такое вижу.
Во-вторых, Java и JavaScript не имеют ничего общего. Оформляйте код в соответствующих тегах.
В-третьих, заставлять клиент грузить каждые 2 секунды картинку 2000х500 - это издевательство над клиентом. Даже если изображения кэшируются.
Могу вам только посоветовать оптимизировать размер картинок или полностью переосмыслить алгоритм.
0
22 / 22 / 8
Регистрация: 23.02.2013
Сообщений: 130
14.11.2016, 13:07  [ТС]
Цитата Сообщение от Balanaar Посмотреть сообщение
Во-первых, замените пожалуйста вот это на это:
это можно, изначально не подразумевалось, что имена будут похожи, случайно получилось в процессе работы.


Цитата Сообщение от Balanaar Посмотреть сообщение
В-третьих, заставлять клиент грузить каждые 2 секунды картинку 2000х500 - это издевательство над клиентом. Даже если изображения кэшируются.
2 секунды для отладки, в реальности будет порядка 20 секунд. вес тоже вещь относительная это 300кб, для современных сайтов это не так уж много. и тут такая постановка задачи, поменять ее не в моих силах.

Цитата Сообщение от Balanaar Посмотреть сообщение
Могу вам только посоветовать оптимизировать размер картинок или полностью переосмыслить алгоритм.
в какую сторону переосмыслять ? я пока не знаю.
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
14.11.2016, 13:29
Цитата Сообщение от ntec Посмотреть сообщение
вес тоже вещь относительная
Всё верно. Не стоит забывать про мобильные платформы. Там эти 300кб могут обернуться потерей клиента.
"Переосмыслить" в смысле постановку задачи изменить. Если она от вас не зависит, попробуйте объяснить заказчику, что то, что он задумал - плохая идея. Если вы все-таки остаетесь на своем, то пробуйте. Отпишите потом, как решили в итоге.
0
22 / 22 / 8
Регистрация: 23.02.2013
Сообщений: 130
16.11.2016, 04:49  [ТС]
Цитата Сообщение от Balanaar Посмотреть сообщение
Не стоит забывать про мобильные платформы. Там эти 300кб могут обернуться потерей клиента.
специфика сайта, мобильные платформы не учитываются, вероятность такого пользователя на сайте << 0.1%.

появилась идейка, реализовал.
1.Склеил фоны в один файл (пока 3 штуки, но и на большем числе будет работать).
2.Просто двигаю фон.

HTML5
1
2
3
4
5
6
7
8
9
10
<style>
.tbl_bg
{
  background-image: url(combo.jpg);
  background-position: left 500px;
  rbackground-size: cover;
  max-height : 500px;
  min-height : 500px;
}
</style>
HTML5
1
2
3
4
5
<TABLE border="1" width="100%" height="500" class="tblM">
<TBODY  >
<TR class="tbl_bg"><TD><BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>cvbcvbcvb &nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR></TD></TR>
</TBODY>
</TABLE>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript">
  i=1;
 
  function csaHead(){
 
     if(i > 3) { i=1;}
 
     var borderTopColor = $('.tblM').width();
 
 
     if (borderTopColor > 2000) 
        {
          $('.tbl_bg').css({'background-position':'left ' + (i-1)*500*(borderTopColor/2000) + 'px', 'background-size' : 'cover' });
 
        } else
        {  
          $('.tbl_bg').css({'background-position':'left ' + (i-1)*500 + 'px', 'background-size' : 'auto' });
        };
     i++;
  }
 
  var intervalCsaHead = setInterval(csaHead,2000);
</script>
Добавлено через 11 минут
размер одного фона 2000*500px, в файле их 3 штуки т.е. 2000*1500px. Высота объекта чей фон меняем фиксирована 500px. ну и всё, двигаем когда надо одну картинку в фоне.
Если ширина экрана <= 2000 px, то обрезаем фон справа, если больше то растягиваем, при этом меняются размеры картинки (хз почему) поэтому смещение считается с учетом растягивания.

из глюков только два:
1) при загрузке надо вызвать функцию если ширина экрана больше 2000 (иначе виден повтор)
2) при изменении размеров окна надо вызвать функцию что бы она пересчитала размеры
думаю, не сложно будет поправить
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,531
16.11.2016, 17:03
Цитата Сообщение от Balanaar Посмотреть сообщение
А то мне плохо становится, когда такое вижу.
есть такое дело

я бы ещё урезал, все одинаковые куски подставил бы в одном месте, мне бы лень набирать было бы столько
for (var i = 0; i < 21; i++) aImages[i] = i+1);// только имена, остальное повторы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2016, 17:03
Помогаю со студенческими работами здесь

Смена фона при наведении курсора мыши на ячейку таблицы
Создать функцию, которая будет изменять фон слоя в соответствии с фоном ячейки при наведении курсора мыши на ячейку таблицы. В качестве...

Смена фонового изображение через заданный промежуток времени
Задача: Есть n изображений. Надо их по очереди прописывать в фон к body через n секунд.

Функция с использованием setInterval выводит данные через разные промежутки времени.
у меня на сервере скрипт который возвращает время (сколько мин сек прошло от заданного времени) function get_data(){ ...

Смена картинок из папки через заданный промежуток времени
Добрый вечер! Хотел сделать простую смену картинок из папки. Вот код: &lt;img src=&quot;gallery/foto1.jpg&quot; width=&quot;500&quot;...

Смена фона по заданному времени
Как сменить фон по заданному времени Есть скрипт времени bj_hours=document.getElementById(&quot;datehours&quot;); function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru