【发布时间】:2017-02-14 12:07:41
【问题描述】:
我的标签文本颜色没有随着页面加载而改变。背景颜色随着默认活动选项卡的加载而变化,但文本保持相同颜色。
body {font-family: "Lato", sans-serif;}
ul.tab {
list-style-type: none;
margin: auto;
padding: auto;
overflow: hidden;
border: 1px solid #ccc;
color: #ffffff;
float: center;
}
/* Float the list items side by side */
ul.tab li {float: left;}
/* Style the links inside the list items */
ul.tab li a {
display: inline-block;
color: #74cfff;
text-align: center;
padding: 14px 16px;
text-decoration: none;
transition: 0.3s;
font-size: 17px;
}
/* Change background color of links on hover */
ul.tab li a:hover {
background-color: #ededed;
}
/* Create an active/current tablink class */
ul.tab li a:focus, .active {
color: #fff;
background-color: #74CFFF;
}
/* Style the tab content */
.tabcontent {
display: none;
padding: 6px 12px;
border: 1px solid #ccc;
border-top: none;
}
这是我的 java 脚本代码。
<script>
function openCity(evt, cityName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " active";
}
// Get the element with id="defaultOpen" and click on it
document.getElementById("defaultOpen").click();
</script>
这里是 HTML 代码。 Tab1 是默认选择的选项卡。所以它的颜色和文字应该改变。但没有按我的意愿工作。选定的选项卡背面颜色应为“#75cfff”,字体颜色为“#ffffff”。如果我选择其他选项卡而不是相同的第一个选项卡,则文本应更改为白色,并将颜色更改为“#75cfff”。
<ul class="tab">
<li><a href="javascript:void(0)" class="tablinks" onclick="openCity(event, 'tab1')" id="defaultOpen" >tab1 <img src="assets/images/infoico.png" width="20" height="20"></a></li>
<li><a href="javascript:void(0)" class="tablinks" onclick="openCity(event, 'tab2')">tab2 <img src="assets/images/infoico.png" width="20" height="20"></a></li>
<li><a href="javascript:void(0)" class="tablinks" onclick="openCity(event, 'tab3')">tab3 <img src="assets/images/infoico.png" width="20" height="20"></a></li>
</ul>
<div id="tab1" class="tabcontent">
<div style="border-bottom: thin solid #f1f1f1;" >
<p> tab1</p>
</div>
</div>
<div id="tab2" class="tabcontent">
<div style="border-bottom: thin solid #f1f1f1;" >
<p> tab2</p>
</div>
</div>
<div id="tab3" class="tabcontent">
<div style="border-bottom: thin solid #f1f1f1;" >
<p> tab3</p>
</div>
</div>
【问题讨论】:
-
你的代码给了我错误。
document.getElementById(cityName).style.display,但城市名称实际上没有 id tab1,tab2,tab3 -
我认为你只需要与
class=""tabcontent"进行划分并将这三个选项卡名称作为id 传递 -
我的代码里已经有了,忘记在这里发帖了。
-
我用标签内容更新我的问题。
-
这是一个简单的特异性问题。
ul.tab li a比.active具有更高的特异性 - 所以第一个颜色定义“获胜”。使您的第二个选择器至少与第一个选择器一样具体。
标签: javascript css html