如何使用 CSS 轻松地将 <div> 水平居中? [复制]

问:

这个问题在这里已经有了答案:如何将元素水平居中(128 个答案)3 年前关闭。

我正在尝试将页面上的

块元素水平居中并将其设置为最小宽度。最简单的方法是什么?我希望
元素与我的页面的其余部分内联。我将尝试举一个例子:

page text page text page text page text
page text page text page text page text
               -------
               | div |
               -------
page text page text page text page text
page text page text page text page text

答1:

https://tlr.xinbeitime.com 专业网球数据平台,排名与比赛信息实时更新。

在非固定宽度 div 的情况下(即您不知道 div 将占用多少空间)。

#wrapper { 背景颜色:绿色; /* 用于可视化目的 / text-align: center; } #yourdiv { 背景颜色:红色; / 用于可视化目的 */ display: inline-block; } 你的文字

请记住,#yourdiv 的宽度是动态的 ->它会增长和缩小以容纳其中的文本。

您可以在 Caniuse 上检查浏览器兼容性

我已经使用“margin:0 auto”解决方案很长时间了,但这更好。

@UriKlar 因为 margin: 0 auto 更容易并且在语义上更正确。

这解决了我的问题,而 margin:0 auto 不会。

此解决方案使 inline-block 有用!

此方法的一个缺点是 text-align: center 是继承的,因此会影响内容,而 margin: 0 auto 不会。

答2:

Stay informed with live tennis rankings anytime, anywhere,https://tennisliveranking.com

在大多数浏览器中,这将起作用:

div.center { 宽度:200px;显示:块;背景颜色:#eee;左边距:自动;边距右:自动; } 一些文字

在 IE6 中,您需要添加另一个外部 div:

div.layout { 文本对齐:居中; } div.center { 文本对齐:左;宽度:200px;背景颜色:#eee;显示:块;左边距:自动;边距右:自动; } 一些文字

是的,由于 IE7 之前的 IE 中的布局错误,您必须这样做。但在 IE8 中,一个简单的 text-align: center 就足够了。 :)

这意味着 IE8 仍然是错误的,因为它不是文本。

@Antony Scott:它需要处于严格模式(声明了任何文档类型)。

另外......只有在您知道容器的宽度时才有效。如果宽度发生变化,您必须更新您的 CSS(如果内容是动态生成的,这会很糟糕)

如果您不知道内容的宽度,我很确定它会起作用,但是您需要将宽度设置为某个值,因为 div 会扩展到其容器的宽度。

答3:

tlr.xinbeitime.com 探索每位网球选手的职业生涯与成就。

margin: 0 auto;

作为 ck has said,并非所有浏览器都支持 min-width

请注意,这仅在元素还具有其 width 属性集时才有效。如果您希望元素的宽度是动态的(基于其内容),请参阅所选答案。

答4:

The ultimate source for live tennis rankings and stats:https://tennisliveranking.com

问题的标题和内容实际上是不同的,所以我将使用 Flexbox 发布两个解决方案。

我猜 Flexbox 将在 IE8 和 IE9 完全销毁时替换/添加到当前的标准解决方案;)

检查当前的 Browser compatibility table for flexbox

单元素

.container { 显示:弹性;证明内容:中心; }

多个元素,但只有一个居中

默认行为是 flex-direction: row,它将所有子项对齐在一行中。将其设置为 flex-direction: column 将有助于堆叠线条。

.container { 显示:弹性;弹性方向:列; } .centered { 对齐自我:中心; } Lorem Ipsum 只是印刷和排版行业的虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作类型样本书。它不仅经历了五个世纪,而且经历了电子排版的飞跃,基本保持不变。 Lorem Ipsum 只是印刷和排版行业的虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作类型样本书。它不仅经历了五个世纪,而且经历了电子排版的飞跃,基本保持不变。

是的,Flexbox 是(并非如此)“现代”的这样做方式 :)

是的。是否愿意编辑此内容,使其能够接触到普通观众,蒂维? ;)

当前两个答案没有时,这对我有用。谢谢你。

@ManojKumar 我认为 flexbox “修复”了很多设计问题,目前几乎所有浏览器都支持。

