将跨度在 div 中垂直居中

发布于 2024-12-14 23:56:41 字数 369 浏览 0 评论 0 原文

我有一个包含 span 的 div,我希望 span 垂直和水平对齐到我的 div 的中心。

这是小提琴: http://jsfiddle.net/RhNc2/1/

我尝试过 span 上的 >margin:auto 和 div 上的 vertical-align,但它不起作用

编辑:我的 div 和我的span 没有固定的高度,这取决于内容,我把它固定在小提琴上只是为了给你看

I have a div containing a span and I want the span to vertically and horizontally align to the center of my div.

Here's the fiddle : http://jsfiddle.net/RhNc2/1/

I've try margin:auto on the span and the vertical-align on the div, but it's not working

EDIT : My div and my span don't have a fixed height, it depends of the content, i've put it fixed on the fiddle just to show you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

牵你的手,一向走下去 2024-12-21 23:56:41

将其添加到 div CSS:

display:table-cell; text-align:center

工作小提琴在这里: http://jsfiddle.net/sdoking/DCT85/

CSS:

#myDiv {
border:1px solid black;
height:50px;
width:200px;
vertical-align:middle;
display:table-cell; 
text-align:center
}

#mySpan {
width:100%;
border:thin blue solid
}

边框是为了清晰起见:)

Add this to the div CSS:

display:table-cell; text-align:center

working fiddle is here: http://jsfiddle.net/sdoking/DCT85/

CSS:

#myDiv {
border:1px solid black;
height:50px;
width:200px;
vertical-align:middle;
display:table-cell; 
text-align:center
}

#mySpan {
width:100%;
border:thin blue solid
}

Borders are for clarity :)

酒儿 2024-12-21 23:56:41

垂直对齐是一件棘手的事情,我不知道是否有一种经过验证的方法。过去几年最可靠的技术是使用 CSS 表格布局。这种方法的唯一缺点是它可能不适用于过时的浏览器。不过,根据我的经验,这可能是最好的整体解决方案。请参阅下面的示例:

<style type="text/css">
    #container {    
        display:table;    
        border-collapse:collapse;  
        height:200px;  
        width:100%;
        border:1px solid #000;
    }         
    #layout {    
        display:table-row;   
    }           
    #content {    
        display:table-cell;  
        text-align:center; 
        vertical-align:middle;    
    }           
</style>

<div id="container">    
    <div id="layout">    
        <div id="content"> 
            Hello world! 
        </div>     
    </div>   
</div> 

这是一个 jsFiddle: http://jsfiddle.net/aGKfd/2/

有另一种技术,但它不如上述技术那么万无一失。它涉及两个容器,外部容器的位置设置为相对,内部容器的位置设置为绝对。在内部容器上使用绝对定位,您可以接近,但需要一些调整才能使其恰到好处:

<style type="text/css">
    #vertical{ 
        position:absolute; 
        top:50%;     
        left:0; 
        width:100%; 
        text-align:center;
    } 
    #container {
        position:relative;
        height:200px;
        border:1px solid #000;
    }
</style>         
<div id="container"> 
    <div id="vertical"> 
        Hello world! 
    </div>               
</div> 

这是一个 jsFiddle: http ://jsfiddle.net/6SWPe/

Vertical alignment is a tricky business, and I don't know if there's one tried-and-true way. The most reliable technique available in the last couple of years is to use a CSS table layout. The only downside to this approach is that it may not work on outdated browsers. Still, in my experience this is probably the best overall solution. See my example below:

<style type="text/css">
    #container {    
        display:table;    
        border-collapse:collapse;  
        height:200px;  
        width:100%;
        border:1px solid #000;
    }         
    #layout {    
        display:table-row;   
    }           
    #content {    
        display:table-cell;  
        text-align:center; 
        vertical-align:middle;    
    }           
</style>

<div id="container">    
    <div id="layout">    
        <div id="content"> 
            Hello world! 
        </div>     
    </div>   
</div> 

Here's a jsFiddle: http://jsfiddle.net/aGKfd/2/

There's another technique, but it's not as foolproof as the above technique. It involves two containers, with the outer container's position set to relative and the inner set to absolute. Using absolute positioning on the inner container you can get close, but it requires some tweaking to get it just right:

<style type="text/css">
    #vertical{ 
        position:absolute; 
        top:50%;     
        left:0; 
        width:100%; 
        text-align:center;
    } 
    #container {
        position:relative;
        height:200px;
        border:1px solid #000;
    }
</style>         
<div id="container"> 
    <div id="vertical"> 
        Hello world! 
    </div>               
</div> 

Here's a jsFiddle: http://jsfiddle.net/6SWPe/

昔日梦未散 2024-12-21 23:56:41

使用行高=高度:
http://jsfiddle.net/RhNc2/8/

use line-height = height:
http://jsfiddle.net/RhNc2/8/

冰魂雪魄 2024-12-21 23:56:41

您也可以将这些样式应用于包含的

。不过,line-height 解决方案假设您只需要居中一行文本。

#myDiv{
    border:1px solid black;
    height:50px;
    width:200px;
    text-align:center;
    line-height:50px;
}

You can also just apply these styles to the containing <div>. The line-height solution assumes you only need one line of text to be centered though.

#myDiv{
    border:1px solid black;
    height:50px;
    width:200px;
    text-align:center;
    line-height:50px;
}
Hello爱情风 2024-12-21 23:56:41

这是

#myDiv{
    border:1px solid black;
    height:50px;
    width:200px;
}

#mySpan{
    display:block;
    text-align:center;
    line-height:50px;
}

jsFiddle: http://jsfiddle.net/Simo990/RhNc2/9/

编辑:由于您的 div 和 span 高度取决于内容,所以我的解决方案将不起作用,因为它需要固定高度并且只有一行文本。只需使用 position:absolute 寻找解决方案即可。

Here it is

#myDiv{
    border:1px solid black;
    height:50px;
    width:200px;
}

#mySpan{
    display:block;
    text-align:center;
    line-height:50px;
}

And the jsFiddle: http://jsfiddle.net/Simo990/RhNc2/9/

Edit: since your div and span height depends of the content, my solution will not work, because it needs fixed height and only one row of text. Just look for a solution with position:absolute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文