2

I am working on an application for school and made an invoice sheet that has a print option. When I click the button or do ctrl+p it shows the navbar in a very disorganized way. How would I hide the navbar completely?

This is an image how of it currently displays on the print screen. https://gyazo.com/9aeb5270764e8c9051a3bd78e2c42efb

I have tried using @media print with #navbar { display: none; and it still shows it. I could be just using it incorrectly. Also messing with the css styles to see if anything can be done, but I cannot figure it out. It doesn't show below because it didn't work for me.

This is the css code for that page.

<style>
.invoice-box {
  max-width: 800px;
  margin: auto;
  padding: 30px;
  border: 1px solid #eee;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
  font-size: 16px;
  line-height: 24px;
  font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
  color: #555;
}

.invoice-box table {
  width: 100%;
  line-height: inherit;
  text-align: left;
}

.invoice-box table td {
  padding: 5px;
  vertical-align: top;
}

.invoice-box table tr td:nth-child(n + 2) {
  text-align: right;
}

.invoice-box table tr.top table td {
  padding-bottom: 20px;
}

.invoice-box table tr.top table td.title {
  font-size: 45px;
  line-height: 45px;
  color: #333;
}

.invoice-box table tr.information table td {
  padding-bottom: 40px;
}

.invoice-box table tr.heading td {
  background: #eee;
  border-bottom: 1px solid #ddd;
  font-weight: bold;
}

.invoice-box table tr.details td {
  padding-bottom: 20px;
}

.invoice-box table tr.item td {
  border-bottom: 1px solid #eee;
}

.invoice-box table tr.item.last td {
  border-bottom: none;
}

.invoice-box table tr.item input {
  padding-left: 5px;
}

.invoice-box table tr.item td:first-child input {
  margin-left: -5px;
  width: 100%;
}

.invoice-box table tr.total td:nth-child(2) {
  border-top: 2px solid #eee;
  font-weight: bold;
}

.invoice-box input[type="number"] {
  width: 60px;
}

@media only screen and (max-width: 600px) {
  .invoice-box table tr.top table td {
    width: 100%;
    display: block;
    text-align: center;
  }

  .invoice-box table tr.information table td {
    width: 100%;
    display: block;
    text-align: center;
  }
} 

/** RTL Stuff **/
.rtl {
  direction: rtl;
  font-family: Tahoma, "Helvetica Neue", "Helvetica", Helvetica, Arial,
    sans-serif;
}

.rtl table {
  text-align: right;
}

.rtl table tr td:nth-child(2) {
  text-align: left;
}
</style>

This is the button code and method

      printWindow: function () {        
          window.print();
      }
 <button class ='btn' @click='printWindow()'>Print Invoice</button>

I just need it to not show on this page. Also if possible for the buttons to not show as well.

EDIT: I changed @media to how it was originally

user7887481
  • 69
  • 1
  • 11
  • Possible duplicate of https://stackoverflow.com/questions/355313/how-do-i-hide-an-element-when-printing-a-web-page – Anis R. Apr 30 '19 at 20:38
  • Possible duplicate of [How do I hide an element when printing a web page?](https://stackoverflow.com/questions/355313/how-do-i-hide-an-element-when-printing-a-web-page) – Anis R. Apr 30 '19 at 20:39
  • Your use of `@media print` makes no mention of hiding a navbar, but rather some table elements. Put the right code with the right selector in there. – Ohgodwhy Apr 30 '19 at 20:40
  • I know, I'm sorry I forgot to change it back to how it was originally. I left that just because of the different things I was trying – user7887481 Apr 30 '19 at 20:44

1 Answers1

2

There's an error in your @media query. You forgot to add in the and keyword. So here's what your media query should look like:

@media print and (max-width: 600px){
   // your styles go here
}

All your styles should now be correctly applied.

ces_1094
  • 131
  • 5
  • Thank you, I changed the code to how it was originally before I started messing with stuff it that changes anything i tried to add #Navbar { display: none; and still shows the same as the image – user7887481 Apr 30 '19 at 20:45
  • Did you place the `print` ready styles within the `@media print` style block? – ces_1094 Apr 30 '19 at 20:50
  • I updated the code to the original my buddy worked on. Currently, if I change it to a "print" it ruins the css and makes it print on 2 pages. but keeping the current code keeps it on one page. Both still show the nav bar – user7887481 Apr 30 '19 at 20:53
  • 1
    You'd want to create a separate `@media print` query for those print specific styles. Keep your other styles intact. – ces_1094 Apr 30 '19 at 20:55
  • THANK YOU!! I tried something so similar and it didn't work! I added a no-print div class to my navbar and it worked! thank you, Cesar – user7887481 Apr 30 '19 at 21:01
  • No problem! @user7887481. Please marked your question as answered :) – ces_1094 Apr 30 '19 at 21:08