以响应方式更改文本对齐(使用Bootstrap 3)?


69

我正在为博客使用Bootstrap 3。在我的自定义CSS中,我最近添加了

body {
    text-align: justify;
    ...
}

我喜欢更大屏幕(平板电脑,台式机)上的结果。但是在小屏幕(电话)上,由于列较窄加上我的博客偶尔使用,所以合理文本无法正常工作long-ish-technical-terms-like-this

我可以text-align: justify 在较大的屏幕上进行响应吗?

是否可以仅通过CSS来做到这一点,还是需要编写一些自定义JS来做到这一点?


1
实际的问题在哪里–只需将这种格式放入适当的媒体查询中,就可以完成……
CBroe

问题仅仅是我自己对“媒体查询”的无知-我不知道CSS是否/如何支持条件查询。
格雷格·亨德肖特2013年

这不是Bootstrap 3的解决方案,但Bootstrap 4
Pat Migliaccio

Answers:


37

是的,像这样(将您的断点设置为48em):

body{
    text-align: left;
}
@media screen and (min-width: 48em){
    body{
        text-align: justify;
    }
}

如果视口宽度大于48em,则第二个规则将覆盖第一个规则。


121

尽管提供的解决方案绝对正确,但我认为还有另一种可能很有趣的方法。Bootstrap不提供依赖于窗口大小的对齐类,但是您可以定义它们:

.text-justify-xs {
    text-align: justify;
}

/* Small devices (tablets, 768px and up) */
@media (min-width: 768px) {
    .text-justify-sm {
        text-align: justify;
    }
}

/* Medium devices (desktops, 992px and up) */
@media (min-width: 992px) {
    .text-justify-md {
        text-align: justify;
    }
}

/* Large devices (large desktops, 1200px and up) */
@media (min-width: 1200px) {
    .text-justify-lg {
        text-align: justify;
    }
}

然后,您可以将此类添加到html元素中:

<body class="text-justify-lg">

您还可以为text-left-xx和text-right-xx创建CSS规则。


1
我喜欢这个更深入的例子和解释。
里克·格洛斯

如此有趣的解决方案,赞!
Milad Rahimi 2015年

2
应该是text-justify-xs还是text-xs-justify?我可能是错的,但是我给人的印象是Bootstrap用标准命名类<group>-[<size>-]<modifier>
GreenRaccoon23 2016年

@ GreenRaccoon23请参阅Fred K的解决方案
Pat Migliaccio

79

有关更完整的解决方案,请尝试以下操作:

/*
 * Responsive text aligning
 * http://ohryan.ca/2014/08/14/set-responsive-text-alignment-bootstrap-3/
 */
.text-xs-left { text-align: left; }
.text-xs-right { text-align: right; }
.text-xs-center { text-align: center; }
.text-xs-justify { text-align: justify; }

@media (min-width: @screen-sm-min) {
  .text-sm-left { text-align: left; }
  .text-sm-right { text-align: right; }
  .text-sm-center { text-align: center; }
  .text-sm-justify { text-align: justify; }
}

@media (min-width: @screen-md-min) {
  .text-md-left { text-align: left; }
  .text-md-right { text-align: right; }
  .text-md-center { text-align: center; }
  .text-md-justify { text-align: justify; }
}

@media (min-width: @screen-lg-min) {
  .text-lg-left { text-align: left; }
  .text-lg-right { text-align: right; }
  .text-lg-center { text-align: center; }
  .text-lg-justify { text-align: justify; }
}

1
我将此答案与来自Alberdigital解决方案中媒体查询的SASS变量结合在一起。此解决方案中的博客文章链接也显示了SASS中的等效内容。
Pat Migliaccio

值得注意的是,这不是有效的CSS代码;这是少。
NinoŠkopac'17

如果您使用SASS / SCSS,只需将@ screen-XX-min更改为$ screen-XX-min,如果您在
gulp

6

现场演示

只需调整窗口大小,您就会看到text-align:left;如果窗口大小小于,它将如何切换400px

