【问题标题】:Placing Divs side by side, with equal column heights, inside ContentPlaceHolder in ASP.NET在 ASP.NET 中的 ContentPlaceHolder 内并排放置 Div,列高相等
【发布时间】:2012-05-09 21:12:45
【问题描述】:

我正在尝试创建三列。左右列包含一个按钮,这些按钮应与容器的外边框保持固定对齐。中心列包含一个动态创建的asp:Table,包含从 1 行 1 列到 6 行 7 列的所有内容。

我尝试关注 this CSS example 最终成为这个网站:http://www.alistapart.com/d/holygrail/example_3.html,我已经让 divs 并排 - 但我无法让左右列垂直对齐或与中心 div 标签具有相同的高度,我猜是一样的。

我不知道这是否重要,但我的 div 位于 ASP Page 中的 ContentPlaceHolder 内。

这是我的代码:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    //Container to the three columns
    <div id="calendarContainer"> 

        //The left button container
        <div id="navigateButtonLeft" class="calendarColumn">
            <asp:Button ID="btnLeftMonth" runat="server" Text="<" 
                        onclick="btnLeftMonth_Click" /> 
        </div>

        //The table/month-calendar container
        <div id="calendar"class="calendarColumn">
            <asp:Table ID="TableMonthCalendar" runat="server" GridLines="Both" />
        </div>

        //The right button container
        <div class="calendarColumn">
            <asp:Button ID="btnRightMonth" runat="server" Text=">" 
                        onclick="btnRightMonth_Click" />  
        </div>
    </div>
</asp:Content>

还有我的 CSS(可能一文不值):

#calendarContainer {
  overflow:hidden;
  border: 1px solid black;
}
#calendarContainer .calendarColumn {
  padding-bottom: 1001em;
  margin-bottom: -1000em;
  border: 1px solid black;
  overflow:hidden;
  float:left;
}
#navigateButtonLeft {

}
#calendar {
  width: 80%;
}
#navigateButtonRight {

}

我之前使用了一个 table 和一个 tr 和三个 tds,但我无法让它成为我想要的方式。

这是我想要达到的目标的说明,这可能比我的解释更好:

【问题讨论】:

    标签: asp.net css html vertical-alignment


    【解决方案1】:

    您需要格式化日历并使用绝对位置放置列,然后放置在您假装的位置,并避免在添加其他内容时布局进一步中断:

    请看这个Fiddle example!

    阅读有关此类解决方案的更多信息:

    CSS Position Property | CSS-Tricks - Fluid Width Equal Height Columns

    注意事项:

    Fiddle 上,查看css 部分,了解如何将元素定位 到适当的位置。此外,使用 top 和 bottom 允许元素从其包装器的顶部到底部,在您的情况下,包装器是 #calendarContainer


    已编辑:

    第二个Fiddle Example 带有一个没有“坐标”的主包装器。


    再次编辑

    另一个Fiddle Example 使用样式为常规图标的按钮。

    使用的图标:

    Arrow Left | Arrow Right


    编辑添加了来自 OP 的最后一个请求,按钮从上到下

    小提琴Here!

    【讨论】:

    • 您的示例看起来很棒,这正是我想要实现的,但我不能拥有绝对定位,因为它位于动态放置在页面上的 ContentPlaceHolder 中。
    • 最终输出的 HTML 结构是什么?
    • 当您说 HTML 结构时,我不确定您想要什么。您希望从上传到某处的页面生成的 HTML 吗?还是我页面的一般结构?
    • 另外,绝对定位的元素动态放置在页面上的事实没有任何关系,但你总是可以position:absolute; 将所有内容包装在一个没有坐标的div上,检查我的第二个Fiddle Example的答案!
    • 如果你在浏览器中打开页面,它会被渲染并且一些HTML结构被输出到浏览器窗口。那是应该分析的 HTML,以更好地理解和解决问题。您可以使用 firebug 或其他开发工具来分析相同的输出或将其复制到此处。
    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2017-03-18
    • 2015-08-10
    • 1970-01-01
    • 2014-01-13
    相关资源
    最近更新 更多