如何使用 javascript 制作悬停样式?

Posted

技术标签:

【中文标题】如何使用 javascript 制作悬停样式?【英文标题】:How to make hover styling with javascript? 【发布时间】:2022-01-19 06:04:27 【问题描述】:

我的网站 css 有 div1、img、ul 和 ul li 部分。我已经设置好了,这样你就可以看到国家列表,当你点击它时,它会显示子区域和标志图像。我想只在这个国家上空悬停,但它会覆盖所有三个。我现在在 ul li 上使用悬停,但我需要参考国家列表 api,就像我对其他两个一样。如何在 javascript 中创建该引用?Here's the jsfiddle

var xhttp = new XMLHttpRequest();
var respJSON = [];
    xhttp.onreadystatechange = function () 
        if(this.readyState == 4 && this.status == 200) 
            resp = this.responseText;
            respJSON = JSON.parse(resp);

            html = document.getElementById("list");
            html.innerHTML = "";

            for(var i=0; i< respJSON.length; i++)
                html.innerHTML += "<li id="+i+" onClick='clickMe("+i+")'><u>" + respJSON[i].name + "</u></li>"

            
        
    
    xhttp.open("GET", "https://restcountries.com/v2/all", true);
    xhttp.send();
   
function clickMe(index) 
  document.querySelectorAll('#list img').forEach(
    function(item) 
      item.remove();
  );
     document.querySelectorAll('#list div1').forEach(
    function(item) 
      item.remove();
  );
        li = document.getElementById(index);
        img = document.createElement("img")
        img.src = respJSON[index].flag;
        li.append(img);        
        let div = document.createElement("div1");
        div.innerText = respJSON[index].subregion;
        li.append(div);
 

【问题讨论】:

你能把它设置成 jsfiddle 吗?所以它可以更好地回答。 我不确定如何添加 jsfiddle? 这里。 jsfiddle.net您可以添加html、css、js然后点击保存生成一个链接,然后将链接附加到您的问题。 好的,我想我明白了 ...我想只在国家上空悬停,“但它会覆盖所有三个”你在这里说的是哪三个。 【参考方案1】:

如果你想对 btn 应用悬停效果,只需复制 btn 的类/id

并为您的参考编码 sn-p

#hover:hover
background : purple;

#hover
background : black;
color : white

&lt;button id="hover"&gt; HOVER ME &lt;/button&gt;

告诉我好不好

【讨论】:

它可能会起作用,但它不是一个按钮,它是一个你可以点击的列表 哦,对 ul li 也一样【参考方案2】:

列表:

#hover-eff li 
color : green;

#hover-eff li:hover 
color : purple;
<ul id="hover-eff">
<li> List - 1 </li>
<li> List - 2 </li>
<li> List - 3 </li>
<li> List - 4 </li>
<li> List - 5 </li>
</ul>

所以它是一个代码 sn-p 列表

【讨论】:

它添加了悬停,但仍然导致标志和子区域也发生变化【参考方案3】:

之所以会这样,是因为国旗图像也是您在 css 中引用的 li 标记中的子图像。

所以你可以做的是在li 中的u 标签中添加一个类,例如'country-name'。见下文:

// ...
for(var i=0; i< respJSON.length; i++)
    html.innerHTML += "<li id="+i+" onClick='clickMe("+i+")'><u class='country-name'>" + respJSON[i].name + "</u></li>"

// ...

然后在css中,将ul li:改为.country-name,见下

.country-name:hoverfont-size: 3em

在这里测试:jsfiddle

【讨论】:

以上是关于如何使用 javascript 制作悬停样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用道具制作条件并反应动态主题?

如何向 QPushButton 添加悬停过渡?

如何通过将鼠标悬停在Javascript中的三个按钮之一来显示和更新隐藏的div元素?

悬停时的Javascript动画[关闭]

使用独生子女时如何避免悬停样式

HTML+CSS制作鼠标悬停效果