2016-11-10 9 views
2

Seite: (http://progrock.rocks/teaching_materials/loops.html).CSS: Dinge in der erweiterten Druckvorschau in Firefox verschoben

Es ist alles (CSS, JavaScript und HTML) in einer Datei:

<!DOCTYPE html> 
<!-- Copyright (c) 2016 Alf P. Steinbach. Boost 1.0 license. --> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Lapper for «loops» gruppeøvelse i praktisk regning</title> 
     <!-- link rel="stylesheet" href="style.css" --> 
     <style> 
      * { font: 10pt sans-serif; } 
      body { margin: 0; padding: 0; background-color: white; } 
      h1 
      { 
       padding-left: 14px; padding-top: 0; padding-bottom: 0.5em; padding-right: 0; 
       margin-top: 0; margin-bottom: 0; 
       background-color: lightGray; 
       font-size: xx-large; font-style: italic; color: #A0B0B0; 
      } 
      div#content 
      { 
       margin: 0; 
       padding-left: 0; padding-right: 0; 
       position: absolute; width: 100%; 
      } 
      div#input-area 
      { 
       left: 0; right: -0; 
       padding-left: 14px; padding-right: 14px; 
       padding-top: 0.5em; padding-bottom: 0.5em; 
       margin-left: 0; margin-right: 0; 
       background-color: #F0F0F0; 
      } 
      div#notes-container 
      { 
       left: 0; right: -0; 
       padding-left: 14px; padding-right: 14px; 
       padding-top: 0.5em; padding-bottom: 0.5em; 
       margin-left: 0; margin-right: 0; 
       /*display: none;*/ 
      } 
      input.Number-input 
      { 
       width: 5em; 
      } 
      .Access-key 
      { 
       text-decoration: underline; 
      } 
      div.Note 
      { 
       margin-top: 0px; margin-right: 12px; 
       margin-bottom: 8px; margin-left: 0px; 

       padding-left: 2em; padding-right: 2em; 
       padding-top: 1em; padding-bottom: 0.5em; 

       background-color: #FFFFB0; 
       width: 15em; 
       overflow: hidden; 

       border-radius: 1em; 
       border: 1px gray solid; 
       display: inline-block; 
      } 
      div.Note-figure 
      { 
       float: right; font-size: 4em; color: #D0E0E0; 
       padding: 0px; margin: 0px; vertical-align: top; 
       transform: rotate(-7deg); 
       border-radius: 0.5em; 
       background-color: white; 
      } 
     </style> 
     <script> 
      function item(id) 
      { 
       return document.getElementById(id); 
      } 

      function generate() 
      { 
       const n_notes = 11; 
       const operand = parseInt(item("fixed-operand").value); 
       const operation = item("operation").value; // +, * 
       const start_number = (operation == "+"? 0 : 1); 

       console.log("Generate") 
       var container = item("notes-container"); 
       var collection = item("notes-collection"); 
       if(collection !== null) 
       { 
        collection.remove(); 
        collection = null; 
       } 
       var message = document.createTextNode("Genererer…"); 
       container.appendChild(message); 

       collection = document.createElement("div"); 
       collection.id = "notes-collection"; 

       var template = item("note-template") 
       console.log("template = " + template) 
       var current = start_number; 
       for(let i = 0; i < n_notes; ++i) 
       { 
        let note = template.cloneNode(true); 
        note.style.display = "inline-block"; 
        let note_has = note.querySelector("#note-has"); 
        note_has.innerHTML = "Jeg har " + current.toString() + "."; 
        let note_seeking = note.querySelector("#note-seeking"); 
        let display_op = (operation == "+"? " + " : "∙"); 
        note_seeking.innerHTML = "Hvem har " + current + display_op + operand + "?"; 
        if(i == n_notes - 1) { note_seeking.innerHTML = "Siste tall!"; } 
        let figure = note.querySelector("#figure"); 
        switch(operation) 
        { 
         case "+": figure.innerHTML = i + "∙" + operand; break; 
         case "*": figure.innerHTML = operand + "↑" + i; break; 
        } 

        collection.appendChild(note); 
        switch(operation) 
        { 
         case "+": current += operand; break; 
         case "*": current *= operand; break; 
        } 
       } 
       message.remove(); 
       container.appendChild(collection); 
      } 

      function explanation_of(op) 
      { 
       switch(op) 
       { 
        case "+": return "dette gir en gangetabell"; 
        case "-": return "dette gir en baklengs gangetabell"; 
        case "*": return "dette gir en potenstabell"; 
        case "/": return "dette gir en baklengs potenstabell"; 
       } 
      } 

      function update_explanation() 
      { 
       item("operation-explanation").innerHTML = 
        "(" + explanation_of(item("operation").value) + ")."; 
      } 

      function on_command_generate() 
      { 
       generate(); 
      } 

      function on_operation_changed() 
      { 
       update_explanation(); 
      } 

      function on_document_loaded() 
      { 
       item("title-header").innerHTML = document.title; 
       item("operation").value = "+"; 
       update_explanation(); 
       generate(); 
      } 
     </script> 
    </head> 
    <body onload="on_document_loaded()"> 
     <h1 id="title-header">asdasd</h1> 
     <div id="content"> 
      <div id="input-area"> 
       <select id="operation" onchange="on_operation_changed();"> 
        <option value="+">+ (addisjon)</option> 
        <option value="*">* (multiplikasjon)</option> 
       </select> 
       med fast operand 
       <input id="fixed-operand" type="number" 
        class="Number-input" 
        alt="Det faste tallet i utregningene" 
        value="2" 
        min="1" 
        max="10" 
        > 
       <span id="operation-explanation"></span> 
       <button onclick="on_command_generate();" accesskey="g"> 
        <span class="Access-key">G</span>enerér 
       </button> 
      </div> <!-- input-area --> 
      <div id="notes-container"> 
       <div id="note-template" class="Note" style="display:none"> 
        <div id="figure" class="Note-figure"> 
         5∙7 
        </div> 
        <div style="position: absolute"> 
         <span id="note-has">Jeg har 35</span> 
         <br/> 
         &nbsp;<br/> 
         <span id="note-seeking">Hvem har 35 + 7?</span> 
        </div> 
       </div> 
       <div id="notes-collection"> 
       </div> <!-- notes-collection --> 
      <div> <!-- notes-container --> 
     </div> <!-- content --> 
    </body> 
</html> 

Problem: Während in 100% Druckvorschau funktioniert gut,

enter image description here

, wenn ich den Druck vergrößern Vorschau, Dinge nach oder um den Seitenumbruch herum bewegt werden und das Ergebnis ist einfach hässlich und unbrauchbar für den Zweck:

enter image description here

Ich habe versucht, auf einer anderen Maschine, eine CSS-Eigenschaft, die Seitenumbruch innerhalb einer div.Note-figure verhindern sollte, aber das hat nicht funktioniert. Tut mir leid, ich habe es hier nicht. Ich habe auch versucht, Probleme mit Firefox Druckvorschau zu googeln, ohne Glück.

Antwort

0

Ich bin nicht ganz sicher, was die Druckvorschau Problem in Firefox verursacht, aber ich regelte es durch jede gelbe Note Positionierung geben, nämlich position: relative;, und geben Sie den Text div innerhalb der Notiz position: absolute.

Ich gab auch den Text div ein z-index: 1, so dass es über den großen grauen Text schweben kann, wenn der Raum zu voll wird.

Das Hauptproblem bei dieser Art von Lösung ist, dass die Lösung ohne ein Verständnis der Ursachen des Problems ziemlich willkürlich und daher nicht sehr reproduzierbar ist. Daher würde ich es begrüßen, wenn jemand erklären könnte, was genau los ist und warum genau dieser Ansatz funktioniert. Angenommen, es handelt sich nicht um einen Firefox-Bug?

div.Note 
{ 
    margin-top: 0px; margin-right: 12px; 
    margin-bottom: 8px; margin-left: 0px; 

    padding-left: 2em; padding-right: 2em; 
    padding-top: 1em; padding-bottom: 0.5em; 

    background-color: #FFFFB0; 
    width: 15em; 
    overflow: hidden; 

    border-radius: 1em; 
    border: 1px gray solid; 
    display: inline-block; 

    position: relative; 
} 
div.Note-text 
{ 
    background-color: transparent; 
    position: absolute; z-index: 1; 
} 
div.Note-figure 
{ 
    float: right; font-size: 4em; color: #D0E0E0; 
    padding: 0px; margin: 0px; vertical-align: top; 
    transform: rotate(-7deg); 
    border-radius: 0.5em; 
    background-color: white; 
}