我有一个用户将填写并打印的html表单 . 一旦打印出来,这些表格将被传真或邮寄给政府机构,并且需要看起来像该机构公布的原始表格,政府官员没有发现这是一个复制品 . 在表单中输入的数据不会保存在任何地方,甚至不会提交回Web服务器 . 重要的是,我们的用户可以在我们的Intranet站点上轻松找到这些表单,并使用普通键盘输入表单进行打印 .
在屏幕上,我想按原样保留单选按钮,以强制执行和传达单选按钮的使用(仅选择一个选项) . 但是,当它打印出来时,我需要使用方形复选框样式而不是圆形单选按钮样式进行打印 . 我知道如何使用媒体选择器来设置仅用于打印的样式,所以这不是问题 . 只是我不知道我是否可以像我想要的那样设置单选按钮的样式 .
如果我无法完成这项工作,我将不得不创建一个复选框来遮蔽每个单选按钮,使用javascript来保持复选框和单选按钮同步,并使用css显示我在适当介质中关注的那个 . 显然,如果我可以设计它们,它将节省大量的工作 .
8 回答
这个问题发布三年后,几乎可以实现 . 实际上,使用CSS3
appearance
属性在Firefox 1,Chrome 1,Safari 3和Opera 15中完全可以实现 .结果是看起来像复选框的无线电元素:
jsfiddle:http://jsfiddle.net/mq8Zq/
Note: 由于缺乏供应商的支持和一致性,这最终从CSS3规范中删除 . 除非你只需要支持基于Webkit或Gecko的浏览器,否则我建议不要实现它 .
在CSS3中:
事实上:
并且你需要Javascript来保持
<img>
和无线电同步(理想情况下,首先将它们插入那里) .我使用了
<img>
,因为浏览器通常配置为不打印background-image
. 使用图像比使用其他控件更好,因为图像是非交互式的,不太可能导致问题 .这是我的解决方案,只使用CSS(Jsfiddle:http://jsfiddle.net/xykPT/) .
我调整了user2314737的答案,使用font awesome作为图标 . 对于那些不熟悉fa的人来说,与img相比,一个显着的好处是字体固有的基于矢量的渲染 . 即在任何缩放级别都没有图像锯齿 .
jsFiddle
结果
appearance 属性不适用于所有浏览器 . 你可以这样做 -
它适用于IE 8和其他浏览器
我不认为你可以使控件看起来像CSS控件之外的任何东西 .
你最好打一个PRINT按钮进入一个新的页面,用一个图形代替所选的单选按钮,然后从那里做一个window.print() .
是的,CSS可以这样做:
使用表而没有Javascript的非常简单的想法 . 我太简单了吗?