<style>
   @media screen and (min-width: 400px) {
      .text1 {
         text-align: justify;
      }
   }

   p {
      text-align: left;
   }
</style>

<p class="text1">vlédmjd fsdi dlin dsilncds ids nic dsil dsinc dlicidn lcdsn cildcndsli c dsilcdn isa slia sanil sali as as nds nds lcdsicd insd id nid ndi cas sal sa insalic lic sail il dnsailcn lic il eilwnvrur vnrei svfd nvfn vk in f,vn y,h ky,vnkivn iesnvfilsdnhvidsnvdslin dlindilc  ilc lisn asiln sliac lasnl ciasnc in li nsailcn salin ilanclis cliasnc lincls iandlisan dlias casilcn alincalis cli ad lias naslicn aslinc dliasnc slince ineali dliasnc liaslci nasdlicn laincilancfrelvnln dsil cndlic ndlicna linasdlic nsalinc lias</p>

6

我喜欢Alberdigital和Fred K的答案-前者提供了可在样式表中使用的有效CSS代码,后者则更为详尽。

这是两全其美。

/*
 * Responsive text aligning
 * http://ohryan.ca/2014/08/14/set-responsive-text-alignment-bootstrap-3/
 *
 * EDITED by Nino Škopac for StackOverflow (https://stackoverflow.com/q/18602121/1325575)
 */
.text-xs-left { text-align: left; }
.text-xs-right { text-align: right; }
.text-xs-center { text-align: center; }
.text-xs-justify { text-align: justify; }

@media (min-width: 768px) {
    .text-sm-left { text-align: left; }
    .text-sm-right { text-align: right; }
    .text-sm-center { text-align: center; }
    .text-sm-justify { text-align: justify; }
}

@media (min-width: 992px) {
    .text-md-left { text-align: left; }
    .text-md-right { text-align: right; }
    .text-md-center { text-align: center; }
    .text-md-justify { text-align: justify; }
}

@media (min-width: 1200px) {
    .text-lg-left { text-align: left; }
    .text-lg-right { text-align: right; }
    .text-lg-center { text-align: center; }
    .text-lg-justify { text-align: justify; }
}

2

就我而言,我不喜欢过度使用媒体查询。因此,有时我会以两种方式重复内容。一个自定义对齐,另一个默认对齐。一些代码:

<div class="col-md-6 visible-xs hidden-sm hidden-md hidden-lg">
    <%-- Some content here --%>
</div>
 <div class="col-md-6 text-right hidden-xs">
    <%-- Same content here --%>
</div>

在某些情况下,这可能很有用,具体取决于您在做什么,但是请记住,重复大量HTML内容不是一个好主意,此解决方案仅适用于小情况。


这是一个坏主意!
LuizGonçalves18年

1
@LuizGonçalves,为什么?我们批评我,我会提到原因。
Mohammed Noureldin

为此,您必须两次传递内容!这对SEO不利,并增加了页面大小,从而迫使服务器两次提供内容。您可以通过许多更好的方式来实现,就像我们的朋友在其他答案中解释的那样。
LuizGonçalves18年

1
是的,这不是最好的解决方案。但是在某些情况下我可以工作。取决于您在做什么。我正在编辑以澄清这一点。
塞萨尔·莱昂

1

您是否尝试过col-auto和mr-auto?进一步的信息:边距实用程序 在v4中移至flexbox时,您可以使用边距实用程序(如.mr-auto)强制将同级列彼此分开。

<div class="container">
  <div class="row">
     <div class="col-auto mr-auto">
        <p>Blah</p>
     </div>
     <div class="col-auto">
        <p>Blah</p> 
    </div>
  </div>
  </div>


-6

在引导中提供所有的“文字对齐”类:只需使用align-lg-leftalign-xs-center等...


据我所知,这不是Bootstrap的功能。
2016年

我实际上已经在寻找align-lg-left最新的引导CSS文件,但是它不存在。
NinoŠkopac17年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.