当前位置:  开发笔记 > 编程语言 > 正文

你可以设置一个html单选按钮看起来像一个复选框吗?

如何解决《你可以设置一个html单选按钮看起来像一个复选框吗?》经验,为你挑选了4个好方法。

我有一个用户将填写并打印的html表单.一旦打印出来,这些表格将被传真或邮寄给政府机构,并且需要看起来像该机构公布的原始表格,政府官员没有发现这是一个复制品.在表单中输入的数据不会保存在任何地方,甚至不会提交回Web服务器.重要的是,我们的用户可以在我们的Intranet站点上轻松找到这些表单,并使用普通键盘输入表单进行打印.

在屏幕上,我想按原样保留单选按钮,以强制执行和传达单选按钮的使用(仅选择一个选项).但是,当它打印出来时,我需要使用方形复选框样式而不是圆形单选按钮样式进行打印.我知道如何使用媒体选择器来设置仅用于打印的样式,所以这不是问题.只是我不知道我是否可以像我想要的那样设置单选按钮的样式.

如果我不能得到这个工作,我会要创建一个复选框影子每个单选按钮,使用JavaScript来保持复选框和单选按钮同步和CSS来显示一个我关心在适当的介质.显然,如果我可以设计它们,它将节省大量的工作.



1> Andy E..:

这个问题发布三年后,几乎可以实现.事实上,它完全可以在Firefox 1 +,Chrome 1 +,Safari 3+和Opera 15+中使用CSS3 appearance 属性.

结果是看起来像复选框的无线电元素:

input[type="radio"] {
  -webkit-appearance: checkbox; /* Chrome, Safari, Opera */
  -moz-appearance: checkbox;    /* Firefox */
  -ms-appearance: checkbox;     /* not currently supported */
}



2> Kornel..:

在CSS3中:

input[type=radio] {content:url(mycheckbox.png)}
input[type=radio]:checked {content:url(mycheckbox-checked.png)}

事实上:



@media screen {.fakecheckbox img {display:none}}
@media print {.fakecheckbox input {display:none;}}

并且你需要Javascript来保持和无线电同步(并且理想情况下首先将它们插入那里).

我用过,因为浏览器通常配置为不打印background-image.使用图像比使用其他控件更好,因为图像是非交互式的,不太可能导致问题.



3> user2314737..:

这是我使用CSS的解决方案(Jsfiddle:http://jsfiddle.net/xykPT/).

在此输入图像描述

div.options > label > input {
	visibility: hidden;
}

div.options > label {
	display: block;
	margin: 0 0 0 -10px;
	padding: 0 0 20px 0;  
	height: 20px;
	width: 150px;
}

div.options > label > img {
	display: inline-block;
	padding: 0px;
	height:30px;
	width:30px;
	background: none;
}

div.options > label > input:checked +img {  
	background: url(http://cdn1.iconfinder.com/data/icons/onebit/PNG/onebit_34.png);
	background-repeat: no-repeat;
	background-position:center center;
	background-size:30px 30px;
}


4> Beej..:

我调整了user2314737的答案,为图标使用字体真棒.对于那些不熟悉fa的人来说,与img相比,一个显着的好处是字体固有的基于矢量的渲染.即在任何缩放级别都没有图像锯齿.

的jsfiddle

结果

在此输入图像描述

div.checkRadioContainer > label > input {
	visibility: hidden;
}

div.checkRadioContainer {
	max-width: 10em;
}
div.checkRadioContainer > label {
	display: block;
	border: 2px solid grey;
	margin-bottom: -2px;
	cursor: pointer;
}

div.checkRadioContainer > label:hover {
	background-color: AliceBlue;
}

div.checkRadioContainer > label > span {
	display: inline-block;
	vertical-align: top;
	line-height: 2em;
}

div.checkRadioContainer > label > input + i {
	visibility: hidden;
	color: green;
	margin-left: -0.5em;
	margin-right: 0.2em;
}

div.checkRadioContainer > label > input:checked + i {
	visibility: visible;
}
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有