{% include elements/anchor.html name="from() and until() mixins" %}
<divclass="content">
<p>
Responsiveness in CSS is based on <strong>media queries</strong> (see <ahref="https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries"target="_blank">MDN documentation</a>).
{% include elements/snippet-inline.html content="@mixin from($breakpoint)" %} to target devices with a screen <em>wider</em> than or equal to the breakpoint
</li>
<li>
{% include elements/snippet-inline.html content="@mixin until($breakpoint)" %} to target devices with a screen <em>narrower</em> than the breakpoint
</li>
</ul>
<p>Their usage is very simple:</p>
</div>
{% include elements/anchor-bis.html name="from()" %}
<divclass="content">
<p>
The <code>from()</code> mixin has a single parameter which sets the <strong>screen width</strong> from which the styles it contains will be applied:
For screens with a width of 1279px or less, the element's background will be <strongstyle="color: red;">red</strong>.
<br>
For screens 1280px-wide or more, the element's background will be <strongstyle="color: blue;">blue</strong>.
</p>
</div>
{% include elements/anchor-bis.html name="until()" %}
<divclass="content">
<p>
The <code>until()</code> mixin has a single parameter which sets the <strong>screen width (minus <code>1px</code>)</strong> until which the styles it contains will be applied.
</p>
<p>
This means that if you set a value of <code>1280px</code>, the styles will be applied on a screen width of <code>1279px</code> but <strong>not</strong> on a screen width of <code>1280px</code>.
</p>
<p>
The reason for this <strong>1px offset</strong> is to allow you to use both <code>from()</code> and <code>until()</code> with the <strong>same breakpoint value</strong>. This leaves <strong>no gap</strong> between the 2 sets of rules.
</p>
</div>
<pclass="title is-6">Sass source</p>
{% highlight sass %}$breakpoint: 1280px;
.my-element {
@include until($breakpoint) {
background: green;
}
@include from($breakpoint) {
background: orange;
}
}{% endhighlight %}
<pclass="title is-6">CSS output</p>
{% highlight css %}@media screen and (max-width: 1279px) {
.my-element {
background: green;
}
}
@media screen and (min-width: 1280px) {
.my-element {
background: orange;
}
}{% endhighlight %}
<divclass="content">
<p>
For screens with a width of 1279px or less, the element's background will be <strongstyle="color: green;">green</strong>.
<br>
For screens 1280px-wide or more, the element's background will be <strongstyle="color: orange;">orange</strong>.
</p>
</div>
{% include elements/anchor.html name="Named mixins" %}
<divclass="content">
<p>
By having <strong>4 breakpoints</strong> and supporting <strong>5 screen sizes</strong>, Bulma can support a lot of different setups.
</p>
</div>
<divclass="content">
While you could use the mixins {% include elements/snippet-inline.html content="@include from()" %} and {% include elements/snippet-inline.html content="@include until()" %}, Bulma provides <strong>quick shortcuts</strong> with <strong>11 named mixins</strong>.
</div>
<divclass="content">
<p>
These <strong>responsive mixins</strong> are named after the screen sizes and breakpoints used in Bulma, so that you can use them to create a <strong>responsive designs</strong>: