2012-04-10 20 views
2

私はHTMLテーブルにうまく表示されたレコードのテーブルを持っています。 この表の最後の列には、行をホバーするときのアイコンが表示されます。ユーザーがアイコンを移動すると、その行に関連するすべてのアクションのドロップダウンメニューが表示されます。CSSドロップダウンメニュー

現在、アイコンはPosition:absoluteに設定されており、ドロップダウンメニューのdivもPosition Absoluteに設定されています。

これは、関連する行にうまく一致するようにドロップダウンメニューディビジョンを調整できることを意味します。

まず、なぜこれが当てはまるのか完全にはわからない。私は、絶対的なTDと相対的なメニュー・ディビジョンが必要だと思っていたでしょうが、これはちょうどそうではありません。

実際に問題が発生しているのは、他の列のテキストから高さが2倍になるように行が拡張されている場合です。絶対配置が適用された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はドロップダウンリストです。 – Steve

+0

あなたは 'td'の位置を作ってみましたか? – Travesty3

答えて

2

私は一緒にテーブルを取り除くだろう。私はその後、テーブルの動作divsを使用します。これにより、各要素がどのように動作するか、各行、および各列の動作をより詳細に制御できます。 このリンクは非常によく概念を説明しますhttp://snook.ca/archives/html_and_css/getting_your_di

+1

しかし、彼は* tabular *データを表示していますか?テーブルの完璧な使用? – 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

関連する問題