mirror of
https://github.com/jgthms/bulma.git
synced 2024-11-28 12:24:23 +00:00
359 lines
8.8 KiB
HTML
359 lines
8.8 KiB
HTML
---
|
|
title: Responsive Mixins
|
|
layout: documentation
|
|
doc-tab: utilities
|
|
doc-subtab: responsive-mixins
|
|
fullmain: true
|
|
breadcrumb:
|
|
- home
|
|
- documentation
|
|
- utilities
|
|
- utilities-responsive-mixins
|
|
---
|
|
|
|
<div class="content">
|
|
<p>
|
|
Bulma is <strong>responsive by default</strong>. <a href="{{ site.url}}/overview/responsiveness/">Learn more about Bulma's responsiveness</a>.
|
|
</p>
|
|
</div>
|
|
|
|
{% include elements/anchor.html name="from() and until() mixins" %}
|
|
|
|
<div class="content">
|
|
<p>
|
|
Responsiveness in CSS is based on <strong>media queries</strong> (see <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries" target="_blank">MDN documentation</a>).
|
|
</p>
|
|
|
|
<p>
|
|
Bulma provides <strong>2 useful responsive mixins:</strong>
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
{% 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()" %}
|
|
|
|
<div class="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:
|
|
</p>
|
|
</div>
|
|
|
|
<p class="title is-6">Sass source</p>
|
|
|
|
{% highlight sass %}.my-element {
|
|
background: red;
|
|
|
|
@include from(1280px) {
|
|
background: blue;
|
|
}
|
|
}{% endhighlight %}
|
|
|
|
<p class="title is-6">CSS output</p>
|
|
|
|
{% highlight css %}.my-element {
|
|
background: red;
|
|
}
|
|
|
|
@media screen and (min-width: 1280px) {
|
|
.my-element {
|
|
background: blue;
|
|
}
|
|
}{% endhighlight %}
|
|
|
|
<div class="content">
|
|
<p>
|
|
For screens with a width of 1279px or less, the element's background will be <strong style="color: red;">red</strong>.
|
|
<br>
|
|
For screens 1280px-wide or more, the element's background will be <strong style="color: blue;">blue</strong>.
|
|
</p>
|
|
</div>
|
|
|
|
{% include elements/anchor-bis.html name="until()" %}
|
|
|
|
<div class="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>
|
|
|
|
<p class="title is-6">Sass source</p>
|
|
|
|
{% highlight sass %}$breakpoint: 1280px;
|
|
|
|
.my-element {
|
|
@include until($breakpoint) {
|
|
background: green;
|
|
}
|
|
|
|
@include from($breakpoint) {
|
|
background: orange;
|
|
}
|
|
}{% endhighlight %}
|
|
|
|
<p class="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 %}
|
|
|
|
<div class="content">
|
|
<p>
|
|
For screens with a width of 1279px or less, the element's background will be <strong style="color: green;">green</strong>.
|
|
<br>
|
|
For screens 1280px-wide or more, the element's background will be <strong style="color: orange;">orange</strong>.
|
|
</p>
|
|
</div>
|
|
|
|
{% include elements/anchor.html name="Named mixins" %}
|
|
|
|
<div class="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>
|
|
|
|
<div class="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>
|
|
|
|
<div class="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>:
|
|
</p>
|
|
</div>
|
|
|
|
{% capture inc-mobile %}
|
|
@include mobile {
|
|
// Styles applied
|
|
// below $tablet
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-tablet %}
|
|
@include tablet {
|
|
// Styles applied
|
|
// above $tablet
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-tablet-only %}
|
|
@include tablet-only {
|
|
// Styles applied
|
|
// between $tablet
|
|
// and $desktop
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-desktop-only %}
|
|
@include desktop-only {
|
|
// Styles applied
|
|
// between $desktop
|
|
// and $widescreen
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-widescreen-only %}
|
|
@include widescreen-only {
|
|
// Styles applied
|
|
// between $widescreen
|
|
// and $fullhd
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-desktop %}
|
|
@include desktop {
|
|
// Styles applied
|
|
// above $desktop
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-widescreen %}
|
|
@include widescreen {
|
|
// Styles applied
|
|
// above $widescreen
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-fullhd %}
|
|
@include fullhd {
|
|
// Styles applied
|
|
// above $fullhd
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-touch %}
|
|
@include touch {
|
|
// Styles applied
|
|
// below $desktop
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-until-widescreen %}
|
|
@include until-widescreen {
|
|
// Styles applied
|
|
// below $widescreen
|
|
}
|
|
{% endcapture %}
|
|
|
|
{% capture inc-until-fullhd %}
|
|
@include until {
|
|
// Styles applied
|
|
// below $fullhd
|
|
}
|
|
{% endcapture %}
|
|
|
|
<div class="table-container">
|
|
<table class="table is-bordered">
|
|
<thead>
|
|
<tr>
|
|
{% for breakpoint_hash in site.data.breakpoints %}
|
|
{% assign breakpoint = breakpoint_hash[1] %}
|
|
<th style="width: 20%;">
|
|
{{ breakpoint.name }}<br>
|
|
{% if breakpoint.id == 'mobile' %}
|
|
Up to <code>{{ breakpoint.to }}px</code>
|
|
{% elsif breakpoint.id == 'fullhd' %}
|
|
<code>{{ breakpoint.from }}px</code> and above
|
|
{% else %}
|
|
Between <code>{{ breakpoint.from }}px</code> and <code>{{ breakpoint.to }}px</code>
|
|
{% endif %}
|
|
</th>
|
|
{% endfor %}
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
{% highlight sass %}{{ inc-mobile }}{% endhighlight %}
|
|
</td>
|
|
<td colspan="4">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p class="notification">-</p>
|
|
</td>
|
|
<td colspan="4">
|
|
{% highlight sass %}{{ inc-tablet }}{% endhighlight %}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
<td colspan="3">
|
|
{% highlight sass %}{{ inc-desktop }}{% endhighlight %}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
<td colspan="2">
|
|
{% highlight sass %}{{ inc-widescreen }}{% endhighlight %}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="4">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
<td>
|
|
{% highlight sass %}{{ inc-fullhd }}{% endhighlight %}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p class="notification">-</p>
|
|
</td>
|
|
<td>
|
|
{% highlight sass %}{{ inc-tablet-only }}{% endhighlight %}
|
|
</td>
|
|
<td colspan="3">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
<td>
|
|
{% highlight sass %}{{ inc-desktop-only }}{% endhighlight %}
|
|
</td>
|
|
<td colspan="2">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
<td>
|
|
{% highlight sass %}{{ inc-widescreen-only }}{% endhighlight %}
|
|
</td>
|
|
<td>
|
|
<p class="notification">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
{% highlight sass %}{{ inc-touch }}{% endhighlight %}
|
|
</td>
|
|
<td colspan="3">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">
|
|
{% highlight sass %}{{ inc-until-widescreen }}{% endhighlight %}
|
|
</td>
|
|
<td colspan="2">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="4">
|
|
{% highlight sass %}{{ inc-until-fullhd }}{% endhighlight %}
|
|
</td>
|
|
<td colspan="1">
|
|
<p class="notification">-</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
{% assign or_link = site.data.links.by_id['overview-responsiveness'] %}
|
|
|
|
<div class="content">
|
|
<p>
|
|
Learn more about <a href="{{ site.url }}{{ or_link.path }}">Bulma responsiveness</a>.
|
|
</p>
|
|
</div>
|