2012-04-10 2 views
2

HTML 테이블에 멋지게 표시되는 레코드 테이블이 있습니다. 이 테이블의 마지막 열은 행을 가져갈 때 아이콘을 표시합니다. 사용자가 아이콘을 가리키면 해당 행과 관련된 모든 동작에 대한 드롭 다운 메뉴가 나타납니다.CSS 드롭 다운 메뉴 테이블의 TD를 기준으로합니다.

현재 아이콘이 Position:absolute으로 설정되어 있고 드롭 다운 메뉴의 div도 절대 값 위치로 설정되어 있습니다.

즉, 관련 행과 잘 정렬되도록 드롭 다운 메뉴 Div를 정렬 할 수 있습니다.

처음에는 완전히 이유가 확실하지 않습니다. 나는 절대자로서 TD를 필요로하고 상대적인 것으로 메뉴 분과를 필요로 할 것이라고 생각했을 것이다. 그러나 이것은 단지 그럴만 한 것은 아니다.

현재 문제는 (모든 브라우저에서 작동하는 방식대로) 행이 다른 열의 텍스트에서 높이가 두 배로 확장 될 때입니다. 절대 위치가 적용된 TD는 TR의 100 % 높이가되지 않습니다. tr를 가져 오려고 할 때 문제가 발생하고 행 높이로 확장되어야하는 마지막 TD 위치로 이동하고이를 TR에서 호버 아웃으로 등록합니다.

이 문제를 해결할 수있는 아이디어가 있습니까? 상대적인 div에 아이콘을 두는 것의 문제점은 메뉴를 행에 맞게 정렬 할 수 있도록 div가 100 % 높이/너비가되어야한다는 것입니다.

편집 : 요청에 따라 일부 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

가 제공되었습니다 ... .optlink span은 아이콘이고 .optmenu는 드롭 다운 div이며, 자리에 표시됩니다. – Steve

+0

'td'위치를 만들려고 했습니까 : relative? – Travesty3

답변

2

나는 모두 함께 테이블을 없앨 것이다. div를 테이블 동작과 함께 사용합니다. 이렇게하면 각 요소가 작동하는 방식, 각 행 및 각 열에 대해 훨씬 더 많은 제어 기능을 제공합니다. 이 링크는 아주 잘 개념을 설명합니다 http://snook.ca/archives/html_and_css/getting_your_di

+1

그러나 그는 테이블 형식의 데이터를 표시하고 있습니까? 테이블을 완벽하게 사용합니까? – mattytommo

+0

네, 이것이 테이블의 적절한 사용법입니다. 그러나 테이블 품질을 다른 요소에 통합 할 수있는 이유가 있습니다. 예를 들어 링크의 CSS 코드는 다음과 같습니다. #left, #right, #middle { display : table-cell; } div를 사용하여 작동하는 "테이블"을 만들 수 있습니다 (어쨌든 DOM에서 테이블을 만드는 방법이 더 많거나 적음). 여전히 다른 속성 및 기능에 액세스 할 수 있습니다. –

+0

귀하의 방법이 저에게 가장 적합한 솔루션인지 확실하지 않습니다.(우리는 좋은 크로스 브라우저 지원이 필요하다.) 그러나 앞으로이 점에 대한 가능성을 내 눈을 열었다. 새로운 table table row-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