【问题标题】:CSS Centering - div with inline buttons that can be at top and bottom of screenCSS 居中 - 带有可位于屏幕顶部和底部的内联按钮的 div
【发布时间】:2013-09-12 15:45:12
【问题描述】:

我正在尝试制作一个控制面板,它有几个必须内联的按钮。 当窗口的宽度很大时,按钮位于屏幕顶部的中心,并且 当窗口的宽度较小时,它们位于屏幕底部的中心。 在某些情况下,我删除了一些按钮,但 div 仍然必须居中。

  1. 我必须使用绝对定位,对吗?

当控制面板在顶部时,我应该有

#control-div {
    position: absolute;
    top: 0;
}

当控制面板在底部时应该是

#control-div {
    position: absolute;
    bottom: 0;
}

问题来了。我希望 div 居中。我不知道 div 的宽度是多少,因为可能会删除或添加一些按钮。它必须始终居中。所以我尝试的是使用两个 div

#outer-div {
    position: absolute;
    left: 50%;
}

#control-div {
    position: absolute;
    left: -50%
}

这适用于控件 div 的任意宽度。但现在的问题是按钮不再是内联的。那么有什么办法呢?

这是我正在尝试的一个小提琴: http://jsfiddle.net/xe8EW/2/

【问题讨论】:

标签: css css-position centering


【解决方案1】:

这样

演示2

#control-div{
    background-color: #FF0000;
    font-family: Verdana,Geneva,Arial,sans-serif;
    height: 70px;
    left: 50%;
    margin-left: -125px;
    position: absolute;
    top: -35px;
    visibility: visible;
    width: 250px;
}

html

<div id="control-div">
control-div
</div>

demo

css

#control-div {
 width: 100px;
height: 100px;
background-color: red;    
position: absolute;
top:0;
bottom: 0;
left: 0;
right: 0;    
margin: auto;
}

var centerIt = function (el /* (jQuery element) Element to center */) {
    if (!el) {
        return;
    }
    var moveIt = function () {
        var winWidth = $(window).width();
        var winHeight = $(window).height();
        el.css("position","absolute").css("left", ((winWidth / 2) - (el.width() / 2)) + "px").css("top", ((winHeight / 2) - (el.height() / 2)) + "px");
    }; 
    $(window).resize(moveIt);
    moveIt();
};

demo3

【讨论】:

    【解决方案2】:

    您可以使用包装器将菜单置于顶部或底部。然后你可以让孩子居中。

    像这样:

    HTML:

    <div class="menu-wrapper">
        <div class="menu">
            <a href="#">Item one</a>
            <a href="#">Item two</a>
            <a href="#">Item three</a>
        </div>
    </div>
    

    CSS:

    .menu-wrapper {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
    }
    @media screen and (min-width: 0) and (max-width: 520px) {
      .menu-wrapper {
        top: auto;
        bottom: 0;
      }
    }
    .menu-wrapper .menu {
        width: 100%;
        text-align: center;
    }
    

    媒体查询在上下对齐之间切换。 text-align center 确保您的文本居中并指定宽度。只要您保持菜单元素内联(锚点,内联按钮都可以),它就应该工作

    注意:如果您希望菜单始终显示,您可能需要将 position:absolute 替换为 position:fixed。但这取决于您的设计意图。

    这是一个 jsfiddle: http://jsfiddle.net/nQmrx/2/

    更新: 不知道您想要背景颜色;)您可以为此包装另一个 div。 http://jsfiddle.net/nQmrx/4/

    .menu-wrapper .menu .background {
        background-color: #9f9f9f;
        display: inline;
    }
    

    【讨论】:

    • 这非常接近我想要的。我还希望 .menu 具有仅覆盖其内容而不是 100% 的窗口宽度的背景颜色。
    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2016-11-23
    • 2015-03-17
    相关资源
    最近更新 更多