2008-10-02 6 views
2

Я использую @media print в моем внешнем файле css, чтобы скрыть меню и т. Д. Однако при печати маленький треугольник выпадающего списка все еще отображается. Есть ли опция css, чтобы скрыть ее и распечатать только выделенный элемент?Скрыть треугольник выпадающего списка при использовании css со средой печати

+0

Я не уверен, что если вы будете уведомлены правок, и я не сделал хотел написать еще один ответ, поэтому на всякий случай скажу вам, что я даю своеобразное решение ... – PhiLho 2008-10-02 09:46:46

ответ

1

Нет, нет. Кроме того, каждый браузер отображает свои выпадающие списки по-своему, некоторые используют системные виджеты, некоторые из них имеют свои собственные. Например, в Safari, независимо от того, какой стиль вы удаляете, у него все еще есть коробка (ну, вроде) вокруг всего этого. Если вы не хотите менять свой HTML-код, возможно, это может сделать немного javascript - получите выбранное значение и обменивайтесь выпадающим списком для абзаца.

1

Я бы предположительно сказал, что вы не можете, потому что это монолитный компонент: вы не можете изменить его так же, как вы не можете изменить внешний вид полос прокрутки, например.

Я не выбрал свой пример наугад: конечно, в некоторых браузерах (по крайней мере, IE) вы можете изменить последнее. Но с использованием некоторых CSS-браузеров, которые не очень практичны, если вы не нацеливаете приложение для скрытых интрасети ...

Слишком плохо, это действительно хорошая идея скрыть эту часть.

[Обновить] Возможно, существует способ, хотя семантически-мудрый он немного уродлив ... Как бы то ни было.

<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;">&Nbsp;</div> 

Конечно, div должен быть скрыт на экранных носителях и получить вышеуказанный стиль в печатных носителях.
Работает прилично в FF3, Opera 9.5 и даже IE7 (не IE6) на WinXP. Увы, я боюсь, что вышеупомянутый хак системный и может быть сломан в других браузерах.

PS .: Я написал NBSP, потому что подсветка синтаксиса скрывает это иначе ... :-P

1

Поскольку большинство людей говорили, стиль рендеринга виджетов форм остается в значительной степени до браузера. Вы можете немного стилизовать их, но фундаментальные изменения в них в лучшем случае ненадежны.

Как уже упоминалось выше, вам лучше всего использовать немного 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 добавит пункт, содержащее содержимое выбранного элемента из выпадающего списка, и скрыть элемент формы перед печатью страницы.

$(document).ready(function() { 
     $('a.print').click(function() { 
      var selected = $('#mySelect option:selected').text(); 
      $('#mySelect').after('<p class="replacement">' + selected + '</p>'); 
      $('#mySelect').hide(); 
      window.print(); 
     }); 
    }); 
7

Это работает в Chrome и Firefox (другие могут работать также)

-moz-appearance: none; 
-webkit-appearance: none; 
appearance: none; 
+0

работает в Chrome и firefox. но не в IE 10 – RezaSh 2013-09-26 17:22:55

 Смежные вопросы

  • Нет связанных вопросов^_^