Сейчас: 02:31:36   26-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеПлавающая надпись
43
92

Скрипт, создающий плавающую надпись

Ниже описанный JavaScript код генерирует плавающую надпись, которая будет находиться в заданных координатах поверх основного текста даже при прокрутке страницы. Таким способом можно добавить, например, меню сайта, которое всегда будет находиться в заданном месте или рекламное объявление.


Х
Пример плавающей надписи.
Опуститесь с помощью скроллинга вниз страницы.

Внимание! Данный пример не будет работать в некоторых браузерах в том случае, если в начале файла со скриптом имеются строки:

Цитата:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
или
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
>

Для начала, давайте создадим нашу плавающую надпись и зададим ей необходимый стиль следующим образом:

HTML код:
<div id="floating_sign" style="background:silver; color:blue; border:1px solid red;
padding:7px; position: absolute; width:200px; left:800px; top:200px; z-index: 100"
>
 <
div style="text-align:right;">
  <
span onclick="show_sign()" style="cursor:pointer;">Х</span>
 </
div>
 <
b>Пример плавающей надписи.</b><br>
 
Опуститесь с помощью скроллинга вниз страницы.
</
div>

Обратите внимание на функцию onclick="show_sign()", которая по нажатию на ссылку позволяет плавающую надпись сделать невидимой (скрыть её).


Далее, для получения эффекта плавающей надписи, вставьте JavaScript код, приведенный ниже, в начало Вашей странички (но после того, как Вы задали стиль надписи):

JavaScript код:
<script type="text/javascript">
window.onerror null;
var 
ABCDcurrentYtargetYscrollToptopMarginfindHt;
var 
topMargin 200;
var 
slideTime 900;
var 
ns6 = (!document.all && document.getElementById);
var 
ie4 = (document.all);
var 
ns4 = (document.layers);

function 
main() {
 if (
ns4) {
  
currentY document.layers["floating_sign"].top;
  
scrollTop window.pageYOffset;
  
mainTrigger();
 }
 else if(
ns6) {
  
currentY parseInt(document.getElementById("floating_sign").style.top);
  
scrollTop scrollY;
  
mainTrigger();
 }
 else if(
ie4) {
  
currentY floating_sign.style.pixelTop;
  
scrollTop document.body.scrollTop;
  
mainTrigger();
 }
}

function 
mainTrigger() {
var 
newTargetY scrollTop topMargin;
 if ( 
currentY != newTargetY ) {
  if ( 
newTargetY != targetY ) {
   
targetY newTargetY;
   
Start_floating();
  }
 
animation();
 }
}

function 
Start_floating() {
var 
now = new Date();
 
targetY currentY;
 
Math.PI / ( slideTime );
 
now.getTime();
 if (
Math.abs(A) > findHt) {
  
targetY findHt targetY findHt;
  
findHt : - findHt;
 }
 else 
currentY;
}

function 
animation() {
var 
now = new Date();
var 
newY Math.sin* ( now.getTime() - )) + D;
 
newY Math.round(newY);
 if (( 
&& newY currentY )||( && newY currentY )) {
  if ( 
ie4 )document.all.floating_sign.style.pixelTop newY;
  if ( 
ns4 )document.layers["floating_sign"].top newY;
  if ( 
ns6 )document.getElementById("floating_sign").style.top newY "px";
 }
}

function 
show_sign() {
 
sign_obj document.getElementById("floating_sign");
 
sign_obj.style.visibility "hidden";
}

window.setInterval("main()"10);
</script>

Данный код отвечает за плавное перемещение плавающего блока и за его скрытие при нажатии на "Х" в правом верхнем углу плавающей надписи.


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

Дата создания: 17:55:42 10.07.2011 г.
Дата обновления: 20:29:44 12.02.2013 г.
Посещений: 10176 раз(а).

Комментарии посетителей (12 шт.):
Троллер
2
# 62
(13:30:39  27.01.2012 г.)

Добавьте возможность закрывания этой надписи.
Ответить

Administrator
4
# 64
(20:07:44  27.01.2012 г.)

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

Алексей
0
# 287
(11:10:41  04.09.2012 г.)

IE8 - надпись не плавает.
Ответить

Administrator
0
# 604
(20:35:19  12.02.2013 г.)

Обращаем Ваше внимание на то, что в IE данная надпись может не плавать в зависимости от указанного DOCTYPE!
Ответить

Владимир
0
# 471
(18:59:19  17.12.2012 г.)

Не могу отрегулировать отступ надписи от левого края страницы.
Ответить

Administrator
0
# 486
(14:03:44  22.12.2012 г.)

Владимир, измените значение параметра left в строках: <div id="floating_sign" style="background:silver; color:blue; border:1px solid red; padding:5px; position: absolute; width:190px; left:800px; top:200px; z-index: 100">
Ответить

Владимир
0
# 597
(17:33:34  10.02.2013 г.)

Ясное дело, это первое, что я попробовал. Но регулировки работают только для "width:___px;" и "height:___px; а для "left:___px;" и "top:___px;" НЕ РАБОТАЮТ!(Firefox 11.0)
Ответить

Administrator
0
# 598
(18:07:17  10.02.2013 г.)

Все работает, вероятно, Вы где-то ошиблись (либо убрали position: absolute;), т.к. это обычный CSS.
Проверял на browsershots.org в Firefox 11.0, все работает корректно!
Попробуйте вставить данный код на пустую страничку, чтобы убедиться что работает:
<div style="border:1px solid red; padding:5px; position: absolute; width:190px; left:90px; top:90px;>
Ответить

Владимир
0
# 601
(14:55:56  12.02.2013 г.)

Извините за настойчивость, но я люблю, чтобы все работало как задумано. На моем сайте есть справа отличное место для плавающей надписи, но оно требует отступа где-то 1000...1200px.
Только что проверил тот же код в ie8 - позиция регулируется, но надпись не плавает...
Ответить

Administrator
0
# 603
(20:34:31  12.02.2013 г.)

Владимир, при более тщательном просмотре кода нашел недоработки. Спасибо за настойчивость. Код поправил, так что скопируйте его заново. Обращаем Ваше внимание на то, что в IE данная надпись может не плавать в зависимости от указанного DOCTYPE (в статье это указано)! Конкретно на данной страничке, данная надпись в IE не плавает.
Ответить

Владимир
0
# 606
(13:08:32  13.02.2013 г.)

Спасибо!!! Теперь все работает. Единственное - отступ сверху по-прежнему регулируется только переменной "topMargin =___" в теле скрипта, а "top:___px;" в дескрипторе по-прежнему не влияет...
Ответить

Administrator
0
# 612
(20:08:13  13.02.2013 г.)

top:___px в стиле надписи предназначено только для задания первоначальной позиции надписи. Это полезно только в том случае, если Вы хотите привлечь к надписи внимание (при загрузке странички она переместится до значения, указанного в topMargin =___).
Ответить

Закрыть
Ваше имя:
753 + 11 =
Добавить комментарий:
Ваше имя:
753 + 11 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 10

Как Вы узнали о нашем сайте?