2012-04-10 3 views
2

У меня есть таблица записей, которая хорошо отображается в таблице HTML. В последнем столбце этой таблицы отображается значок при зависании строки. Когда пользователь наводит значок, появляется раскрывающееся меню для всех действий, связанных с этой строкой.CSS выпадающее меню Относительно TD в таблице

В настоящее время у меня есть значок td, который установлен в Position:absolute, а div выпадающего меню также установлен в положение Absolute.

Это означает, что я могу выровнять раскрывающееся меню Div, чтобы выровнять его по отношению к соседней строке.

Во-первых, я не совсем уверен, почему это так. Я бы подумал, что мне понадобится TD как Absolute и Divide Menu как Relative, но это просто не так.

Фактическая проблема, с которой я в настоящее время (как у меня работает во всем браузере), заключается в том, что когда строка расширяется, она должна быть вдвое больше высоты от текста в других столбцах. ТД с установленным абсолютным позиционированием не расширяется до 100% высоты TR. Это вызывает проблемы при попытке навести tr и вы переместитесь туда, где последний TD, который должен быть расширен до высоты строки, и регистрирует его как зависание на TR.

Любые идеи, чтобы обойти это? Проблема с помещением значка в div, который является относительным, заключается в том, что мне нужно, чтобы div был 100% высоты/ширины td, чтобы иметь возможность выровнять меню в соответствии с строкой!

EDIT: Как запрошено Некоторые Html ... Это шаблон уса. Не должно быть трудно следовать, даже если вы его никогда не использовали

