【问题标题】:Centering Content of Relatively Sized Div with Relatively Sized Elements, While Keeping Elements Left Aligned将相对大小的 Div 的内容与相对大小的元素居中,同时保持元素左对齐
【发布时间】:2016-05-29 22:14:00
【问题描述】:

我知道我可能没有正确解释这一点,但我正在尝试创建一个 HTML 模板,该模板将电视节目列为封面插图。在一定程度上,每个元素都是灵活的。通过在更大的屏幕上展开,它将每行显示多达五个节目,而在 iPhone 或 Android 设备等较小的屏幕上至少显示两个节目。十年来我还没有真正用 CSS 或 HTML 做任何事情,所以我已经生锈了。

我已经完成了 90% 的路......我唯一真正不喜欢的是,在小于最大值的行上,它使它们居中。我想让集合居中,但元素左对齐,以便模仿表格的工作方式。

有什么建议吗?我在堆栈溢出方面尝试了很多东西,但似乎没有什么能让我到达我想要去的地方。如果不使用 DIV,我绝对愿意放弃它并重新开始。

这是 HTML 和 CSS 的示例:

<html>
    <head>
        <meta name="viewport" content="user-scalable=no, width=device-width, height=device-height" />
        <style>
            @import url(http://fonts.googleapis.com/css?family=Roboto:400,500,700,300,100);
            body {
                background: #EEE;
                font-family: "Roboto", helvetica, arial, sans-serif;
                font-weight: 100;
                text-rendering: optimizeLegibility;
                text-align: center;
                margin: 0;
                padding: 0;
            }

            .page-header {
                position: fixed;
                display: table;
                background-color: #1b1e24;
                top: 0;
                left: 0;
                right: 0;
                height: 5em;
                width: 100%;
                z-index: 100;
                color: #D5DDE5;
            }
            .header-content {
                display: table-cell;
                width: 100%;
                vertical-align: middle;
                font-size: 1.5em;
                font-weight: 100;
            }
            .shows-container {
                display: inline-block;
                min-width: 414px;
                text-align: center;
                margin-top: 7em;
            }
            .show-container {
                min-width: 189px;
                display: inline-block;
                vertical-align: top;
                margin: 1%;
                width: 16%;
            }
            .show-artwork {
                padding-top: 139.15%;
                position: relative;
                width: 100%;
                display: block;
            }
            .show-image {
                position: absolute;
                top: 0;
                bottom: 0;
                right: 0;
                left: 0;
                width: 100%;
                height: 100%;
            }
            .show-name {
                display: block;
                max-width: 100%;
                overflow: hidden;
                white-space: nowrap;
                background-color: #FFF;
                text-align: left;
                font-size: .7em;
                font-weight: normal;
                padding-left: .5em;
                padding-top: 2.5em;
                padding-bottom: 6%;
            }

            .show-airing {
                display: inline-block;
                width: 100%;
                position: absolute;
                bottom: -.7em;
                margin: 0;
                padding: 0;
                left: 0;
                font-size: .7em;
            }
            .show-day-count, .show-day-text {
                display: inline-block;
                padding: .3em;
                font-weight: normal;
            }
            .day-today {
                background-color: #F00;
                color: #FFF;
            }
            .day-nottoday {
                background-color: #4E5066;
                color: #FFF;
                padding-left: 1em;
                padding-right: 1em;
            }
            .day-today, .day-nottoday {
                border-bottom-left-radius: .3em;
                border-top-left-radius: .3em;
            }
            .show-day-text {
                background-color: #DDD;
                border-bottom-right-radius: .3em;
                border-top-right-radius: .3em;
            }
        </style>
    </head>
    <body>
      <div class="page-header">
          <div class="header-content">Tracking Shows</div>
      </div>
      <div class="shows-container">
            <div class="show-container">
                <div class="show-artwork">
                    <img src="http://tvmazecdn.com/uploads/images/original_untouched/53/132622.jpg" class="show-image" />
                    <div class="show-airing"><div class="show-day-count day-today">TODAY</div><div class="show-day-text">10:00 PM</div></div>
                </div>
                <div class="show-name">GAME OF THRONES</div>
            </div><div class="show-container">
                <div class="show-artwork">
                    <img src="http://tvmazecdn.com/uploads/images/original_untouched/53/132726.jpg" class="show-image" />
                    <div class="show-airing"><div class="show-day-count day-today">TODAY</div><div class="show-day-text">10:30 PM</div></div>
                </div>
                <div class="show-name">SILICON VALLEY</div>
            </div><div class="show-container">
                <div class="show-artwork">
                    <img src="http://tvmazecdn.com/uploads/images/original_untouched/1/3570.jpg" class="show-image" />
                    <div class="show-airing"><div class="show-day-count day-nottoday">1</div><div class="show-day-text">DAYS</div></div>
                </div>
                <div class="show-name">AMERICAN DAD!</div>
            </div><div class="show-container">
                <div class="show-artwork">
                    <img src="http://tvmazecdn.com/uploads/images/original_untouched/47/118626.jpg" class="show-image" />
                    <div class="show-airing"><div class="show-day-count day-nottoday">3</div><div class="show-day-text">DAYS</div></div>
                </div>
                <div class="show-name">THE AMERICANS</div>
            </div><div class="show-container">
                <div class="show-artwork">
                    <img src="http://tvmazecdn.com/uploads/images/original_untouched/0/480.jpg" class="show-image" />
                    <div class="show-airing"><div class="show-day-count day-nottoday">4</div><div class="show-day-text">DAYS</div></div>
                </div>
                <div class="show-name">BONES</div>
            </div><div class="show-container">
                <div class="show-artwork">
                    <img src="http://tvmazecdn.com/uploads/images/original_untouched/2/5102.jpg" class="show-image" />
                    <div class="show-airing"><div class="show-day-count day-nottoday">4</div><div class="show-day-text">DAYS</div></div>
                </div>
                <div class="show-name">ARCHER</div>
            </div><div class="show-container">
                <div class="show-artwork">
                    <img src="http://tvmazecdn.com/uploads/images/original_untouched/22/56919.jpg" class="show-image" />
                    <div class="show-airing"><div class="show-day-count day-nottoday">14</div><div class="show-day-text">DAYS</div></div>
                </div>
                <div class="show-name">THE LAST SHIP</div>
            </div>
       </div>
    </body>
</html>

【问题讨论】:

    标签: html css fluid-layout


    【解决方案1】:

    将“show-container”包装在第二个 div 上并对其应用左对齐。

    <html>
        <head>
            <meta name="viewport" content="user-scalable=no, width=device-width, height=device-height" />
            <style>
                @import url(http://fonts.googleapis.com/css?family=Roboto:400,500,700,300,100);
                body {
                    background: #EEE;
                    font-family: "Roboto", helvetica, arial, sans-serif;
                    font-weight: 100;
                    text-rendering: optimizeLegibility;
                    text-align: center;
                    margin: 0;
                    padding: 0;
                }
    
                .page-header {
                    position: fixed;
                    display: table;
                    background-color: #1b1e24;
                    top: 0;
                    left: 0;
                    right: 0;
                    height: 5em;
                    width: 100%;
                    z-index: 100;
                    color: #D5DDE5;
                }
                .header-content {
                    display: table-cell;
                    width: 100%;
                    vertical-align: middle;
                    font-size: 1.5em;
                    font-weight: 100;
                }
                .shows-container {
                    display: inline-block;
                    min-width: 414px;
                    text-align: center;
                    margin-top: 7em;
                }
                .shows-wrapper {
                    display: inline-block;
                    text-align: left;
                }
                .show-container {
                    min-width: 189px;
                    display: inline-block;
                    vertical-align: top;
                    margin: 1%;
                    width: 16%;
                }
                .show-artwork {
                    padding-top: 139.15%;
                    position: relative;
                    width: 100%;
                    display: block;
                }
                .show-image {
                    position: absolute;
                    top: 0;
                    bottom: 0;
                    right: 0;
                    left: 0;
                    width: 100%;
                    height: 100%;
                }
                .show-name {
                    display: block;
                    max-width: 100%;
                    overflow: hidden;
                    white-space: nowrap;
                    background-color: #FFF;
                    text-align: left;
                    font-size: .7em;
                    font-weight: normal;
                    padding-left: .5em;
                    padding-top: 2.5em;
                    padding-bottom: 6%;
                }
    
                .show-airing {
                    display: inline-block;
                    width: 100%;
                    position: absolute;
                    bottom: -.7em;
                    margin: 0;
                    padding: 0;
                    left: 0;
                    font-size: .7em;
                }
                .show-day-count, .show-day-text {
                    display: inline-block;
                    padding: .3em;
                    font-weight: normal;
                }
                .day-today {
                    background-color: #F00;
                    color: #FFF;
                }
                .day-nottoday {
                    background-color: #4E5066;
                    color: #FFF;
                    padding-left: 1em;
                    padding-right: 1em;
                }
                .day-today, .day-nottoday {
                    border-bottom-left-radius: .3em;
                    border-top-left-radius: .3em;
                }
                .show-day-text {
                    background-color: #DDD;
                    border-bottom-right-radius: .3em;
                    border-top-right-radius: .3em;
                }
            </style>
        </head>
        <body>
          <div class="page-header">
              <div class="header-content">Tracking Shows</div>
          </div>
          <div class="shows-container">
                <div class="shows-wrapper">
                    <div class="show-container">
                        <div class="show-artwork">
                            <img src="http://tvmazecdn.com/uploads/images/original_untouched/53/132622.jpg" class="show-image" />
                            <div class="show-airing"><div class="show-day-count day-today">TODAY</div><div class="show-day-text">10:00 PM</div></div>
                        </div>
                        <div class="show-name">GAME OF THRONES</div>
                    </div><div class="show-container">
                        <div class="show-artwork">
                            <img src="http://tvmazecdn.com/uploads/images/original_untouched/53/132726.jpg" class="show-image" />
                            <div class="show-airing"><div class="show-day-count day-today">TODAY</div><div class="show-day-text">10:30 PM</div></div>
                        </div>
                        <div class="show-name">SILICON VALLEY</div>
                    </div><div class="show-container">
                        <div class="show-artwork">
                            <img src="http://tvmazecdn.com/uploads/images/original_untouched/1/3570.jpg" class="show-image" />
                            <div class="show-airing"><div class="show-day-count day-nottoday">1</div><div class="show-day-text">DAYS</div></div>
                        </div>
                        <div class="show-name">AMERICAN DAD!</div>
                    </div><div class="show-container">
                        <div class="show-artwork">
                            <img src="http://tvmazecdn.com/uploads/images/original_untouched/47/118626.jpg" class="show-image" />
                            <div class="show-airing"><div class="show-day-count day-nottoday">3</div><div class="show-day-text">DAYS</div></div>
                        </div>
                        <div class="show-name">THE AMERICANS</div>
                    </div><div class="show-container">
                        <div class="show-artwork">
                            <img src="http://tvmazecdn.com/uploads/images/original_untouched/0/480.jpg" class="show-image" />
                            <div class="show-airing"><div class="show-day-count day-nottoday">4</div><div class="show-day-text">DAYS</div></div>
                        </div>
                        <div class="show-name">BONES</div>
                    </div><div class="show-container">
                        <div class="show-artwork">
                            <img src="http://tvmazecdn.com/uploads/images/original_untouched/2/5102.jpg" class="show-image" />
                            <div class="show-airing"><div class="show-day-count day-nottoday">4</div><div class="show-day-text">DAYS</div></div>
                        </div>
                        <div class="show-name">ARCHER</div>
                    </div><div class="show-container">
                        <div class="show-artwork">
                            <img src="http://tvmazecdn.com/uploads/images/original_untouched/22/56919.jpg" class="show-image" />
                            <div class="show-airing"><div class="show-day-count day-nottoday">14</div><div class="show-day-text">DAYS</div></div>
                        </div>
                        <div class="show-name">THE LAST SHIP</div>
                    </div>
                </div>
           </div>
        </body>
    </html>

    【讨论】:

    • 我试过了,它有点工作。如果您在更大的屏幕中打开它,您会注意到右侧实际上比左侧大很多。项目的主要块实际上并没有居中。
    • 奇怪的是真的。我刚刚注意到它也发生在你的例子中。 “shows-container”占用了额外的空间,但由于其内容居中而不是左对齐,因此并不明显。可悲的是,我无法弄清楚原因。
    • 是的。这就是我注意到的问题。虽然它是一个内联 div,但它似乎不适合内容。它几乎看起来像是在包装时,它创造了空白。我使用了 chrome 检查器,它不是填充或任何东西。它只是影响容器的宽度。我对此一无所知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多