我有一张图片,当点击图片时,我想在其下面显示另一张图片。我正在寻找一个简单的CSS解决方案。
这可能吗?
答案 0 :(得分:16)
复选框输入是用于实现切换功能的本机元素,我们可以将其用于我们的利益。
利用:checked
伪类 - 将其附加到复选框的伪元素(因为您无法真正影响input
本身的背景),并相应地更改其背景。
input[type="checkbox"]:before {
content: url('images/icon.png');
display: block;
width: 100px;
height: 100px;
}
input[type="checkbox"]:checked:before {
content: url('images/another-icon.png');
}
这是一个full working demo on jsFiddle来说明这种方法。
这有点麻烦,我们可以做一些修改来清理不必要的东西;因为我们并没有真正应用背景图像,而是设置元素的content
,我们可以省略伪元素并将其直接设置在复选框上。
不可否认,它们在这里没有任何实际意义,只是掩盖了复选框的原生渲染。我们可以简单地删除它们,但这会在最佳情况下导致FOUC,或者如果我们无法获取图像,它将只显示一个巨大的复选框。
输入appearance
属性:
使用
(-moz-)appearance
CSS属性...来显示元素 使用基于操作系统主题的平台本机样式。
我们可以通过分配appearance: none
并完全绕过该故障来覆盖平台本机样式(我们必须考虑供应商前缀,当然,并且不支持前缀表单,目前)。然后简化选择器,代码更加健壮。
input[type="checkbox"] {
content: url('images/black.cat');
display: block;
width: 200px;
height: 200px;
-webkit-appearance: none;
}
input[type="checkbox"]:checked {
content: url('images/white.cat');
}
再次,live demo of the refactored version is on jsFiddle。
注意:这只适用于webkit现在,我正在尝试为gecko引擎修复它。我会在发布更新后的版本。
答案 1 :(得分:10)
您可以使用不同风格的<a>
代码:
a:link { }
a:visited { }
a:hover { }
a:active { }
我建议将其与CSS sprites结合使用:https://css-tricks.com/css-sprites/
答案 2 :(得分:4)
试试这个(但一旦点击,它就不可逆):
HTML:
<a id="test"><img src="normal-image.png"/></a>
CSS:
a#test {
border: 0;
}
a#test:visited img, a#test:active img {
background-image: url(clicked-image.png);
}
答案 3 :(得分:4)
有些人建议“访问过”,但访问过的链接仍保留在浏览器缓存中,因此下次用户访问该页面时,该链接将显示第二张图片..我不知道这是您想要的效果吗想。无论如何,你可以混合使用JS和CSS:
<style>
.off{
color:red;
}
.on{
color:green;
}
</style>
<a href="" class="off" onclick="this.className='on';return false;">Foo</a>
使用onclick事件,您可以更改(或切换可能?)元素的类名。在此示例中,我更改了文本颜色,但您也可以更改背景图像。
祝你好运
答案 4 :(得分:4)
这引入了HTML / CSS的新范例,但使用<input readonly="true">
可以添加input:focus
选择器,然后更改background-image
这当然需要将特定的CSS应用于input
本身以覆盖浏览器默认值,但它确实表明可以在不使用Javascript的情况下触发点击操作。
答案 5 :(得分:2)
您可以为不同的图片example
使用链接的不同状态你也可以使用相同的图像(css sprite),它结合了所有不同的状态,然后只使用填充和位置来显示你想要显示的那个。
另一种选择是使用javascript替换图像,这将为您提供更大的灵活性
答案 6 :(得分:1)
不,您需要使用脚本来在click
上放置Event
Element
处理程序,以执行您想要的操作。