Bootstrap 3 class visible-lg moves span to a new line

css, twitter-bootstrap, twitter-bootstrap-3

Solution

Update for Bootstrap v3.2.0

This is now natively solved in Bootstrap v3.2.0 with this commit

According to the responsive classes documentation:

As of v3.2.0, the .visible-- classes for each breakpoint come in three variations, one for each CSS display property value listed below:

Group of classes          | CSS display
 .visible-*-block         |  display: block;
 .visible-*-inline        |  display: inline;
 .visible-*-inline-block  |  display: inline-block;

So in your case, you'd want to use:

<p>Device is:<span class="visible-lg-inline">Large</span></p>

Original for Bootstrap v3.0

In Bootstrap 3.0, all visible and hidden responsive classes use `display:block !important;` You'll have to override that if you want to display elements inline:

@media (min-width: 1200px) {
  span.visible-lg {
    display: inline !important
  }
}

Working Demo in jsFiddle

For a more robust approach, here is a library that adds extension classes for each display type

Other Instances

Asked about on Stackoverflow:

- Bootstrap3 .visible-* .hidden-* display inline

Reported in Bootstrap Issues:

- #4929 - Responsive utility classes may cause unexpected wrapping

- #7808 - Using display inherit in responsive utilities causes elements to be wrongly displayed

- #8500 - responsive class usage with inline element

- #8869 - responsive .hidden-* classes change from display block to inline-block

- #10263 - visible-xs makes display=block even for inline elements

Problem

How do I make class `visible-lg` not to move the span to a new line? The following HTML renders as one line: ``` <p>Device is:<span>Unknown</span></p> ``` However, the following HTML renders `Large` on the line below `Device is`: ``` <p>Device is:<span class="visible-lg">Large</span></p> ```

Original source

Related problems