居中的响应式文本

Posted

技术标签:

【中文标题】居中的响应式文本【英文标题】:Centered responsive text 【发布时间】:2014-10-16 07:05:18 【问题描述】:

我在这里有一个 jsfiddle - http://jsfiddle.net/kw83kLmo/

这只是我需要在窗口中居中的一段文本。

文本需要设置宽度,因为我不希望它是容器的整个宽度。

当窗口变小时,文本需要保持在中心但变窄。

在此处的示例中,它保持居中并响应,直到达到 600 像素,然后保持该宽度。

我知道我已经设置了那个宽度,但我这样做是为了让它居中

<div class="container-fluid ">

    <div class="hero">

        <div class="hero_heading text-center">
            <h1>This is a heading This is a heading This is a heading </h1>
        </div>

    </div>

</div>

【问题讨论】:

有什么理由使用绝对定位? 【参考方案1】:

CSS flex 可以在包括 IE 在内的大多数流行浏览器中以兼容的方式为您施展魔法。看看这个JSFiddle

.hero
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-direction: normal;
    -moz-box-direction: normal;
    -webkit-box-orient: horizontal;
    -moz-box-orient: horizontal;
    -webkit-flex-direction: row;
    -ms-flex-direction: row;
    flex-direction: row;
    -webkit-flex-wrap: nowrap;
    -ms-flex-wrap: nowrap;
    flex-wrap: nowrap;
    -webkit-box-pack: center;
    -moz-box-pack: center;
    -webkit-justify-content: center;
    -ms-flex-pack: center;
    justify-content: center;
    -webkit-align-content: stretch;
    -ms-flex-line-pack: stretch;
    align-content: stretch;
    -webkit-box-align: center;
    -moz-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;

    background-image: url(http://placehold.it/800x300);  
    background-size: cover;
    height: 400px;


.hero_heading h1
    border: 1px solid red;
    color: white;
    max-width: 600px;

【讨论】:

【参考方案2】:

更新您的h1 样式,如下所示。

.hero_heading h1 
    border: 1px solid red;
    color: white;
    position: absolute;
    left: 0;
    right: 0;
    margin: 0 auto;
    max-width: 600px;

DEMO

【讨论】:

在这种情况下,您也可以离开绝对位置。我对其进行了测试,但由于我的答案是上面的,所以我将对其发表评论:)【参考方案3】:

我会选择:

.hero_heading
    border: 1px solid red;
    color: white;
    position: absolute;
    width:50%;
    top: 50%;
    -webkit-transform: translate(-50%, -50%);        
    transform: translate(-50%, -50%);

【讨论】:

【参考方案4】:

JSfiddle Demo

我从h1 上取下定位并将其放在包装div 上。

CSS

.hero
  background-image: url(http://placehold.it/800x300);  
  background-size: cover;
  position: relative;
  height: 400px;


.hero_heading 
    border: 1px solid red;
    color: white;
    position: absolute;
    left: 50%;
    bottom: 0;
    -webkit-transform:translateX(-50%);
    transform:translateX(-50%);
    max-width: 600px;

【讨论】:

【参考方案5】:

像这样编辑你的代码:

.hero_heading h1
    border: 1px solid red;
    color: white;
    margin: 0 auto;
    max-width: 600px;
    position: absolute;
    bottom: 0;

Demo

【讨论】:

【参考方案6】:

编辑您的代码

.hero_heading h1
    border: 1px solid red;
    color: white;
    //top: 0; left: 0; bottom: 0; right: 0;
    width: 600px;/*added*/
    max-width:80%;/*to leave spaces around your text on responsive*/
    margin:auto;/*changed*/

除非你需要,否则你不需要定位你的元素来制作它

注意:从 .hero 中删除您的 position:relative;

DEMO

【讨论】:

以上是关于居中的响应式文本的主要内容,如果未能解决你的问题,请参考以下文章

响应式背景中的绝对中心文本

在响应式正方形中垂直对齐文本块

Bootstrap 3 中的响应式 HR 对齐

bootstrap 响应式布局 居中问题

如何垂直居中响应式剪切图像?

在引导响应页面中如何使 div 居中