<table> 
      <thead> 
       <tr> 
        <th style="width:15px"><input type="checkbox" class="GridSelectAll" onclick="GridSelectAll(this);" /></th> 
        <th class="tar" style="width:30px"> 
         <a href="javascript:SortGrid('EmployeeId')" id="headerEmployeeId"> 
          <%= GetTranslation("EmployeeId") %><span class="sortArrow ui-icon"></span> 
         </a>       
        </th> 
        <th style="width:120px"> 
         <a href="javascript:SortGrid('FirstName')" id="headerFirstName"> 
          <%= GetTranslation("FirstName") %><span class="sortArrow ui-icon"></span> 
         </a> 
        </th> 
        <th style="width:120px"> 
         <a href="javascript:SortGrid('LastName')" id="headerLastName"> 
          <%= GetTranslation("LastName") %><span class="sortArrow ui-icon"></span> 
         </a> 
        </th> 
        <th> 
         <a href="javascript:SortGrid('CompanyName')" id="headerCompanyName"> 
          <%= GetTranslation("PrimayCompanyName") %><span class="sortArrow ui-icon" ></span> 
         </a> 
        </th> 
        <th style="width:55px"> 
         <a href="javascript:SortGrid('EmployeeRowStatus')" id="headerEmployeeRowStatus"> 
          <%= GetTranslation("EmployeeRowStatus") %><span class="sortArrow ui-icon"></span> 
         </a> 
        </th> 
        <th style="width:60px"> 
         <a href="javascript:SortGrid('IsLocked')" id="headerIsLocked"> 
          <%= GetTranslation("IsLocked") %><span class="sortArrow ui-icon"></span> 
         </a> 
        </th> 
        <th style="width:15px"></th> 
       </tr> 
      </thead> 
      <tbody> 
       {{#EmployeeSummaries}} 
       <tr> 
        <td><input type="checkbox" class="chkRowId" value="{{EmployeeId}}" /></td> 
        <td class="tar">{{EmployeeId}}</td> 
        <td>{{FirstName}}</td> 
        <td>{{LastName}}</td> 
        <td>{{PrimaryCompanyName}}</td> 
        <td>{{EmployeeRowStatus}}</td> 
        <td>{{IsLocked}}</td> 
        <td style="position:absolute;"> 
         <a class="optlink"><span class="ui-icon ui-icon-triangle-1-s"></span></a> 
         <div class="optmenu"> 
          <ul> 
           <li><a onclick="UpdateEmployee_LoadDialog({{EmployeeId}});"><%= GetTranslation("ManageEmployee")%></a></li> 
           <li><a onclick="showLoading();" href="../Core/AuditItem.aspx?{{ItemTypeItemIdQuerystring}}"><%= GetTranslation("ViewHistory")%></a></li> 
           <li><a onclick="showLoading();" href="UserGroupsEvo.aspx#/?PageIndex=0&Filter=EmployeeId~EqualTo~{{EmployeeId}}"><%= GetTranslation("ViewUserGroups")%></a></li> 
           <li><a onclick="showLoading();" href="UserGroup_Employees.aspx?{{EmployeeIdQuerystring}}"><%= GetTranslation("ManageUserGroups")%></a></li> 
           <li><a onclick="showLoading();" href="../Employee/EmployeePreferences.aspx?{{EmployeeIdQuerystring}}"><%= GetTranslation("ManagePreferences")%></a></li> 
           <li><a onclick="ResetPasswords_LoadDialog({{EmployeeId}});"><%= GetTranslation("ResetPassword")%></a></li> 
           <li><a onclick="SendWelcomeEmails_LoadDialog({{EmployeeId}});"><%= GetTranslation("SendWelcomeEmail")%></a></li> 
           <li><a onclick="AddEmployee_Company_LoadDialog({{EmployeeId}}, {{PrimaryCompanyId}});"><%= GetTranslation("AddToCompany")%></a></li> 
           <li><a onclick="LoginAsUser({{EmployeeId}});"><%= GetTranslation("LoginAsUser") %></a></li> 
           {{#HasOtherCompanies}} 
           <li class="subheader"><%= GetTranslation("ManageOtherCompanies") %></li> 
           {{/HasOtherCompanies}} 
           {{#Companies}} 
           <li> 
            <span style="vertical-align:top;" class="hh ui-icon ui-icon-circle-close" onclick='RemoveEmployeeFromCompany_LoadDialog(this, {{EmployeeId}}, {{CompanyId}}, "{{CompanyName}}");return false;' title="<%= GetTranslation("Remove") %>"></span> 
            <a onclick="ManageEmployee_Company_LoadDialog({{EmployeeId}}, {{CompanyId}});"> 
             {{CompanyName}} 
            </a>          
           </li> 
           {{/Companies}} 
          </ul> 
         </div>  
        </td> 
       </tr> 
       {{/EmployeeSummaries}} 
      </tbody> 

     </table> 
+0

Не могли бы вы опубликовать некоторые примеры кода? С какими-то трудностями следовать только с описаниями. – Travesty3

+0

теперь предоставлен ... .potlink span - это значок и .optmenu - это раскрывающийся div, который должен появиться на месте. – Steve

+0

Вы пытались сделать позицию 'td': relative? – Travesty3

ответ

2

Я бы избавился от всего стола. Затем я использовал divs с поведением таблицы. Это даст вам гораздо больше контроля над тем, как работают каждый элемент, каждая строка и каждый столбец. Эта ссылка объясняет концепцию достаточно хорошо: http://snook.ca/archives/html_and_css/getting_your_di

+1

Но он показывает * табличные * данные? Прекрасное использование стола? – mattytommo

+0

Да, это правильное использование таблицы. Однако есть причина, что качества таблицы могут быть интегрированы в другие элементы. Например, код CSS из ссылки: #left, #right, #middle { display: table-cell; } Это позволяет вам построить функционирующую «таблицу» с div (что более или менее то, как таблицы создаются в DOM в любом случае), и по-прежнему иметь доступ к другим свойствам и функциям. –

+0

Я не уверен, что ваш метод является лучшим решением для меня.(нам нужна хорошая поддержка кросс-браузера), но она, безусловно, открыла мне глаза на возможность этого в будущем. Никогда не было нового, вы могли бы эффективно создать таблицу, используя свойства display table-row и т. Д. увлекательна. – Steve

1

Вы могли бы попробовать это ::

<!DOCTYPE html> 
<html> 
<head> 
<style> 
body{font-family:arial;} 
table{font-size:80%;background:black} 
a{color:black;text-decoration:none;font:bold} 
a:hover{color:#606060} 
td.menu{background:lightblue} 
table.menu 
{ 
font-size:100%; 
position:absolute; 
visibility:hidden; 
} 
</style> 
<script> 
function showmenu(elmnt) 
{ 
document.getElementById(elmnt).style.visibility="visible"; 
} 
function hidemenu(elmnt) 
{ 
document.getElementById(elmnt).style.visibility="hidden"; 
} 
</script> 
</head> 

<body> 
<h3>Drop down menu</h3> 
<table width="100%"> 
<tr bgcolor="#FF8080"> 
    <td onmouseover="showmenu('tutorials')" onmouseout="hidemenu('tutorials')"> 
    <a href="/default.asp">Tutorials</a><br> 
    <table class="menu" id="tutorials" width="120"> 
    <tr><td class="menu"><a href="/html/default.asp">HTML</a></td></tr> 
    <tr><td class="menu"><a href="/css/default.asp">CSS</a></td></tr> 
    <tr><td class="menu"><a href="/xml/default.asp">XML</a></td></tr> 
    <tr><td class="menu"><a href="/xsl/default.asp">XSL</a></td></tr> 
    </table> 
    </td> 
    <td onmouseover="showmenu('scripting')" onmouseout="hidemenu('scripting')"> 
    <a href="/default.asp">Scripting</a><br> 
    <table class="menu" id="scripting" width="120"> 
    <tr><td class="menu"><a href="/js/default.asp">JavaScript</a></td></tr> 
    <tr><td class="menu"><a href="/vbscript/default.asp">VBScript</a></td></tr> 
    <tr><td class="menu"><a href="default.asp">DHTML</a></td></tr> 
    <tr><td class="menu"><a href="/asp/default.asp">ASP</a></td></tr> 
    <tr><td class="menu"><a href="/ado/default.asp">ADO</a></td></tr> 
    </table> 
    </td> 
    <td onmouseover="showmenu('validation')" onmouseout="hidemenu('validation')"> 
    <a href="/site/site_validate.asp">Validation</a><br> 
    <table class="menu" id="validation" width="120"> 
    <tr><td class="menu"><a href="/web/web_validate.asp">Validate HTML</a></td></tr> 
    <tr><td class="menu"><a href="/web/web_validate.asp">Validate XHTML</a></td></tr> 
    <tr><td class="menu"><a href="/web/web_validate.asp">Validate CSS</a></td></tr> 
    <tr><td class="menu"><a href="/web/web_validate.asp">Validate XML</a></td></tr> 
    <tr><td class="menu"><a href="/web/web_validate.asp">Validate WML</a></td></tr> 
    </table> 
    </td> 
</tr> 
</table> 
<p>Mouse over these options to see the drop down menus</p> 
</body> 

</html> 
+0

Спасибо, что отлично поработали для меня! – gikygik

+0

Добро пожаловать! ... [Enjoy_Programming] – ErickBest

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