我有一个图像元素,我想在点击时改变它。

<img id="btnLeft">

如此:

#btnLeft:hover {
    width: 70px;
    height: 74px;
}

但我需要的是:

#btnLeft:onclick {
    width: 70px;
    height: 74px;
}

但是,很明显,这是行不通的。是否有可能在CSS中有onclick行为(即,不使用JavaScript)?


当前回答

您可以使用伪类:target来模拟打开单击事件。让我给你们举个例子。

#{东西 显示:没有; } {#的东西:目标 显示:块; } < a href = " #“>显示< / > < div id = "东西" >宾果!< / div >

这是它的样子:http://jsfiddle.net/TYhnb/

需要注意的一点是,这仅限于超链接,因此如果您需要在其他超链接上使用,例如按钮,您可能需要稍微修改一下,例如将超链接样式化,使其看起来像按钮。

其他回答

您可以使用伪类:target来模拟打开单击事件。让我给你们举个例子。

#{东西 显示:没有; } {#的东西:目标 显示:块; } < a href = " #“>显示< / > < div id = "东西" >宾果!< / div >

这是它的样子:http://jsfiddle.net/TYhnb/

需要注意的一点是,这仅限于超链接,因此如果您需要在其他超链接上使用,例如按钮,您可能需要稍微修改一下,例如将超链接样式化,使其看起来像按钮。

我有以下代码的鼠标悬停和鼠标点击,它的工作:

//For Mouse Hover
.thumbnail:hover span{ /* CSS for enlarged image */
    visibility: visible;
    text-align: center;
    vertical-align: middle;
    height: 70%;
    width: 80%;
    top: auto;
    left: 10%;
}

当你点击图像时,这段代码会隐藏图像:

.thumbnail:active span {
    visibility: hidden;
}

下面是一个类似于JavaScript的onclick的onclick,而不是:active伪类。

这只能通过JavaScript或复选框Hack来实现。

复选框黑客本质上是让你点击一个标签,“检查”一个复选框,允许你按照自己的意愿设置标签的样式。

这个演示。

在OP澄清他想要什么之前回答了。

TylerH做了一个非常好的回答,我只需要给最后一个按钮一个视觉更新。

.btn { border - radius: 5 px; 填充:10px 30px; Box-shadow: 1px 1px #000; Background-image: linear-gradient(to bottom, #eee, #ddd); } .btn:{徘徊 Background-image: linear-gradient(to top, #adf, #8bf); } {.btn:活跃 Margin: 1px 1px 0; Box-shadow: -1px -1px #000; } # btnControl { 显示:块; 可见性:隐藏; } <input type="checkbox" id="btnControl"/> <label class="btn" for="btnControl">点击我!< / >标签

首先我将使用焦点

这样做的原因是它很适合我所展示的例子。如果有人想要鼠标按下类型事件,那么使用active。

HTML代码:

<button class="mdT mdI1" ></button>
<button class="mdT mdI2" ></button>
<button class="mdT mdI3" ></button>
<button class="mdT mdI4" ></button>

CSS代码

/* Change *button size, border, bg color, and align to middle* */
    .mdT {
        width: 96px;
        height: 96px;
        border: 0px;
        outline: 0;
        vertical-align: middle;
        background-color: #AAAAAA;
    }
    .mdT:focus {
        width: 256px;
        height: 256px;
    }

/* Change Images Depending On Focus */
    .mdI1       { background-image: url('http://placehold.it/96x96/AAAAAA&text=img1');     }
    .mdI1:focus { background-image: url('http://placehold.it/256x256/555555&text=Image+1');   }
    .mdI2       { background-image: url('http://placehold.it/96x96/AAAAAA&text=img2');     }
    .mdI2:focus { background-image: url('http://placehold.it/256x256/555555&text=Image+2');   }
    .mdI3       { background-image: url('http://placehold.it/96x96/AAAAAA&text=img3');     }
    .mdI3:focus { background-image: url('http://placehold.it/256x256/555555&text=Image+3');   }
    .mdI4       { background-image: url('http://placehold.it/96x96/AAAAAA&text=img4');     }
    .mdI4:focus { background-image: url('http://placehold.it/256x256/555555&text=Image+4');   }

jsfiddle.net/00wwkjux/

OP只希望在单击事件期间效果持续。虽然这并不完全满足这种需求,但已经很接近了。active会在鼠标放下时进行动画,任何需要持续更长时间的更改都需要使用JavaScript来完成。