mediawiki-extensions-Tabber.../modules/ext.tabberNeue.init/ext.tabberNeue.init.less

73 lines
1.6 KiB
Plaintext
Raw Normal View History

/**
* Critial rendering styles
*
* Since ext.tabberNeue is loaded a while after page load,
* inline styles are needed to create an inital state and
* avoid potential layout shifts. This should be kept as
* small as possible.
*/
/* stylelint-disable selector-class-pattern */
/* Only apply skeleton UI when Tabber will be loaded */
.client-js {
.tabber:not( .tabber--live ) {
.tabber__header {
height: 2.6em;
box-shadow: inset 0 -1px 0 0;
opacity: 0.1;
&::after {
position: absolute;
width: 16ch;
height: 0.5em;
border-radius: 40px;
margin-top: 1em;
margin-left: 0.75em;
animation-duration: 10s;
animation-fill-mode: forwards;
animation-iteration-count: infinite;
animation-name: skeletonload;
animation-timing-function: linear;
background: #000;
background: linear-gradient( to right, #202122 8%, #54595d 18%, #202122 33% );
/* Use double quote in PHP */
content: '';
}
}
2024-05-25 19:29:56 +00:00
/**
* Avoid layout shift by assigning the grid property early on
* Because display:block does not take into account of bottom margin of the content
*/
.tabber__section {
display: grid;
}
/**
* Hide all other panels
* All panels are stacked vertically initially
* then panels are stacked horizontally after Tabber is loaded
* Causing lots of layout shift
*/
.tabber__panel:not( :first-child ) {
display: none;
}
}
/* Hide no script message */
.tabber__noscript {
display: none;
}
}
@keyframes skeletonload {
0% {
background-position: 0 0;
}
100% {
background-position: 100em 0;
}
}