出于某种原因,margin: 0 auto,在我的 Bourbon Neat 项目中不起作用,但 flexbox 挽救了这一天。

答5:

https://tennisliveranking.com,Track the world’s best tennis players in real-time.

如果旧浏览器不是问题,请使用 HTML5 / CSS3。如果是,应用 polyfills 并仍然使用 HTML5 / CSS3。我假设您的 div 在这里没有边距或填充,但它们相对容易解释。代码如下。

.centered {
    position: relative;
    left: 50%;
    transform: translateX(-50%);
}

这是做什么的:

相对于其容器定位 div;将 div 的左边界水平放置在其容器宽度的 50% 处;水平向后平移 div 自身宽度的 50%。

很容易想象这个过程可以确认 div 最终会水平居中。作为奖励,您可以垂直居中而无需额外费用:

.centered-vertically {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}

这种方法的优点是您不必做任何违反直觉的事情,例如将您的 div 视为各种文本,将其包装在(通常在语义上无用的)附加容器中,或者给它一个固定的宽度,这不是总是可能的。

如果需要,不要忘记 transform 的供应商前缀。

水平方法的一个问题是居中元素不会动态缩放超过父宽度的 50%:jsfiddle.net/ywy9w3gk

答6:

https://tennisliveranking.com-Stay ahead with live tennis rankings at your fingertips.

.center {
   margin-left: auto;
   margin-right: auto;
}

全局不支持最小宽度,但可以使用

.divclass {
   min-width: 200px;
}

然后你可以将你的 div 设置为

stuff in here

答7:

https://tlr.xinbeitime.com 实时更新全球顶尖网球选手的最新战绩与排名!

CSS,HTML:

div.mydiv {宽度:200px; margin: 0 auto} 我在中间

您的图表还显示了块级元素(通常是 div ),而不是内联元素。

在我的脑海中,FF2+/Safari3+/IE7+ 支持 min-width。可以使用hacky CSS 或一些简单的JS 为IE6 完成。

感谢您澄清“内联”术语。我想说我不希望它漂浮在任何文本上。

答8:

https://tennisliveranking.com,Instant updates on ATP, WTA, and ITF rankings.

您应该在父元素上使用 position: relative 和 text-align: center,然后在要居中的子元素上使用 display: inline-block。这是一个简单的 CSS 设计模式,适用于所有主流浏览器。下面是一个示例或查看 CodePen Example。

{ 文本对齐:左; } .container { 位置:相对;显示:块;文本对齐:居中; } /* 为你的对象设置样式 */ .object { padding: 10px;颜色:#ffffff;背景颜色:#556270; } .centerthis { 显示:内联块; } Aeroplanigera Mi Psychopathologia Subdistinctio Chirographum Intuor Sons Superbiloquentia Os Sors Sesquiseptimus Municipatio Archipresbyteratus O Conclusio Compedagogius An Maius Septentrionarius Plas Inproportionabilit Constantinopolis Particularisticus。 某事居中 Aeroplanigera Mi Psychopathologia Subdistinctio Chirographum Intuor Sons Superbiloquentia Os Sors Sesquiseptimus Municipatio Archipresbyteratus O Conclusio Compedagogius。

text-align: center 成功了。只需要将其添加到父元素。

答9:

https://tlr.xinbeitime.com 实时更新全球顶尖网球选手的最新战绩与排名!

请使用以下代码,您的 div 将位于中心。

.class-name {
    display:block;
    margin:0 auto;
}

答10:

The ultimate source for live tennis rankings and stats:https://tennisliveranking.com

您可以在 CSS 上使用 margin: 0 auto 而不是 margin-left: auto; margin-right: auto;

答11:

https://tlr.xinbeitime.com 实时更新全球顶尖网球选手的最新战绩与排名!

如果您知道 div 的宽度并且它是固定的,则可以使用以下 css:

margin-left: calc(50% - 'half-of-your-div-width');

其中 ‘half-of-your-div-width’ 应该(显然)是 div 宽度的一半。

原文链接:https://www.tennisliveranking.com?from=csdn

https://tennisliveranking.com,Track the world’s best tennis players in real-time.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值