Как вызвать всплывающее окно с изображением при наведении курсора на текстовый элемент - PullRequest
0 голосов
/ 21 июня 2020

Как сделать так, чтобы изображение появлялось (и перемещалось с курсором) при наведении курсора на текст? Мне также нужно, чтобы изображение было под текстом, над которым наведен курсор, но поверх всего остального текста. Вы можете увидеть здесь пример - http://spab-rice.com/wordpress/vavo/demo/home-minimal/

Я могу получить фоновое изображение, которое появится при наведении курсора, но это меня озадачило.

Ответы [ 4 ]

1 голос
/ 22 июня 2020

ЗАПУСТИТЬ КОД НА ПОЛНОЙ СТРАНИЦЕ

Наконец сделал это -: Я использовал положение мыши в качестве положения изображений, чтобы они перемещались вместе с курсором. выравнивание сверху или снизу, которое, я думаю, вы добавите с помощью z-index. Или, если хотите, можете узнать здесь - https://www.w3schools.com/jsref/prop_style_zindex.asp. Мой код был следующим: вам просто нужно изменить фон изображения (div) на ваш wi sh. Надеюсь, это был тот код, которого вы ожидали .. Спасибо

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body>
<style>
*{
    margin: 0;
    padding: 0;
}
.text1,.text2,.text3{
    position: relative;
    margin: 0px 100px;
    background-color: red;
    width: 100px;
    height: 200px;
}
.text2{
    background-color: yellow;
}
.text3{
    background-color: lawngreen;
}
.text1{
    margin-top: 100px;
}
.image1{
    position: absolute;
    width: 300px;
    height: 300px;
    background: green;
    border-radius: 50%;
    display: none;
    transition: 0.5s linear;
}
.image2{
    position: absolute;
    width: 300px;
    height: 300px;
    background: red;
    display: none;
    transition: 0.5s linear;
    border-radius: 50%;
}
.image3{
    position: absolute;
    width: 300px;
    height: 300px;
    background: blue;
    display: none;
    transition: 0.5s linear;
    border-radius: 50%;
}
</style>
    <div class="text1" id="focusArea" onmouseover='display()'onmousemove="getPos(event)" onmouseout="stopTracking()"><span>This is text 1.</span></div>
    <div class="text2" id="focusArea2" onmouseover='display()'onmousemove="getPos2(event)" onmouseout="stopTracking2()"><span>This is text 2.</span></div>
    <div class="text3" id="focusArea3" onmouseover='display()'onmousemove="getPos3(event)" onmouseout="stopTracking3()"><span>This is text 3.</span></div>
    <div class="image1" id="image1"></div>
    <div class="image2" id="image2"></div>
    <div class="image3" id="image3"></div>
    <p id="displayArea"></p>
    <p id="displayArea2"></p>
    <p id="displayArea3"></p>
    <script>
        function getPos(e){
            x=e.clientX;
            y=e.clientY;
            cursor="Your Mouse Position Is : " + x + " and " + y ;
            document.getElementById("displayArea").innerHTML=cursor;            
            document.getElementById('image1').style.display='block';
            document.getElementById('image1').style.top=y-50+'px';
            document.getElementById('image1').style.left=x+100+'px';
        }
    
        function stopTracking(){
            document.getElementById("displayArea").innerHTML="";       
            document.getElementById('image1').style.display='none';
        }


        function getPos2(e){
            a=e.clientX;
            b=e.clientY;
            cursor2="Your Mouse Position Is : " + a + " and " + b ;
            document.getElementById("displayArea2").innerHTML=cursor2;            
            document.getElementById('image2').style.display='block';
            document.getElementById('image2').style.top=b-50+'px';
            document.getElementById('image2').style.left=a+100+'px';
        }
    
        function stopTracking2(){
            document.getElementById("displayArea2").innerHTML="";       
            document.getElementById('image2').style.display='none';
        }

        function getPos3(e){
            u=e.clientX;
            v=e.clientY;
            cursor3="Your Mouse Position Is : " + u + " and " + v ;
            document.getElementById("displayArea3").innerHTML=cursor3;            
            document.getElementById('image3').style.display='block';
            document.getElementById('image3').style.top=v-50+'px';
            document.getElementById('image3').style.left=u+100+'px';
        }
    
        function stopTracking3(){
            document.getElementById("displayArea3").innerHTML="";       
            document.getElementById('image3').style.display='none';
        }
    </script>
</body>
</html>
1 голос
/ 21 июня 2020

вы можете использовать z-index в элементе, который вам нужен внизу, к тексту, который нужно навести, вы можете использовать событие onmousehover с javascript, вы можете добавить класс к изображениям с aa display: none;, чтобы было скрыто, а затем удалите класс с помощью classList.remove() при наведении курсора мыши, надеюсь, это было полезно

1 голос
/ 21 июня 2020

Вы можете использовать функцию наведения курсора javascript вместо наведения, потому что будет трудно отображать изображение при наведении текста, если нет связи между текстом и изображением, тогда как в javascript вы можете изменить свойства CSS без труда. Также, чтобы изменить выравнивание изображений и текста сверху / снизу, вы можете использовать zindex в стиле DOM, который перемещает изображение сверху или снизу. Если вам нужны дополнительные разъяснения, спрашивайте в комментариях .. Спасибо

1 голос
/ 21 июня 2020

Вы можете попробовать свойство z-index в показанном элементе div.

Оно в основном создает слои на экране. Ознакомьтесь с документацией здесь https://www.w3schools.com/cssref/pr_pos_z-index.asp

Я попытался проверить элемент на веб-сайте, на который вы указали в вопросе, и у него z-index, равный 4. Каждая строка - это div элемент, который изменяет z-index в зависимости от положения наведения.

Надеюсь, это поможет вам go в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...