在媒体打印中使用CSS时隐藏下拉列表的三角形
我在外部CSS文件中使用@media print隐藏菜单等。但是,在打印下拉列表的小三角形时仍然显示。是否有css设置可用于隐藏它并仅打印所选项目?
解决方案
不,没有。此外,每个浏览器都以自己的方式显示其下拉菜单,有些使用系统小部件,有些使用自己的小部件。例如,在Safari中,无论我们删除哪种样式,它的整个框周围仍然有一个框(很好)。
如果我们不想更改HTML代码,则可能需要一些javascript才能完成操作,以获取选定的值并将下拉列表交换为一个段落。
我暂时说不能,因为它是一个整体组件:例如,我们不能以无法更改滚动条外观的相同方式对其进行更改。
我并不是随机选择示例:当然,在某些浏览器(至少是IE)中,我们可以更改后者。但是使用一些特定于浏览器的CSS并不是很实用,除非我们针对的是受约束的Intranet应用程序...
太可惜了,隐藏这部分确实是个好主意。
[更新]可能有一种方法,尽管从语义上来说这有点丑陋……随便。
<select name="Snakes" style="width: 200px;"> <option value="A">Anaconda</option> <option value="B">Boa</option> <option value="C">Cobra</option> <option selected="" value="P">Python</option> <option value="V">Viper</option> </select> <!-- Put this style in a class, of course --> <div style="background-color: white; min-width: 20px; max-width: 20px; position: relative; right: -180px; top: -19px;"> </div>
当然,div必须隐藏在屏幕媒体中,并在印刷媒体中具有上述样式。
在WinXP上的FF3,Opera 9.5甚至IE7(不是IE6)中都能正常工作。 las,我担心上述黑客行为与系统有关,并且可能在其他浏览器中被破坏。
PS .:我写了Nbsp,因为语法高亮将其隐藏起来... :-P
就像大多数人所说的那样,表单小部件的呈现样式几乎完全由浏览器决定。我们可以对它们进行样式设置,但是对它们的根本更改充其量是不可靠的。
正如另一位评论者所提到的,我们最好使用一些JavaScript来达到这种效果。我给出了一些jQuery可以做到这一点。尽管它依赖于用户单击"打印此页"链接,而不使用浏览器自己的"打印"功能,但这并不理想。
对于以下标记:
<p><a class="print" href="#">print this</a></p> <form action="/my/action/" method="POST"> <select id="mySelect"> <option value="1">An Option</option> <option value="2" selected="selected">Another Option</option> </select> </form>
该jQuery将添加一个段落,其中包含从下拉列表中当前所选项目的内容,并在打印页面之前隐藏form元素。
$(document).ready(function() { $('a.print').click(function() { var selected = $('#mySelect option:selected').text(); $('#mySelect').after('<p class="replacement">' + selected + '</p>'); $('#mySelect').hide(); window.print(); }); });
这在IE6中对我有用。我没有尝试其他浏览器
http://weblogs.asp.net/bleroy/archive/2005/08/09/how-to-put-a-div-over-a-select-in-ie.aspx