Javascript.RU

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

Остановка скрипта при наведении мыши
Здарова, прогеры! Помогите, пожалуйста, новичку в JavaScript. В меню есть ссылочка a#shining-text, по которой пробегает блик. Но при наведении мышки на эту ссылку, этот скрипт (блик) должен останавливаться, а ссылка гореть белым цветом

Выглядит так: сама ссылка серая, по ней для привлечения внимания бегает блик. При наведении на ссылку, блик должен перестать бегать, а сама ссылка загореться белым (hover).

Сам скрипт:

(function($) {  
      
    $.fn.textAnimation = function(settings) {  
      
        var container = this;
        settings = $.extend({  
            mode : "roll"
        }, settings);
            
        function parse(e){
            if(e.hasClass("isTextAnimated")) return;
            var text = e.text();
            e.html("");
            for(var i=0;i< text.length;i++) {
                var span = $("<span></span>").text(text.charAt(i));
                e.append(span);
            }
            e.addClass("isTextAnimated");
        }
            
        function parseDiv(e,width,verticalAlign){
            if(e.hasClass("isTextAnimated")) return;
            var text = e.text();
            e.html("");
			
			//css setting
			var css = {position:"absolute"};
			verticalAlign = verticalAlign || "bottom";
			css[verticalAlign] = "0px";
            
			//width setting
			if(width === false) width = e.css("fontSize").replace(/px/,"")/1.25;
			
			for(var i=0;i< text.length;i++) {
				css.left = width*i;
                var div = $("<div></div>").text(text.charAt(i)).css(css);
				e.append(div);
            }
            e.addClass("isTextAnimated").css({position:"relative"});
        }
		
		function execute(options,start,finish){
			var time  = options.time;
			var interval = options.interval;
            var repeat = options.repeat;
            var startId;
			var amountInterval = interval + time;
			if(finish) amountInterval*=2;
			var e = options.e;
			
			if (options.onStart) {
				e.bind(options.onStart, function(){
					if (startId) return;
					start();
					if (repeat) {
						startId = setInterval(start, amountInterval);
						if (finish) {
							setTimeout(function(){
								finish();
								if (repeat) 
									setInterval(finish, amountInterval);
							}, amountInterval / 2);
						}
					}
				});
			} else {
                start();
                if(repeat) setInterval(start, amountInterval);
				if(finish) {
					setTimeout(function(){
                        finish();
                        if(repeat) setInterval(finish, amountInterval);
					},amountInterval/2);
				}
			}
			if (options.onFinish) {
                e.bind(options.onFinish, function(){
                    if (startId && repeat) {
						clearInterval(startId);
						startId = false;
					}
					if(finish) finish();
					
                });
			}
		}
        
		var f = {
            
            highlight:function(e){
                var options = $.extend({
                    e : e,
                    baseColor : "#666666",
                    highlightColor : "#FFFFFF",
                    delay : 50,
                    interval : 1500,
                    duration : 300,
                    repeat : true,
                    onStart : false,
                    onFinish : false
                },settings);
                
                parse(e);
                var i = 0;
                var elements = e.children().css({color:options.baseColor});
                var length = elements.length;
                if(!options.interval && !options.delay) options.interval = 100;
                var hc = options.highlightColor;
                var bc = options.baseColor;
                var du = options.duration;
                var de = options.delay;
                
                var start = function(){
                    elements.each(function(i){
                        var s = $(this);
                        setTimeout(function(){
                            s.animate({
                                color: hc
                            }, {
                                duration: du
                            }).animate({
                                color: bc
                            },{
                                duration: du
                            });
                        },de*i);
                    });
                };
                
                options.time = (options.delay * length);
                execute(options,start);
            }
		};
		
        return container.each(function(){  
            f[settings.mode]($(this));
        });
    };
  
})(jQuery);


Запуск скрипта:

$(document.body).ready(function(){
    $("a#shining-text").textAnimation({
        mode: "highlight"
    });
});
Ответить с цитированием
  #2 (permalink)  
Старый 18.03.2018, 15:09
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

HTML код бы пригодлся
Ответить с цитированием
  #3 (permalink)  
Старый 18.03.2018, 15:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

css блик по ссылке
Сообщение от Esm1nec
Выглядит так: сама ссылка серая, по ней для привлечения внимания бегает блик. При наведении на ссылку, блик должен перестать бегать, а сама ссылка загореться белым (hover).
идея devote
https://javascript.ru/forum/project/...tml#post375476
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
</head>

