我有一个图像列表以及一个关键字,它表示用户可以单击的选择列表,以基于选择限制其他列表的选择。当用户从其他列表中进行选择时,图像会继续通过CSS阴影突出显示。但是,由于其他一些交互作用,我想稍后停用该突出显示的图像,即取消选择该图像的阴影。
那将如何工作?尚未找到合适,简单的解决方案。例如,一些“ document.getElementById('li1')。Selected = false”,这意味着我需要为每个元素添加一个ID。
.explore {
margin-left: auto;
margin-right: auto;
width: 1020px;
margin-top: 20px;
}
.explore_body {
width: 100%;
/* border: 1px solid #f00; */
padding-bottom: 5px;
padding-top: 5px;
clear: both;
background: #f0f0f0;
*background: #f0f0f0; /* star hack to target IE6 & 7*/
}
.explore_body ul {
margin: 5px;
padding-top: 5px;
clear: both;
width: 100%;
}
.explore_body ul li {
display: inline-block; /*IE7 doesn't support inline-block */
zoom: 1;
*display: inline; /* star hack to target IE6 & 7*/
/* background: url(images/album.png); */
width: 130px;
height: 145px;
margin: 5px 5px;
}
.explore_body ul li img {
width: 120px;
height: 100px;
margin: 5px 0px 5px 5px;
}
.explore_body ul li {
opacity: 0.9;
filter:alpha(opacity=90); /* For IE8 and earlier */
}
.explore_body ul li:hover {
opacity: 1;
filter:alpha(opacity=100); /* For IE8 and earlier */
-webkit-box-shadow: 3px 3px 3px 3px #666;
}
.explore_body ul li:selected {
opacity: 1;
filter:alpha(opacity=100); /* For IE8 and earlier */
-webkit-box-shadow: 3px 3px 3px 3px #666;
}
.active {
opacity: 1;
filter:alpha(opacity=100); /* For IE8 and earlier */
-webkit-box-shadow: 3px 3px 3px 3px #666;
}
.active2 {
background-color: #cedff8;
}
<div class="explore" id="explore">
<div class="explore_body">
<h4 style="text-align: center; margin-bottom: -10px; ">explore by theme:</h4>
<ul id="nav">
<li><a href="#!" onclick="xxx"><img src="images/air_pollution.png" /></a><a href="#!" class="album_title">Air pollution and air quality</a></li>
<li><a href="#!" onclick="xxx"><img src="images/biodiversity.png"/></a><a href="#!" class="album_title">Biodiversity</a></li>
<li><a href="#!" onclick="xxx"><img src="images/chemicals_and_wastes.png"/></a><a href="#!" class="album_title">Chemicals and waste</a></li>
</ul>
</div>
</div>
感谢任何提示!
答案 0 :(得分:0)
您需要创建定义所选项目样式的类,将其命名为.active
。例如,如果您想仅将阴影添加到所选项目,则应在.active
中对其进行定义。然后在js点击事件中,首先从所有项目中删除该类,然后仅将其添加到选定的项目中。
每次选择项目时,您都会从上一个项目中删除.active
并将其仅添加到新选择的项目中。
答案 1 :(得分:0)
从代码中删除onclick =“ xxx”,然后在每个“ li”上添加onclick =“ selectMe(this)”,如下所示:
<div class="explore" id="explore">
<div class="explore_body">
<h4 style="text-align: center; margin-bottom: -10px; ">explore by theme:</h4>
<ul id="nav">
<li onclick="selectMe(this)"><a href="#!"><img src="images/air_pollution.png" /></a><a href="#!" class="album_title">Air pollution and air quality</a></li>
<li onclick="selectMe(this)"><a href="#!"><img src="images/biodiversity.png"/></a><a href="#!" class="album_title">Biodiversity</a></li>
<li onclick="selectMe(this)"><a href="#!"><img src="images/chemicals_and_wastes.png"/></a><a href="#!" class="album_title">Chemicals and waste</a></li>
</ul>
</div>
</div>
然后在您的JavaScript中添加selectMe()方法,该方法首先取消选择ID为“ nav”的UL中的所有“ LI”元素,然后选择一个被单击的LI:
function selectMe(el) {
var lis = document.getElementById("nav").getElementsByTagName("li");
for (i = 0; i < lis.length; i++) {
lis[i].classList.remove('active')
}
el.classList.add('active');
}