【发布时间】:2015-01-01 01:49:44
【问题描述】:
我正在制作一个带有两个按钮(upvote / downvote)的投票系统。我已经使用输入和标签标签来创建它,但是有一个问题:
如果我使用单选按钮,我可以投票赞成或反对,但我不能取消投票。
如果我使用复选框,我可以取消投票,但我也可以上下投票。
我想要实现的是只能投赞成票或反对票,同时还能删除投票(想想 reddit)。
我已经彻底寻找答案,我发现这不可能用 CSS 做。那里有很多脚本,问题是我对JavaScript或jQuery一无所知,所以我不知道如何实现代码。
我认为最简单的解决方案是在我单击 upvote 时取消选中 downvote 按钮,反之亦然,但同样,我不知道这段代码的外观或如何实现它。
也许有一个更简单的解决方案,使用纯 CSS 来更改另一个按钮的外观,即使它已被选中?我不知道,但如果存在这样的解决方案,我更愿意使用。
我的代码:
input[type=radio] {
display: none
}
#up {
width: 20px;
height: 16px;
background: url(http://c.thumbs.redditmedia.com/Y5Gt7Gtk59BlV-3t.png) left top;
position: absolute;
left: 50px;
top: 50px
}
#down {
width: 20px;
height: 16px;
background: url(http://c.thumbs.redditmedia.com/Y5Gt7Gtk59BlV-3t.png) left bottom;
opacity: 0.5;
position: absolute;
left: 50px;
top: 84px
}
#vote {
width: 21px;
height: 18px;
text-align: center;
font-size: 26px;
line-height: 18px;
position: absolute;
left: 50px;
top: 66px;
z-index: -1
}
#up:hover {
background-position: top;
cursor: pointer
}
#upvote:checked ~ #up {
background-position: top;
}
#upvote:checked ~ #vote {
color: #DC5B28;
z-index: 1
}
#down:hover {
background-position: bottom;
cursor: pointer;
opacity: 1
}
#downvote:checked ~ #down {
background-position: bottom;
opacity: 1
}
#downvote:checked ~ #vote {
color: #3580DD
}
#no {
position: absolute;
display: none;
background: url(http://c.thumbs.redditmedia.com/Y5Gt7Gtk59BlV-3t.png)
}
#upvote:checked ~ #no {
display: block;
background-position: left top;
left: 50px;
top: 50px
}
#downvote:checked ~ #no {
display: block;
background-position: left bottom;
left: 50px;
top: 84px;
opacity: 0.5
}
<input type="radio" name="vote" value="+1" id="upvote">
<label for="upvote" id="up"></label>
<input type="radio" name="vote" value="-1" id="downvote">
<label for="downvote" id="down"></label>
<input type="radio" name="vote" value="0" id="novote">
<label for="novote" id="no"></label>
<div id="vote">•</div>
【问题讨论】:
-
请显示您尝试过的代码或正在使用的代码。即使您不懂 Javascript,也至少向我们展示您的 HTML,以便我们了解它的外观。
-
@BlackBird 是的,我的错,应该事先包含它。
-
查看 StackOverflow 投票按钮的源代码 :)
标签: javascript html css