2012-01-15 2 views
2

У меня есть таблица с разворачиванием/сглаживанием элементов div в td. При расширении в IE9 все в порядке, но в Google Chrome (версия 16.0.912.75 м) я получаю неожиданные сплошные границы на разных местах. Кажется, что colspan = 3 tr имеет какое-то отношение к этому, так как сплошные границы появляются над ними и под ними. Кроме того, на это влияют значения ширины div: поведение изменяется при выборе других значений для них.Странное поведение границ в Chrome при расширении разделителей строк таблицы

См. Ниже html. Я добавил 4-х экранные отпечатки: начальный вид, расширение row1, расширение row2, расширение обоих. Что вызывает это странное поведение и как я могу его предотвратить?

initialrow1 expanded row2 expandedboth expanded

<html> 
<head> 
    <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> 
    <title>Example</title> 
    <style type="text/css"> 
     table { 
      border: solid black 1pt; 
      border-collapse: collapse; 
      padding: 0; 
      border-spacing: 0; 
     } 

     th { 
      background: rgb(255, 255, 153); 
      border-style: solid; 
      border-color: black; 
      border-width: 1pt; 
      padding: 0cm 5pt; 
      color: black; 
      font-family: Verdana; 
       font-size: 10pt; 
      font-style: normal; 
      vertical-align: top; 
     } 
     td { 
      border-style: dotted dotted none none; 
      border-color: black; 
      border-width: 1pt; 
      padding: 0cm 5pt; 
      color: black; 
      font-style: normal; 
      font-family: Verdana; 
       font-size: 10pt; 
      vertical-align: top; 
      margin-bottom: 4.5pt; 
      margin-top: 0pt; 
     } 

     div.QUAL { 
      margin-left:4pt; 
      font-size: 90%; 
     } 

     input.buttonQUAL { 
      color: blue; 
      background: white; 
      border: none; 
      margin-left:0pt; 
      margin-top: 0px; 
      margin-bottom: 0px; 
      font-size: 100%; 
     } 

     div.listQUALdesc { 
      color: black; 
      background: white; 
      font-size: 100%; 
     } 
    </style> 
    <script type="text/javascript" language="javascript"> 
     //expand and collapse functions based on id 
     function toggleMe(a){ 
      var e = document.getElementById(a); 
      if(!e) return true; 
      if(e.style.display == "none") 
       { 
       e.style.display = "block" 
       } 
      else { 
       e.style.display = "none" 
       } 
      return true; 
     }; 

     function expandByIdStart(IdStart){ 
      var divs = document.getElementsByTagName('div'); 
      for (var i=0; i<divs.length; i++) { 
       if (divs[i].id.match("^"+IdStart) == IdStart) { 
        divs[i].style.display = "block"; 
       } 
      } 
      return true; 
     } 

     function collapseByIdStart(IdStart){ 
      var divs = document.getElementsByTagName('div'); 
      for (var i=0; i<divs.length; i++) { 
       if (divs[i].id.match("^"+IdStart) == IdStart) { 
        divs[i].style.display = "none"; 
       } 
      } 
      return true; 
     } 
    </script> 
</head> 
<body> 
    <p/> 
    <table style='table-layout:fixed word-break:break-all'> 
     <col width="70"><col width="70"><col width="70"> 
     <thead><tr><th>Col1</th><th>Col2</th><th>Col3</th></tr></thead> 
     <tbody> 
      <tr> 
       <td> 
        <input 
         type="button" 
         class="buttonQUAL" 
         onclick="toggleMe('row1'); return true;" 
         onMouseOver="this.style.cursor='hand'" 
         value="row1"/> 
       </td> 
       <td>text1 
        <div id="row1" class="listQUALdesc" style="width:100; display:none"> 
         text2 
        </div> 
       </td> 
       <td></td> 
      </tr> 
      <tr> 
       <td><div class="QUAL">xxx</div></td> 
       <td>text3</td> 
       <td></td> 
      </tr> 
      <tr> 
       <td colspan="3">Start</td> 
      </tr> 
      <tr> 
       <td> 
        <input 
         type="button" 
         class="buttonQUAL" 
         onclick="toggleMe('row2'); return true;" 
         onMouseOver="this.style.cursor='hand'" 
         value="row2"/> 
        <div id="row2" class="QUAL" style="display:none;width:65"> 
         text5<br/> 
        </div> 
       </td> 
       <td>text4</td> 
       <td></td> 
      </tr> 
      <tr> 
       <td colspan="3">End</td> 
      </tr> 
     </tbody> 
    </table> 
</body> 
</html> 
+0

OK Я смог решить эту проблему - добавив удаленное нечетное поведение. Но я все же задаюсь вопросом, что именно происходит. – Maestro13

+0

И - добавление не является полным решением, поскольку оно вводит другие проблемы, когда я применяю его к более крупному html, над которым я работаю, который имеет подтаблицы в divs: размер шрифта для них уменьшается (по-видимому) 25% - почему это происходит? Примечание: при необходимости я создам еще один вопрос для этого, добавив отпечатки экрана. – Maestro13

ответ

1

см комментарии - добавление < DOCTYPE HTML> частично решает проблему

Добавление

Есть некоторые вопросы, которые можно найти на веб-сайте это указывает на ошибку в Chrome и Safari (которые используют webkit) следующим образом: webkit-colspan-table-border-bug.

Похоже, что использование colspan и нижней границы в сочетании с крахом-обвалом: сбой приводит к проблемам с отображением границы, как и в моем примере.

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