在媒体打印中使用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

