Web sayfasını yazdırırken bir öğeyi nasıl gizlerim?


440

Web sayfasını yazdırmak için web sayfamda bir link var. Ancak bağlantı, çıktının kendisinde de görülebilir.

Yazdır bağlantısını tıkladığımda bağlantı düğmesini gizleyecek javascript veya HTML kodu var mı?

Misal:

 "Good Evening"
 Print (click Here To Print)

"İyi akşamlar" metnini yazdırdığında bu "Yazdır" etiketini gizlemek istiyorum. "Yazdır" etiketi çıktıda görünmemelidir.

Yanıtlar:


743

Stil sayfanıza şunları ekleyin:

@media print
{    
    .no-print, .no-print *
    {
        display: none !important;
    }
}

Ardından class='no-print', basılı sürümde görünmesini istemediğiniz, örneğin düğmeniz gibi HTML'nize yazdırılamayan sınıfı ekleyin (veya mevcut bir sınıf ifadesine ekleyin).


17
Bu cevap tam değil. İki medya bölümünüz olmalıdır. @mediabaskı ve @mediaekran. Yazdır bölümünde, yazdırma için stillerinizi yerleştirirsiniz. Ekran ekranı bölümünde, ekran baskısı için stillerinizi yerleştirirsiniz. Farklı çözünürlükler için birden fazla ekran bölümünüz bile olabilir. Temel olarak sadece bu cevapta verilenleri eklerseniz, işe yaramaz. İnanın denedim. Peki bu nasıl 69 oy aldı?
Codeguy007

6
aslında, sadece verilen kodu kullanırsanız çalışır. Ben sadece firefox'ta denedim. en azından modern tarayıcılarda bu çözüm.
luschn

8
İçinde birkaç alt eleman bulunan bir <div> saklamaya çalıştım. Sorun, bazı öğelerin baskıda hala görünür olmasıydı. Çözüm bu css kullanmak oldu:@media print { .no-print, .no-print * { display: none !important; } }
Philipp

6
Bu, belirtilen ortama bağlı olarak işe yarayabilir veya çalışmayabilir. Örneğin, hem ekran hem de yazdırma stillerini bir stil sayfasında birleştirmek için, bu stil sayfasındaki ortam sorgularını kullanın, bu cevabın önerdiği gibi, hem "ekran" hem de "yazdırma" ortam türlerini belirtmeniz gerekir:<link rel="stylesheet" href="all.css" media="screen, print" type="text/css">
Clint Pachl

5
@ Codeguy007: Ne demek istediğini anlamıyorum. Yalnızca @media screenekran stillerini tanımlamak istiyorsanız gerekir , ancak burada durum böyle değildir: Varsayılan olarak tüm öğeler görüntülenir ve öğeyi gizleyen yalnızca yazdırılabilir bir stil tanımlayarak, ekranda hala görünmesini sağlamak için mükemmeldir .
chiccodoro

173

Bootstrap 3 bunun için kendi sınıfına sahiptir :

hidden-print

Şöyle tanımlanır:

@media print {
  .hidden-print {
    display: none !important;
  }
}

Kendi başınıza tanımlamanız gerekmez.


In Bootstrap 4 Buna değişti:

.d-print-none

Büyük Bootstrap 4 çözümü. Tıkır tıkır çalışıyor.
Diego Victor de Jesus

Şimdiye kadar bootstrap çözümünü nasıl özlediğime inanamıyorum .. Teşekkürler!
ReturnTable

! importantbeni kurtardı.
Evan Hu

168

En iyi uygulama, özellikle yazdırma için bir stil sayfası kullanmak ve medianiteliğini olarak ayarlamaktır print.

İçinde, kağıda yazdırılmasını istediğiniz öğeleri gösterin / gizleyin.

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

9
Burada ayrıca diğer sarıcı içeriğini görüntülememek, yazı tipi ailesini daha iyi bir değere değiştirmek, sayfanın tam olarak kullanılmasına izin vermek için genişlikleri kaldırmak için css'niz olmalıdır. Ana stil sayfanızı media = "screen" olarak ayarlarsanız, yazdırma stil sayfanıza yeni bir playgound gibi davranabilirsiniz.
Steve Perks

