【问题标题】:CSS dont print unchecked/selected radio buttons or checkboxesCSS 不打印未选中/选中的单选按钮或复选框
【发布时间】:2011-09-16 11:37:22
【问题描述】:

我有一个表单,我想要一个单独的 CSS 文件进行打印。屏幕上还有其他单选按钮和复选框。但我希望在打印时隐藏那些未选中的单选按钮和复选框。

有没有办法使用 jQuery 在这些标签和相应的复选框上设置类,以便 @media 打印隐藏它们?

【问题讨论】:

    标签: jquery css radio-button checkbox


    【解决方案1】:

    @media print { ... } 块中,您可以隐藏所有复选框,然后只显示选中的复选框。

    要定位这些选中的复选框,请使用输入的checked 属性。

    @media print {
        input[type="checkbox"] {
            display: none;
        }
    
        input[type="checkbox"][checked="checked"] {
            display: inline-block;
        }
    }
    

    看到这个小提琴http://jsfiddle.net/XfpM6/它只显示了两个选中的复选框。

    编辑:

    要隐藏标签,您可以使用+ 选择器,它以直接兄弟为目标。 应该是:

    input[type="checkbox"] + label {
        display: none;
    }
    
    input[type="checkbox"][checked="checked"] + label {
        display: inline;
    }
    

    (假设你有<input type="checkbox" .. /> <label for="..">Label</label>这种方式的HTML,否则你必须为每个label添加一个类才能隐藏)。

    关于media print,你是否在screen css 之后添加了那个css?

    另一种解决方案可能是摆脱 @media print 块,并包含 css

    <link rel="stylesheet" href="..." media="print" />
    

    在您的 css 链接的末尾(因此它会覆盖其他规则)。

    这也是一样的,关键是你在screen css之后包含这个css

    【讨论】:

    • 值得一提的是,IE6不支持这个。
    • 我有很多代码不能在 IE6 上运行,所以如果用户使用的是旧版浏览器,我会弹出一个警告框。
    • 不起作用。另外我也想隐藏相应的标签。这是页面。 link
    【解决方案2】:

    您可以使用 CSS 执行此操作,只需检查 checked 属性是否存在

    @media print{
      input[type="checkbox"]
      {
        visibility: hidden;
      }
    
    
      input[type="checkbox"][checked]
      {
        visibility: visible;
      }
    }
    

    小提琴:http://jsfiddle.net/L3Bwp/1/

    【讨论】:

    • 两个答案都表明这在普通 CSS 中有效,但不能证明它在 @media print 中有效。有关示例页面的链接,请参见我上面的回复。
    • 证明它有效的唯一方法是在浏览器中进行打印预览。
    • 我做到了,他们都消失了。检查的不回来。我在 Firefox 4 中测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2016-03-03
    相关资源
    最近更新 更多