Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.11.2021, 16:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сергей Ракипов,
<!DOCTYPE html>
<html lang="ru_RU">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <style>
        body {
            background: #000;
            font-family: Verdana;
            font-size: 16px;
        }

        .blok {
            margin: 40px 40px 40px 40px;
            display: flex;
            align-items: center;
        }

        .tekst {
            margin: 0px 20px 0px 0px;
        }

        .tekst a {
            color: #22AD1D;
        }

        .tekst a:hover {
            color: #fff;
        }

        .ikonka {
            width: 94px;
            height: 94px;
        }

        .ikonka_pryas {
            background-image: url(http://rakipov.ru/files/ikonka_prais_6.svg);
            background-repeat: no-repeat;
            background-position: center;
            background-size: 100%;
        }

        @media (max-width:640px) {
            .ikonka {
                width: 64px;
                height: 64px;
            }
            .ikonka_pryas {
                background-image: url(http://rakipov.ru/files/ikonka_prais_9.svg);
                background-repeat: no-repeat;
                background-position: center;
                background-size: 100%;
            }
        }
    </style>
    <script>
        jQuery(document).ready(function($) {
            [8, 10].forEach(n => {
                let img = new Image();
                img.src = `http://rakipov.ru/files/ikonka_prais_${n}.svg`;
            }); //предзагрузка картинок для  hover, чтоб иконка не "прыгала", по желанию
            $('.ssilka_prays').hover(function() {
                // навели мышь на элемент
                let n = window.matchMedia('(min-width: 640px)').matches ? 8 : 10;
                let url = `url(http://rakipov.ru/files/ikonka_prais_${n}.svg)`;
                $('.ikonka_pryas').css('background-image', url);
            }, function() {
                // убрали мышь с элемента
                $('.ikonka_pryas').css('background-image', '');
            });
        });
    </script>
</head>

<body>
    <div class="blok">
        <div class="tekst">
            <a href="#" class="ssilka_prays">ПРАЙС ЛИСТ</a>
        </div>
        <div class="ikonka ikonka_pryas">
        </div>
    </div>
</body>

</html>
Ответить с цитированием
  #22 (permalink)  
Старый 19.11.2021, 16:08
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Кошмарный код.
Вот вы повесили на ssilka_prays события mouseover и mouseout.
Затем, если изменится размер опять вызовется ваша функция ssilka и на этот элемент опять будут вешаться те же события но с другими функциями. С другими, даже если будет выполняться то же условие, ведь эти функции заново определяются, и это будут уже совсем другие функции.
Но addEventListener не отменяет предыдущие обработчики, а добавляет.
Т.е в конце концов может случиться так, что у вас будет определено 100500 одинаковых функций и все они будут назначены, как обработчики событий, и будут выполняться последовательно при наступлении события.

Это я писал про код Сергей Ракипов

Последний раз редактировалось voraa, 19.11.2021 в 16:14.
Ответить с цитированием
  #23 (permalink)  
Старый 19.11.2021, 16:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от Сергей Ракипов
И у меня дополнительный вопрос а почему иногда иконка мигает,
попробовал добавить предзагрузку картинок, может частично пропадёт мигание, если нет то к специалистам по css.
Ответить с цитированием
  #24 (permalink)  
Старый 19.11.2021, 16:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Чтобы иконки не "мигали" можно использовать подход со "спрайтами"...
https://learn.javascript.ru/css-sprite
Ответить с цитированием
  #25 (permalink)  
Старый 20.11.2021, 07:05
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

рони,
Как всегда огромное спасибо !
Ответить с цитированием
  #26 (permalink)  
Старый 20.11.2021, 07:05
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

voraa,
А как правильно нужно было сделать ?
Ответить с цитированием
  #27 (permalink)  
Старый 20.11.2021, 07:06
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

ksa,
Спасибо вот это полезно
Ответить с цитированием
  #28 (permalink)  
Старый 20.11.2021, 07:09
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

рони,
А вот еще такой вопрос. Это лучше сделать в модельный файл и подгружать его или вот так куском кода на каждую страницу

??
Ответить с цитированием
  #29 (permalink)  
Старый 20.11.2021, 07:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сергей Ракипов,
делать отдельный модуль, думаю нецелесообразно,
но если написать более универсальный код, для таких пар, тогда возможно.
Ответить с цитированием
  #30 (permalink)  
Старый 20.11.2021, 08:14
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Попробовал со спрайтами и понял что это нужная тема которую стоит использовать. И моего понимание хватило не на много. Можете дополнить код что бы он работал так как же как и код выше, только со сдвигом, я не много его написал. Но ни понимаю синтаксиса когда нужно добавлять условия на разрешение 640 px

<!DOCTYPE html>
<html lang="ru_RU">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <style>
        body{
            background: #000;
            font-family: Verdana;
            font-size: 16px;
        }
        .blok {
            margin: 40px 40px 40px 40px;
            display: flex;
            align-items: center;
        }
        .tekst {
            margin: 0px 20px 0px 0px;
        }
        .tekst a {
            color:#22AD1D;
        }
        .tekst a:hover {
            color:#fff;
        }
        .ikonka {
            width: 94px;
            height: 94px;
        }
        .ikonka_pryas {
            background-image: url(http://rakipov.ru/files/prays_94.png);
            background-repeat:  no-repeat; 
            background-position:0px ;
        }
        .ikonka_pryas:hover {
            background-image: url(http://rakipov.ru/files/prays_94.png);
            background-repeat:  no-repeat; 
            background-position:-94px;
        }
        @media (max-width:640px){
            .ikonka {
                width: 64px;
                height: 64px;
        }
        .ikonka_pryas {
            background-image: url(http://rakipov.ru/files/prays_64.png);
            background-repeat:  no-repeat; 
            background-position:0px;
        }
        .ikonka_pryas:hover {
            background-image: url(http://rakipov.ru/files/prays_64.png);
            background-repeat:  no-repeat; 
            background-position:-64px;
        }
        }
    </style>

</head>
<body>
    <div class="blok">
        <div class="tekst">
            <a href="#" class="ssilka_prays">ПРАЙС ЛИСТ</a>
        </div>
        <div class="ikonka ikonka_pryas">
            
        </div>
    </div>
    <script>
        jQuery(document).ready(function($) {
            $('.ssilka_prays').hover(function() {
                // навели мышь на элемент
                $('.ikonka_pryas').css('background-position', '-94px');
            }, function() {
                // убрали мышь с элемента
                $('.ikonka_pryas').css('background-position', '0px');
            });
        });
    </script>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть исходный код. добавить несколько функций на стороне клиента+ сервер masha1 Работа 1 27.03.2018 10:32
Помогите дополнить код — задержка события removeClass Vladislav0140 Общие вопросы Javascript 2 28.11.2016 21:39
Как найти и заменить код скрипта на странице на другой код? smls Общие вопросы Javascript 2 18.07.2016 22:01
"Оживите" код с хабра - https://habrahabr.ru/sandbox/51453/ Daniil2206 Node.JS 0 11.05.2016 18:09
Требуется выводить код рекламного блока Adsense из файла JavaScript??? speedflow Элементы интерфейса 0 26.05.2012 15:50