CSS双状态按钮

时间:2012-02-08 15:34:16

标签: css css3

我需要一个类似按钮的控件,它具有一个checked属性,因此在单击时它会保持按下状态。类似于下面示例图片中的“清除响应”按钮。

我怎样才能在CSS中执行此操作?我是CSS新手。有人可以提供一个例子或指向一个类似于这个的例子吗?

PS:我知道我需要使用Javascript来更新保存按钮状态的布尔变量,并动态地将样式应用于按钮。我的问题更像是如何创建一个包含复选框的按钮,因为我只有一张背景图片。

http://i.stack.imgur.com/vBV6F.png

4 个答案:

答案 0 :(得分:4)

对于CSS,您可以执行以下操作:

<style type='text/css'>
    /* this is the style of an unchecked "button" */
    .input-check{
        display:inline-block;
        height:20px;
        padding:5px 8px;
        background:green;
        width:70px;
        color:white
    }
    /* This is the style for a checked "button" */
    .input-check.checked{
        background:red;
        color:black;
        font-weight:bold
    }
    /* Hide the checkbox */
    .input-check input{
        display:none
    }
</style>

接下来是HTML。要减少JavaScript编码,最好在标签内嵌套一个复选框。这将使您在单击标签时自动处理复选框的选中/取消选中。

<label class="input-check"><input onchange="change_state(this)" type="checkbox" value="something" name="test"/> click me </label>

最后是JavaScript:

<script type="text/javascript">
    /* If you have more experience in JavaScript, I recommend not binding the change event this way, I didn't bother much about this part, since I guess it isn't part of the question */
    function change_state(obj){
        if (obj.checked){
            //if checkbox is being checked, add a "checked" class
            obj.parentNode.classList.add("checked");
        }
        else{
            //else remove it
            obj.parentNode.classList.remove("checked");
        }
    }
</script>

这是jsFiddle供您测试。

答案 1 :(得分:0)

如果我理解你想要什么,那就不需要CSS了

<button><input type="checkbox" /> Purge</button>

然后你可能需要javascript检查并在点击按钮时取消选中该框,但以上是基本想法。

这里有一些快速的js

<html>
<head>
<script type="text/javascript">
function check() {
    var c = document.getElementById('check') ;

    c.checked = (c.checked) ? false : true ;
}
</script>
</head>
<body>
    <button onclick="check()"><input type="checkbox" id="check" /> Purge</button>
</body>
</html>

答案 2 :(得分:0)

请参阅标题为here标题的复选框按钮部分。如果我正确地理解了您的问题,那么这似乎就是您所做的事情,也许稍作修改。

答案 3 :(得分:0)

为什么不设一个复选框来看起来像一个按钮?

然后您可以使用:checked CSS psudeo选择器按照您想要的方式设置样式,而无需通过javascript添加类。

以下是CodePen中的一个精心设计的示例:http://codepen.io/arjabbar/pen/csafj