2
Kesinlikle. Ve bu yaklaşımla, "Yazdırılabilir sürüm için buraya tıklayın" seçeneğini kaldırabilir veya "Bu sayfa yazıcı dostu" veya benzerlerini ekleyebilirsiniz. Steve Perks'in dediği gibi navigasyon, reklamlar ve benzeri tüm gereksiz içeriği kaldırmak iyi bir uygulamadır. Sayfanın yalnızca birincil içeriğini ekleyin.
Arve Systad

39

İşte bu CSS koymak basit bir çözüm

@media print{
   .noprint{
       display:none;
   }
}

ve işte HTML

<div class="noprint">
    element that need to be hidden when printing
</div>
<div class="noprint">
    element that need to be hidden when printing
</div>

3
Sınıf, burada bir id'den daha iyi bir seçim olacaktır, çünkü bir id kullanırsanız, bu kuralı her sayfada yalnızca bir şeye uygulayabilirsiniz. Bir sınıf, gerektiğinde uygulamanızı sağlar.
Nick F

12

CSS DOSYASI

@media print
{
    #pager,
    form,
    .no-print
    {
        display: none !important;
        height: 0;
    }


    .no-print, .no-print *{
        display: none !important;
        height: 0;
    }
}

HTML BAŞLIĞI

<link href="/theme/css/ui/ui.print.css?version=x.x.x" media="print" rel="stylesheet" type="text/css" >

ELEMAN

<div class="no-print"></div>

10

Bağlantıyı bir div içine yerleştirebilir, ardından tıklandığında div'i gizlemek için bağlantı etiketinde JavaScript kullanabilirsiniz. Örnek (test edilmedi, ince ayar yapılması gerekebilir, ancak fikri anlarsınız):

<div id="printOption">
    <a href="javascript:void();" 
       onclick="document.getElementById('printOption').style.visibility = 'hidden'; 
       document.print(); 
       return true;">
       Print
    </a>
</div>

Dezavantajı, bir kez tıklandığında, düğmenin kaybolması ve sayfadaki bu seçeneği kaybetmesidir (her zaman Ctrl + P vardır).

Daha iyi bir çözüm, bir yazdırma stil sayfası oluşturmak ve bu stil sayfası içinde printOptionkimliğin gizli durumunu (veya ne adlandırırsanız) belirtmektir. Bunu HTML'nin kafa bölümünde yapabilir ve medya özelliğine sahip ikinci bir stil sayfası belirtebilirsiniz.


6

Yapılacak en iyi şey sayfanın "salt baskı" sürümünü oluşturmaktır.

Oh, bekle ... artık 1999 değil. "Display: none" ile bir baskı CSS kullanın.


1
yazdırılabilir sürümlerde hala bir miktar değer var, çünkü kullanıcıya yazdırdıklarında CSS teknikleri ile istismar edilebileceklerini açıkça gösteriyor
annakata

1
buna ek olarak, basılı bir sürümde bağlantı referansları, altbilgiler, vb. gibi ek içerikler de ekleyebilirsiniz.
Steve Perks

8
@annakata: Kullanıcı, tarayıcılarında "Baskı Önizleme" özelliğini kullanarak bunu zaten alabilir. Bir bonus olarak, aslında bunun için.
özyinelemeli


3

Diodus'un kabul ettiği cevap, hepimiz olmasa da bazıları için çalışmıyor. Yine de bu düğmeyi kağıda gitmekten gizleyemedim.

Clint Pachl tarafından css dosyasını çağırarak küçük ayarlama

      media="screen, print" 

ve sadece

      media="screen"

bu sorunu çözüyor. Açıklık ve böylece Clint Pachl yorumlarda gizli ek yardım görmek kolay değildir. Kullanıcı css dosyasına ", print" yazmasını istenilen formatta eklemelidir.

     <link rel="stylesheet" href="my_cssfile.css" media="screen, print"type="text/css">

ve varsayılan medya = "ekran" değil.

    <link rel="stylesheet" href="my_cssfile.css" media="screen" type="text/css">

Bence bu sorunu herkes için çözüyor.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.