« MediaWiki:Common.js » : différence entre les versions
Page de l’interface de MediaWiki
Autres actions
Aucun résumé des modifications |
m Minicard |
||
| Ligne 254 : | Ligne 254 : | ||
/* === fin Modèle:Règle === */ | /* === fin Modèle:Règle === */ | ||
/* MiniCard Grid - Ajustement dynamique des colonnes */ | /* MiniCard Grid - Ajustement dynamique des colonnes */ | ||
( function () { | ( function () { | ||
'use strict'; | 'use strict'; | ||
var MIN_CARD_WIDTH = 140; /* Largeur minimale acceptable par carte en px */ | |||
var GAP = 12; | |||
function adjustMiniCardGrids() { | function adjustMiniCardGrids() { | ||
| Ligne 267 : | Ligne 269 : | ||
var containerWidth = grid.offsetWidth; | var containerWidth = grid.offsetWidth; | ||
/* Nombre max de colonnes qui | /* Nombre max de colonnes qui respectent la largeur minimale */ | ||
var | var maxColsByWidth = Math.floor( | ||
( containerWidth + | ( containerWidth + GAP ) / ( MIN_CARD_WIDTH + GAP ) | ||
); | ); | ||
maxColsByWidth = Math.max( 1, Math.min( maxColsByWidth, total ) ); | |||
/* On cherche le diviseur de total | /* On cherche le meilleur diviseur de total <= maxColsByWidth */ | ||
var bestCols = 1; | var bestCols = 1; | ||
for ( var n = 1; n <= | for ( var n = 1; n <= maxColsByWidth; n++ ) { | ||
if ( total % n === 0 ) { | if ( total % n === 0 ) { | ||
bestCols = n; | bestCols = n; | ||
| Ligne 284 : | Ligne 284 : | ||
} | } | ||
/* Si aucun diviseur exact, on prend | /* Si aucun diviseur exact trouvé au-delà de 1, on prend maxColsByWidth */ | ||
if ( bestCols === 1 && maxColsByWidth > 1 ) { | |||
if ( bestCols === 1 && | bestCols = maxColsByWidth; | ||
bestCols = | |||
} | } | ||
grid.style.gridTemplateColumns = 'repeat(' + bestCols + ', 1fr)'; | grid.style.gridTemplateColumns = 'repeat(' + bestCols + ', 1fr)'; | ||
/* Ajustement hauteur sur mobile */ | |||
var cardWidth = ( containerWidth - ( bestCols - 1 ) * GAP ) / bestCols; | |||
if ( cardWidth < 120 ) { | |||
grid.style.gridAutoRows = '48px'; | |||
grid.querySelectorAll( '.minicard' ).forEach( function ( c ) { | |||
c.style.height = '48px'; | |||
} ); | |||
} else if ( cardWidth < 160 ) { | |||
grid.style.gridAutoRows = '52px'; | |||
grid.querySelectorAll( '.minicard' ).forEach( function ( c ) { | |||
c.style.height = '52px'; | |||
} ); | |||
} else { | |||
grid.style.gridAutoRows = '60px'; | |||
grid.querySelectorAll( '.minicard' ).forEach( function ( c ) { | |||
c.style.height = '60px'; | |||
} ); | |||
} | |||
} ); | } ); | ||
} | } | ||
var resizeTimer; | var resizeTimer; | ||
function onResize() { | function onResize() { | ||
| Ligne 301 : | Ligne 318 : | ||
} | } | ||
if ( document.readyState === 'loading' ) { | if ( document.readyState === 'loading' ) { | ||
document.addEventListener( 'DOMContentLoaded', adjustMiniCardGrids ); | document.addEventListener( 'DOMContentLoaded', adjustMiniCardGrids ); | ||