WordPress/wp-content/themes/twentynineteen/sass/blocks/_blocks.scss

1056 lines
20 KiB
SCSS

/* !Block styles */
// Default block margin and alignment rules.
// These are replicated inside of the Group block
// so that child blocks in there appear the same way.
.entry .entry-content > *,
.entry .entry-summary > *,
.entry .entry-summary > .wp-block-group > .wp-block-group__inner-container > *,
.entry .entry-content > .wp-block-group > .wp-block-group__inner-container > * {
margin: 32px 0;
max-width: 100%;
@include postContentMaxWidth();
@include media(tablet) {
margin: 32px 0;
}
&.alignwide {
margin-left: auto;
margin-right: auto;
clear: both;
@include media(tablet) {
width: 100%;
max-width: 100%;
}
}
&.alignfull {
position: relative;
left: -#{$size__spacing-unit };
width: calc( 100% + (2 * #{$size__spacing-unit}));
max-width: calc( 100% + (2 * #{$size__spacing-unit}));
clear: both;
@include media(tablet) {
margin-top: calc(2 * #{$size__spacing-unit});
margin-bottom: calc(2 * #{$size__spacing-unit});
left: calc( -12.5% - 75px );
width: calc( 125% + 150px );
max-width: calc( 125% + 150px );
}
}
&.alignleft {
/*rtl:ignore*/
float: left;
max-width: calc(5 * (100vw / 12));
margin-top: 0;
margin-left: 0;
/*rtl:ignore*/
margin-right: $size__spacing-unit;
@include media(tablet) {
max-width: calc(4 * (100vw / 12));
/*rtl:ignore*/
margin-right: calc(2 * #{$size__spacing-unit});
}
}
&.alignright {
/*rtl:ignore*/
float: right;
max-width: calc(5 * (100vw / 12));
margin-top: 0;
margin-right: 0;
/*rtl:ignore*/
margin-left: $size__spacing-unit;
@include media(tablet) {
max-width: calc(4 * (100vw / 12));
margin-right: 0;
/*rtl:ignore*/
margin-left: calc(2 * #{$size__spacing-unit});
}
}
&.aligncenter {
margin-left: auto;
margin-right: auto;
@include postContentMaxWidth();
@include media(tablet) {
margin-left: 0;
margin-right: 0;
}
}
}
.entry .entry-content > *,
.entry .entry-summary > * {
> *:first-child {
margin-top: 0;
}
> *:last-child {
margin-bottom: 0;
}
}
/*
* Unset nested content selector styles
* - Prevents layout styles from cascading too deeply
* - helps with plugin compatibility
*/
.entry .entry-content,
.entry .entry-summary {
.entry-content,
.entry-summary,
.entry {
margin: inherit;
max-width: inherit;
padding: inherit;
@include media(tablet) {
margin: inherit;
max-width: inherit;
padding: inherit;
}
}
}
.entry .entry-content {
//! Paragraphs
p.has-background {
padding: 20px 30px;
}
//! Audio
.wp-block-audio {
width: 100%;
audio {
width: 100%;
}
&.alignleft audio,
&.alignright audio {
max-width: (0.33 * $mobile_width);
@include media(tablet) {
max-width: (0.5 * $tablet_width);
}
@include media(wide) {
max-width: (0.33 * $desktop_width);
}
}
}
//! Video
.wp-block-video {
video {
width: 100%;
}
}
//! Buttons
.wp-block-buttons {
line-height: $font__line-height-heading;
}
.wp-block-button {
.wp-block-button__link {
@include button-transition;
border: none;
font-size: $font__size-sm;
@include font-family( $font__heading );
box-sizing: border-box;
font-weight: bold;
text-decoration: none;
padding: ($size__spacing-unit * .76) $size__spacing-unit;
outline: none;
&:not(.has-background) {
background-color: $color__background-button;
}
&:not(.has-text-color) {
color: white;
}
&:hover {
color: white;
background: $color__background-button-hover;
cursor: pointer;
&:not(.has-background) {
background: $color__background-button-hover;
}
}
&:focus {
color: white;
background: $color__background-button-hover;
outline: thin dotted;
outline-offset: -4px;
&:not(.has-background) {
background: $color__background-button-hover;
}
}
}
&:not(.is-style-squared) .wp-block-button__link {
border-radius: 5px;
}
&.is-style-outline .wp-block-button__link,
&.is-style-outline .wp-block-button__link:focus,
&.is-style-outline .wp-block-button__link:active {
@include button-all-transition;
border-width: 2px;
border-style: solid;
&:not(.has-background) {
background: transparent;
}
&:not(.has-text-color) {
color: $color__background-button;
border-color: currentColor;
}
}
&.is-style-outline .wp-block-button__link:hover {
color: white;
border-color: $color__background-button-hover;
&:not(.has-background) {
color: $color__background-button-hover;
}
}
}
//! Latest posts, categories, archives
.wp-block-archives,
.wp-block-categories,
.wp-block-latest-posts {
padding: 0;
list-style: none;
li > a {
@include font-family( $font__heading );
font-size: calc(#{$font__size_base} * #{$font__size-ratio});
font-weight: bold;
line-height: $font__line-height-heading;
text-decoration: none;
}
}
.wp-block-archives,
.wp-block-categories {
&.aligncenter {
text-align: center;
}
}
//! Latest categories
.wp-block-categories {
ul {
padding-top: ( .75 * $size__spacing-unit );
}
li ul {
list-style: none;
padding-left: 0;
}
@include nestedSubMenuPadding();
}
//! Latest posts
.wp-block-latest-posts {
.wp-block-latest-posts__post-date {
@include font-family( $font__heading );
font-size: $font__size-xs;
color: $color__text-light;
line-height: 1.2;
}
.wp-block-latest-posts__post-full-content,
.wp-block-latest-posts__post-excerpt {
margin-top: $size__spacing-unit;
margin-bottom: $size__spacing-unit;
}
li {
padding-bottom: ( .5 * $size__spacing-unit );
&.menu-item-has-children,
&:last-child {
padding-bottom: 0;
}
:not(:last-child) .wp-block-latest-posts__post-excerpt {
padding-bottom: ( .5 * $size__spacing-unit );
}
}
&.is-grid li {
border-top: 2px solid $color__border;
padding-top: (1 * $size__spacing-unit);
margin-bottom: (2 * $size__spacing-unit);
a {
&:after {
content: '';
}
}
&:last-child {
margin-bottom: auto;
a:after {
content: '';
}
}
}
}
//! Latest preformatted text
.wp-block-preformatted {
font-size: $font__size-xs;
line-height: 1.8;
padding: $size__spacing-unit;
}
//! Verse
.wp-block-verse {
@include font-family( $font__body );
font-size: $font__size_base;
line-height: 1.8;
}
//! Paragraphs
.has-drop-cap {
&:not(:focus):first-letter {
@include font-family( $font__heading );
font-size: $font__size-xxxl;
line-height: 1;
font-weight: bold;
margin: 0 0.25em 0 0;
@-moz-document url-prefix() {
& {
margin-top: 0.2em;
}
}
}
}
//! Pullquote
.wp-block-pullquote {
color: $color__text-main;
border-color: transparent;
border-width: 2px;
padding: $size__spacing-unit;
blockquote {
border: none;
margin-top: calc(4 * #{ $size__spacing-unit});
margin-bottom: calc(4.33 * #{ $size__spacing-unit});
margin-right: 0;
padding-left: 0;
}
p {
font-size: $font__size-lg;
font-style: italic;
line-height: 1.3;
margin-bottom: 0.5em;
margin-top: 0.5em;
em {
font-style: normal;
}
@include media(tablet) {
font-size: $font__size-xl;
}
}
cite {
display: inline-block;
@include font-family( $font__heading );
line-height: 1.6;
text-transform: none;
color: $color__text-light;
/*
* This requires a rem-based font size calculation instead of our normal em-based one,
* because the cite tag sometimes gets wrapped in a p tag. This is equivalent to $font-size_xs.
*/
font-size: calc(1rem / (1.25 * #{$font__size-ratio}));
}
&.alignleft,
&.alignright {
width: 100%;
padding: 0;
blockquote {
margin: $size__spacing-unit 0;
padding: 0;
text-align: left;
max-width: 100%;
p:first-child {
margin-top: 0;
}
}
}
&.is-style-solid-color {
background-color: $color__link;
padding-left: 0;
padding-right: 0;
@include media(tablet) {
padding-left: 10%;
padding-right: 10%;
}
p {
font-size: $font__size-lg;
line-height: 1.3;
margin-bottom: 0.5em;
margin-top: 0.5em;
@include media(tablet) {
font-size: $font__size-xl;
}
}
a {
color: $color__background-body;
}
cite {
color: inherit;
}
blockquote {
max-width: 100%;
color: $color__background-body;
padding-left: 0;
margin-left: $size__spacing-unit;
margin-right: $size__spacing-unit;
&.has-text-color p,
&.has-text-color a,
&.has-primary-color,
&.has-secondary-color,
&.has-dark-gray-color,
&.has-light-gray-color,
&.has-white-color {
color: inherit;
}
@include media(tablet) {
margin-left: 0;
margin-right: 0;
}
}
&.alignright,
&.alignleft {
@include media(tablet) {
padding: $size__spacing-unit calc(2 * #{$size__spacing-unit});
}
}
&.alignfull {
@include media(tablet) {
padding-left: calc(10% + 58px + (2 * #{$size__spacing-unit}));
padding-right: calc(10% + 58px + (2 * #{$size__spacing-unit}));
}
}
}
}
//! Blockquote
.wp-block-quote {
&:not(.is-large),
&:not(.is-style-large) {
border-width: 2px;
border-color: $color__link;
padding-top: 0;
padding-bottom: 0;
}
p {
font-size: 1em;
font-style: normal;
line-height: 1.8;
}
cite {
/*
* This requires a rem-based font size calculation instead of our normal em-based one,
* because the cite tag sometimes gets wrapped in a p tag. This is equivalent to $font-size_xs.
*/
font-size: calc(1rem / (1.25 * #{$font__size-ratio}));
}
&.is-large,
&.is-style-large {
margin: $size__spacing-unit 0;
padding: 0;
border-left: none;
p {
font-size: $font__size-lg;
line-height: 1.4;
font-style: italic;
}
cite,
footer {
/*
* This requires a rem-based font size calculation instead of our normal em-based one,
* because the cite tag sometimes gets wrapped in a p tag. This is equivalent to $font-size_xs.
*/
font-size: calc(1rem / (1.25 * #{$font__size-ratio}));
}
@include media(tablet) {
margin: $size__spacing-unit 0;
padding: $size__spacing-unit 0;
p {
font-size: $font__size-lg;
}
}
}
}
//! Image
.wp-block-image {
max-width: 100%;
img {
display: block;
}
// If an image does not have a left/center/right alignment,
// it's a direct child of .wp-block-image. If it has no other
// alignment added, we want to make sure the image and its
// caption do not extend beyond the width of the text column.
&:not(.alignwide):not(.alignfull) > img,
&:not(.alignwide):not(.alignfull) > a > img,
&:not(.alignwide):not(.alignfull) > img + figcaption,
&:not(.alignwide):not(.alignfull) > a + figcaption {
@include postContentMaxWidth();
}
.aligncenter {
@include postContentMaxWidth();
@include media(tablet) {
margin: 0;
width: $size__site-tablet-content;
img {
margin: 0 auto;
}
}
@include media(desktop) {
width: $size__site-desktop-content;
img {
margin: 0 auto;
}
}
}
&.alignfull img {
width: 100vw;
max-width: calc( 100% + (2 * #{$size__spacing-unit}));
@include media(tablet) {
max-width: calc( 125% + 150px );
margin-left: auto;
margin-right: auto;
}
}
}
//! Cover Image
.wp-block-cover-image,
.wp-block-cover {
position: relative;
min-height: 430px;
padding: $size__spacing-unit;
@include media(tablet) {
padding: $size__spacing-unit 10%;
}
.wp-block-cover-image-text,
.wp-block-cover-text,
h2 {
@include font-family( $font__heading );
font-size: $font__size-lg;
font-weight: bold;
line-height: 1.25;
padding: 0;
color: #fff;
@include media(tablet) {
font-size: $font__size-xl;
max-width: 100%;
}
}
&.alignleft,
&.alignright {
width: 100%;
@include media(tablet) {
padding: $size__spacing-unit calc(2 * #{$size__spacing-unit});
}
}
&.alignfull {
.wp-block-cover-image-text,
.wp-block-cover-text,
h2 {
@include postContentMaxWidth();
}
@include media(tablet) {
padding-left: calc(10% + 58px + (2 * #{$size__spacing-unit}));
padding-right: calc(10% + 58px + (2 * #{$size__spacing-unit}));
.wp-block-cover-image-text,
.wp-block-cover-text,
h2 {
padding: 0;
}
}
}
}
//! Galleries
.wp-block-gallery {
list-style-type: none;
padding-left: 0;
.blocks-gallery-image:last-child,
.blocks-gallery-item:last-child {
margin-bottom: 16px;
}
figcaption a {
color: #fff;
}
}
//! Captions
.wp-block-audio figcaption,
.wp-block-video figcaption,
.wp-block-image figcaption,
.wp-block-gallery .blocks-gallery-image figcaption,
.wp-block-gallery .blocks-gallery-item figcaption {
font-size: $font__size-xs;
@include font-family( $font__heading );
line-height: $font__line-height-pre;
margin: 0;
padding: ( $size__spacing-unit * .5 );
text-align: center;
}
//! Separator
.wp-block-separator,
hr {
background-color: $color__text-light;
border: 0;
height: 2px;
margin-bottom: (2 * $size__spacing-unit);
margin-top: (2 * $size__spacing-unit);
max-width: 2.25em;
text-align: left;
&:not(.wp-block-separator) {
max-width: 100%;
@include postContentMaxWidth();
}
&.is-style-wide {
max-width: 100%;
@include postContentMaxWidth();
}
&.is-style-dots {
max-width: 100%;
@include postContentMaxWidth();
background-color: inherit;
border: inherit;
height: inherit;
text-align: center;
// Only apply the default dot color if there's no separator color specified.
&:not(.has-text-color):not(.has-background) {
color: $color__text-light;
}
&:before {
font-size: $font__size-lg;
letter-spacing: $font__size-sm;
padding-left: $font__size-sm;
}
}
/* Remove duplicate rule-line when a separator
* is followed by an H1, or H2 */
& + h1,
& + h2 {
&:before {
display: none;
}
}
}
//! Twitter Embed
.wp-block-embed-twitter {
word-break: break-word;
}
//! Table
.wp-block-table {
th,
td {
border-color: $color__text-light;
}
}
//! File
.wp-block-file {
@include font-family( $font__heading );
.wp-block-file__button {
display: table;
@include button-transition;
border: none;
border-radius: 5px;
background: $color__background-button;
font-size: $font__size-base;
@include font-family( $font__heading );
line-height: $font__line-height-heading;
text-decoration: none;
font-weight: bold;
padding: ($size__spacing-unit * .75) $size__spacing-unit;
color: #fff;
margin-left: 0;
margin-top: calc(0.75 * #{$size__spacing-unit});
@include media(desktop) {
font-size: $font__size-base;
padding: ($size__spacing-unit * .875) ($size__spacing-unit * 1.5);
}
&:hover {
background: $color__background-button-hover;
cursor: pointer;
}
&:focus {
background: $color__background-button-hover;
outline: thin dotted;
outline-offset: -4px;
}
}
}
//! Code
.wp-block-code {
border-radius: 0;
code {
font-size: $font__size-md;
white-space: pre-wrap;
word-break: break-word;
}
}
//! Columns
.wp-block-columns {
.wp-block-column > * {
&:first-child {
margin-top: 0;
}
&:last-child {
margin-bottom: 0;
}
}
// Ensure images do not expand beyond the column.
.wp-block-image:not(.alignwide):not(.alignfull) > img,
.wp-block-image:not(.alignwide):not(.alignfull) > a > img,
.wp-block-image > img:not(.alignwide):not(.alignfull),
.wp-block-image > figure {
@include media(tablet) {
max-width: 100%;
}
@include media(desktop) {
max-width: 100%;
}
}
@include media(tablet) {
flex-wrap: nowrap;
.wp-block-column:not(:first-child) {
margin-left: 32px;
}
}
}
//! Group
.wp-block-group {
// When the Group block is standard/wide, we need to prevent full-aligned
// child blocks from expanding out of their container.
&:not(.alignfull) > .wp-block-group__inner-container > .alignfull,
&:not(.alignfull) > .wp-block-group__inner-container > .wp-block-image > img {
@include media(tablet) {
left: 0;
max-width: 100%;
}
}
// The full-width Group block's inner container should mimic .entry-content styles.
&.alignfull > .wp-block-group__inner-container {
max-width: calc(100% - (2 * #{ $size__spacing-unit }));
margin: 0 $size__spacing-unit;
@include media(tablet) {
max-width: 80%;
margin: 0 10%;
padding: 0 60px;
}
}
// Group block with a colored background.
&.has-background {
padding: $size__spacing-unit;
margin-top: 0;
margin-bottom: 0;
// Remove the top and bottom margins of inner blocks.
.wp-block-group__inner-container {
> *:first-child {
margin-top: 0;
}
> *:last-child {
margin-bottom: 0;
}
}
// If the Group block is full-width, it does not need this extra padding.
&.alignfull {
padding-left: 0;
padding-right: 0;
@include media(tablet) {
padding-top: $size__spacing-unit;
padding-bottom: $size__spacing-unit;
}
}
// Full-aligned child blocks should take up the maximum width available in their container.
&:not(.alignfull) > .wp-block-group__inner-container > .alignfull {
width: 100%;
max-width: 100%;
@include media(tablet) {
width: calc( 100% + #{$size__spacing-unit * 2} );
max-width: calc( 100% + #{$size__spacing-unit * 2} );
margin-left: -#{$size__spacing-unit};
}
}
}
}
//! Latest Comments
.wp-block-latest-comments {
.wp-block-latest-comments__comment-meta {
@include font-family( $font__heading );
font-weight: bold;
.wp-block-latest-comments__comment-date {
font-weight: normal;
}
}
.wp-block-latest-comments__comment,
.wp-block-latest-comments__comment-date,
.wp-block-latest-comments__comment-excerpt p {
font-size: inherit;
}
&.has-avatars {
}
&.has-dates {
.wp-block-latest-comments__comment-date {
font-size: $font__size-xs;
}
}
&.has-excerpts {
}
}
//! Font Sizes
.has-small-font-size {
font-size: $font__size-sm;
}
.has-normal-font-size {
font-size: $font__size-md;
}
.has-large-font-size {
font-size: $font__size-lg;
}
.has-huge-font-size {
font-size: $font__size-xl;
}
//! Custom background colors
.has-primary-background-color,
.has-secondary-background-color,
.has-dark-gray-background-color,
.has-light-gray-background-color {
// Use white text against these backgrounds by default.
color: $color__background-body;
> p,
> h1,
> h2,
> h3,
> h4,
> h5,
> h6,
> a {
color: $color__background-body;
}
}
.has-white-background-color {
color: $color__text-main;
// Use dark gray text against this background by default.
> p,
> h1,
> h2,
> h3,
> h4,
> h5,
> h6,
> a {
color: $color__text-main;
}
}
.has-primary-background-color,
.wp-block-pullquote.is-style-solid-color.has-primary-background-color {
background-color: $color__link;
}
.has-secondary-background-color,
.wp-block-pullquote.is-style-solid-color.has-secondary-background-color {
background-color: $color__border-link-hover;
}
.has-dark-gray-background-color,
.wp-block-pullquote.is-style-solid-color.has-dark-gray-background-color {
background-color: $color__text-main;
}
.has-light-gray-background-color,
.wp-block-pullquote.is-style-solid-color.has-light-gray-background-color {
background-color: $color__text-light;
}
.has-white-background-color,
.wp-block-pullquote.is-style-solid-color.has-white-background-color {
background-color: #FFF;
}
//! Custom foreground colors
.has-primary-color,
.wp-block-pullquote blockquote.has-primary-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-primary-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-primary-color > p {
color: $color__link;
}
.has-secondary-color,
.wp-block-pullquote blockquote.has-secondary-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-secondary-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-secondary-color > p {
color: $color__border-link-hover;
}
.has-dark-gray-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-dark-gray-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-dark-gray-color > p {
color: $color__text-main;
}
.has-light-gray-color,
.wp-block-pullquote blockquote.has-light-gray-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-light-gray-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-light-gray-color > p {
color: $color__text-light;
}
.has-white-color,
.wp-block-pullquote blockquote.has-white-color,
.wp-block-pullquote.is-style-solid-color blockquote.has-white-color {
color: #FFF;
}
}