<body>
<style>
  .bar {
    line-height: 1.6em;
    position:  relative;
    display: inline-block;
    background-color:  transparent;
    overflow: hidden;
    box-sizing: border-box;
    margin: 4px 6px;
    padding: 4px;
  }

  .bar:before {
    content: ' ';
    display: block;
    position: absolute;
    width: 280%;
    height: 100%;
    animation: trololo 2s linear infinite;
    background-image: linear-gradient(90deg, #A9A9A9 15%, white 50%, #A9A9A9 85%);
    z-index: -10;
    background-repeat: repeat;
  }
  .bar:hover:before {
     background-image:  none;
     animation-play-state: paused;

  }

  @keyframes trololo {
    from {
      left: -150%;
    }

    to {
      left: -5%;
    }
  }
</style>

 <a href="" id="shining-text" class="bar">shining-text</a>
</body>

</html>

Последний раз редактировалось рони, 18.03.2018 в 15:47.
Ответить с цитированием
  #4 (permalink)  
Старый 19.03.2018, 08:52
Аватар для Esm1nec
Новичок на форуме
Отправить личное сообщение для Esm1nec Посмотреть профиль Найти все сообщения от Esm1nec
 
Регистрация: 18.03.2018
Сообщений: 8

Сообщение от j0hnik Посмотреть сообщение
HTML код бы пригодлся
Да просто ссылка в меню с id="shining-text"

<nav itemscope itemtype="http://schema.org/SiteNavigationElement">
    <ul class="uk-navbar-nav uk-hidden-small">
        <li class='uk-active' itemprop="name"><a href="/" itemprop="url">Главная</a></li>
        <li  itemprop="name"><a href="/avtopark.php" itemprop="url" id="shining-text">Автопарк</a></li>
        ...
</ul>
</nav>
Ответить с цитированием
  #5 (permalink)  
Старый 19.03.2018, 08:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Esm1nec,
документация по плагину где?
Ответить с цитированием
  #6 (permalink)  
Старый 19.03.2018, 08:59
Аватар для Esm1nec
Новичок на форуме
Отправить личное сообщение для Esm1nec Посмотреть профиль Найти все сообщения от Esm1nec
 
Регистрация: 18.03.2018
Сообщений: 8

Сообщение от рони Посмотреть сообщение
идея devote
https://javascript.ru/forum/project/...tml#post375476
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
</head>

<body>
<style>
  .bar {
    line-height: 1.6em;
    position:  relative;
    display: inline-block;
    background-color:  transparent;
    overflow: hidden;
    box-sizing: border-box;
    margin: 4px 6px;
    padding: 4px;
  }

  .bar:before {
    content: ' ';
    display: block;
    position: absolute;
    width: 280%;
    height: 100%;
    animation: trololo 2s linear infinite;
    background-image: linear-gradient(90deg, #A9A9A9 15%, white 50%, #A9A9A9 85%);
    z-index: -10;
    background-repeat: repeat;
  }
  .bar:hover:before {
     background-image:  none;
     animation-play-state: paused;

  }

  @keyframes trololo {
    from {
      left: -150%;
    }

    to {
      left: -5%;
    }
  }
</style>

 <a href="" id="shining-text" class="bar">shining-text</a>
</body>

</html>
Спасибо, интересный вариант! Попробую его применить и посмотреть, как выглядеть будет А если все же через JS события onmouse?
Ответить с цитированием
  #7 (permalink)  
Старый 19.03.2018, 09:06
Аватар для Esm1nec
Новичок на форуме
Отправить личное сообщение для Esm1nec Посмотреть профиль Найти все сообщения от Esm1nec
 
Регистрация: 18.03.2018
Сообщений: 8

Сообщение от рони Посмотреть сообщение
Esm1nec,
документация по плагину где?
Тут брал сам плагин: http://pcvector.net/scripts/text_and...na-jquery.html

Вот так должно выглядеть:
Наводишь на "автопарк" и ссылка подсвечивается, как "главная".


Последний раз редактировалось Esm1nec, 19.03.2018 в 09:39.
Ответить с цитированием
  #8 (permalink)  
Старый 19.03.2018, 13:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

блик по ссылке
Esm1nec,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  body{
    background:#000;
  }

  ul{
    list-style:none;
    font-size:50px;
    display:flex;
    justify-content: center;
  }

  ul a{
    text-decoration:none;
    color:#FFF;
  }

  ul li{
    margin:20px;
  }

  .isTextAnimated span{
    transition: .6s;
    color:#666;
    animation:trololo 2.4s linear infinite;
  }

  .isTextAnimated:hover span{
    animation:none;
    color:#FFF;

  }

  @keyframes trololo{
    30%,70%{
      color:#666;
    }

    50%{
      color:#FFF;
    }
  }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
  var e = $("#shining-text");
  var text = e.text();
  e.html("");
  for (var i = 0; i < text.length; i++) {
    var span = $("<span></span>", {style:"animation-delay :" + i * 100 + "ms;"}).text(text.charAt(i));
    e.append(span);
  }
  e.addClass("isTextAnimated");
});
  </script>
</head>

<body>

<nav itemscope itemtype="http://schema.org/SiteNavigationElement">
    <ul class="uk-navbar-nav uk-hidden-small">
        <li class='uk-active' itemprop="name"><a href="/" itemprop="url">Главная</a></li>
        <li  itemprop="name"><a href="/avtopark.php" itemprop="url" id="shining-text">Автопарк</a></li>
        ...
</ul>
</nav>

</body>
</html>

Последний раз редактировалось рони, 19.03.2018 в 14:09.
Ответить с цитированием
  #9 (permalink)  
Старый 19.03.2018, 13:48
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
Явно лучше чем плагин.
Там и JQ и UI
так еще и setInterval любимый
Ответить с цитированием
  #10 (permalink)  
Старый 19.03.2018, 14:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

j0hnik,
при желании можно этот вариант без JQ на js
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
События при наведении мыши Nataly12 Элементы интерфейса 11 19.09.2014 16:42
jcarousel остановка при наведении Aeooe jQuery 3 26.08.2014 18:01
Смена картинки с ссылкой при наведении мыши в таблице makc0993 Элементы интерфейса 6 17.02.2013 17:44
Многократный запуск скрипта при наведении мыши AcidCrash Элементы интерфейса 7 08.07.2011 12:02
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06