在媒体打印中使用CSS时隐藏下拉列表的三角形

时间:2020-03-06 15:00:56  来源:igfitidea点击:

我在外部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