The data on YGOCounter is in early stage. We're looking for your contribution!. If you find this site useful, kindly share with your friends and playgroups.


The chat feature is just implemented. Feel free to join or read the chat log here.

Template:Sticky table start/styles.css: Difference between revisions

From YGOCounter
m 1 revision imported
No edit summary
Tag: Reverted
Line 1: Line 1:
/**
/**
  * Classes to make row N or thead top sticky, and/or column N left sticky.
  * Classes to make row N or thead top sticky, and/or column N left sticky.
* Reverse collapsible behavior:
* - Show (not mw-collapsed): Enabled w/ scroll and sticky.
* - Hide (mw-collapsed): Disabled w/o scroll or sticky.
  *
  *
  * Div classes:
  * Div classes:
* - sticky-table-collapsible: Adds collapsible; contains scroll div.
  * - sticky-table-scroll: Adds scroll; contains table.
  * - sticky-table-scroll: Adds scroll; contains table.
  *
  *
Line 23: Line 19:
  * - Sortable moves to thead any header rows and (after sort) sorttop rows.
  * - Sortable moves to thead any header rows and (after sort) sorttop rows.
  * - Sticky gadget (.mw-sticky-header) moves to thead any wikitable header rows.
  * - Sticky gadget (.mw-sticky-header) moves to thead any wikitable header rows.
* - Collapsible states reversed due to anchor links removing "mw-collapsed".
*  Also reverses the "aria-expanded" attribute's true/false value.
  */
  */
@media screen {
@media screen {
   /**
   /**
   * Div containers with collapsible and restricted height/width + scroll.
   * Div containers with restricted height/width + scroll.
   */
   */
   .sticky-table-collapsible {
   .sticky-table-scroll {
     margin-bottom: 1em; /* Moved from table. */
     margin-bottom: 1em; /* Moved from table. */
     margin-top: 1em; /* Moved from table. */
     margin-top: 1em; /* Moved from table. */
  }
  .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-scroll {
     max-height: 75vh;
     max-height: 75vh;
     max-width: max-content; /* Vertical scroll next to div. */
     max-width: max-content; /* Vertical scroll next to div. */
     min-width: 50px; /* In case another element floats right. */
     min-width: 50px; /* In case another element floats right. */
     overflow-y: auto;
     overflow-y: auto;
    /*scrollbar-gutter: stable; /* Fix premature wrapping Gecko: 764076. */
   }
   }
   .sticky-table-collapsible table {
   .sticky-table-scroll table {
     margin-bottom: 0; /* Move to div. */
     margin-bottom: 0; /* Moved to div. */
     margin-top: 0; /* Move to div. */
     margin-top: 0; /* Moved to div. */
   }
   }
   .sticky-table-collapsible table > caption {
   .sticky-table-scroll caption {
     text-align: left; /* Fix narrow, centered caption hidden on wide table. */
     text-align: left; /* Fix narrow, centered caption hidden on wide table. */
  }
  /**
  * Modify collapsible.
  */
  /* Button. */
  .sticky-table-collapsible > .mw-collapsible-toggle {
    float: none; /* Was "right". */
    padding-left: 0; /* Was "0.2em". */
    padding-right: 0; /* Was "0.2em". */
    display: none; /* Was "inline-block". Hide. Below shows on mobile. */
  }
  @media (max-width: 839px), (max-height: 839px) {
    .sticky-table-collapsible > .mw-collapsible-toggle {
      display: inline-block; /* Reset. */
    }
  }
  .sticky-table-collapsible .mw-collapsible-text {
    font-size: 88%;
  }
  /* Disabled. */
  .sticky-table-collapsible.mw-collapsed .mw-collapsible-content {
    display: block !important; /* Was "none". */
   }
   }


Line 74: Line 44:
   * Make top sticky.
   * Make top sticky.
   */
   */
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > thead > tr:nth-child(1),
   .sticky-table-scroll .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > thead > tr:nth-child(1),
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > caption + tbody > tr:nth-child(1),
   .sticky-table-scroll .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > caption + tbody > tr:nth-child(1),
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > tbody:first-child > tr:nth-child(1),
   .sticky-table-scroll .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > tbody:first-child > tr:nth-child(1),
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > thead > tr:nth-child(2),
   .sticky-table-scroll .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > thead > tr:nth-child(2),
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > caption + tbody > tr:nth-child(2),
   .sticky-table-scroll .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > caption + tbody > tr:nth-child(2),
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > tbody:first-child > tr:nth-child(2),
   .sticky-table-scroll .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > tbody:first-child > tr:nth-child(2),
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-head:not(.sticky-table-row1):not(.sticky-table-row2) > thead {
   .sticky-table-scroll .sticky-table-head:not(.sticky-table-row1):not(.sticky-table-row2) > thead {
     position: sticky; /* Was "static". */
     position: sticky; /* Was "static". */
     top: 0;
     top: 0;
Line 89: Line 59:
   * Make left sticky.
   * Make left sticky.
   */
   */
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-col1:not(.sticky-table-col2) > * > tr > :nth-child(1):not(.sticky-table-none),
   .sticky-table-scroll .sticky-table-col1:not(.sticky-table-col2) > * > tr > :nth-child(1):not(.sticky-table-none),
   .sticky-table-collapsible:not(.mw-collapsed) .sticky-table-col2:not(.sticky-table-col1) > * > tr > :nth-child(2):not(.sticky-table-none),
   .sticky-table-scroll .sticky-table-col2:not(.sticky-table-col1) > * > tr > :nth-child(2):not(.sticky-table-none),
   .sticky-table-collapsible:not(.mw-collapsed) table > * > tr > .sticky-table-left {
   .sticky-table-scroll tr > .sticky-table-left {
     position: sticky; /* Was "static". */
     position: sticky; /* Was "static". */
     left: 0;
     left: 0;
Line 99: Line 69:
   /**
   /**
   * Fix scrolling data shows through sticky's transparent background.
   * Fix scrolling data shows through sticky's transparent background.
  *
  * Note: ":not(.mw-collapsed)" removed so "row hover highlight" hover works.
   */
   */
   .sticky-table-collapsible table:not(.wikitable) {
   .sticky-table-scroll table:not(.wikitable) {
     background-color: white;
     background-color: var(--color-inverted, #fff);
   }
   }
   .sticky-table-collapsible table > thead,
   .sticky-table-scroll thead,
   .sticky-table-collapsible table > tbody,
   .sticky-table-scroll tbody,
   .sticky-table-collapsible table > tfoot,
   .sticky-table-scroll tfoot,
   .sticky-table-collapsible table > * > tr,
   .sticky-table-scroll tr,
   .sticky-table-collapsible table > * > tr > td,
   .sticky-table-scroll td,
   .sticky-table-collapsible :not(.wikitable) > * > tr > th {
   .sticky-table-scroll table:not(.wikitable) > * > tr > th {
     background-color: inherit;
     background-color: inherit;
   }
   }
Line 121: Line 89:
   * data through sticky's 2px "border-spacing".
   * data through sticky's 2px "border-spacing".
   *
   *
   * Skip very rare Timeless plain table ".mw-datatable" collapsed boarders.
   * Skip very rare Timeless plain table ".mw-datatable" collapsed borders.
   *
   *
   * Note: {{Static row numbers}} border separating header/sorttop from numbers
   * Note: {{Static row numbers}} border-bottom separating header/sorttop from
   * missing and may not be fixable until Wikipedia supports newer CSS.
   * numbers missing and not selectable with CSS.
   */
   */
   .sticky-table-collapsible:not(.mw-collapsed) .wikitable {
   .sticky-table-scroll .wikitable {
     border-collapse: separate; /* Was "collapse". */
     border-collapse: separate; /* Was "collapse". */
     border-spacing: 0;
     border-spacing: 0;
     border-width: 1px 0 0 1px;
     border-width: 1px 0 0 1px;
   }
   }
   .sticky-table-collapsible:not(.mw-collapsed) .wikitable > * > tr > td,
   .sticky-table-scroll .wikitable > * > tr > td,
   .sticky-table-collapsible:not(.mw-collapsed) .wikitable > * > tr > th {
   .sticky-table-scroll .wikitable > * > tr > th {
     border-width: 0 1px 1px 0;
     border-width: 0 1px 1px 0;
   }
   }
   /* Adjust {{static row numbers}} borders. */
   /* Adjust {{static row numbers}} borders. */
   .sticky-table-collapsible:not(.mw-collapsed) .static-row-numbers.wikitable > * > tr::before {
   .sticky-table-scroll .static-row-numbers.wikitable > * > tr::before {
     border-right-width: 1px;
     border-right-width: 1px;
   }
   }
   /* .sticky-table-collapsible:not(.mw-collapsed) .static-row-numbers.wikitable > * > .sorttop:not(:has(~ .sorttop))::before, */
   /* .sticky-table-scroll .static-row-numbers.wikitable > * > .sorttop:not(:has(~ .sorttop))::before, */
   .sticky-table-collapsible:not(.mw-collapsed) .static-row-numbers.wikitable > tbody > tr:last-child::before,
   .sticky-table-scroll .static-row-numbers.wikitable > tbody > tr:last-child::before,
   .sticky-table-collapsible:not(.mw-collapsed) .static-row-numbers.wikitable > tfoot > tr:last-child::before {
   .sticky-table-scroll .static-row-numbers.wikitable > tfoot > tr:last-child::before {
     border-bottom-width: 1px;
     border-bottom-width: 1px;
   }
   }
   .sticky-table-collapsible:not(.mw-collapsed) .static-row-numbers.wikitable > tbody > tr:not(.static-row-header)::before {
  /* After sort, "tbody:first-of-type" targets "tbody>tr:first-child". */
     border-top-width: 0 !important;
   .sticky-table-scroll .static-row-numbers.wikitable > tbody:first-of-type > tr:not(.static-row-header)::before {
     border-left-width: 0 !important;
     border-top-width: 0;
     border-left-width: 0;
   }
   }


Line 152: Line 121:
   * Fix Timeless skin very wide tables not sticky.
   * Fix Timeless skin very wide tables not sticky.
   */
   */
   body.skin-timeless .sticky-table-collapsible:not(.mw-collapsed) .overflowed,
   body.skin-timeless .sticky-table-scroll .overflowed,
   body.skin-timeless .sticky-table-collapsible:not(.mw-collapsed) .overflowed .content-table {
   body.skin-timeless .sticky-table-scroll .overflowed .content-table {
     overflow: visible; /* Reset. */
     overflow: visible; /* Reset. */
   }
   }
   body.skin-timeless .sticky-table-collapsible:not(.mw-collapsed) .overflowed {
   body.skin-timeless .sticky-table-scroll .overflowed {
     margin-top: 0; /* Was "1em". */
     margin-top: 0; /* Was "1em". */
     margin-bottom: 0; /* Was "1em". */
     margin-bottom: 0; /* Was "1em". */
   }
   }
   body.skin-timeless .sticky-table-collapsible:not(.mw-collapsed) .scroll-right.overflowed .content-table-right {
   body.skin-timeless .sticky-table-scroll .scroll-right.overflowed .content-table-right {
     box-shadow: none; /* Reset. */
     box-shadow: none; /* Reset. */
     border-left: none; /* Reset. */
     border-left: none; /* Reset. */
   }
   }
   body.skin-timeless .sticky-table-collapsible:not(.mw-collapsed) .wikitable {
   body.skin-timeless .sticky-table-scroll .wikitable {
     padding: 0;
     padding: 0;
   }
   }


   /**
   /**
   * Fix skins width <=639px (mobile) not sticky.
   * Fix VisualEditor (VE) removing scrollable and hiding content.
   */
   */
   @media (max-width: 639px) {
   html.ve-activated .sticky-table-scroll {
    body.skin-minerva .sticky-table-collapsible:not(.mw-collapsed) table,
     max-height: none; /* Unhide. */
    body.skin-monobook .sticky-table-collapsible:not(.mw-collapsed) table,
    body.skin-vector-legacy .sticky-table-collapsible:not(.mw-collapsed) table,
    body.skin-vector-2022 .sticky-table-collapsible:not(.mw-collapsed) table {
      display: table; /* Was "block". */
     }
    body.skin-minerva .sticky-table-collapsible:not(.mw-collapsed) table > caption {
      display: table-caption; /* Was "block". */
    }
   }
   }
}


   /**
/**
  * Fix "Sticky Table Headers" gadget styles causing sticky issues.
* Fix skins width <=639px (mobile) not sticky.
  */
*/
   .sticky-table-collapsible:not(.mw-collapsed) .jquery-tablesorter > thead,
@media screen and (max-width: 639px) {
   .sticky-table-collapsible:not(.mw-collapsed) .mw-sticky-header > thead {
  body.skin-minerva .sticky-table-scroll table,
     top: 0 !important; /* Was value based on skin and max/min width. */
  body.skin-monobook .sticky-table-scroll table,
   body.skin-vector-legacy .sticky-table-scroll table,
  body.skin-vector-2022 .sticky-table-scroll table {
    display: table; /* Was "block". */
  }
  body.skin-minerva .sticky-table-scroll caption {
    display: table-caption; /* Was "block". */
  }
}
 
/**
* Fix "Sticky Table Headers" gadget issues; this template has priority.
*/
@media screen {
   .sticky-table-scroll .jquery-tablesorter:not(.sticky-table-head) > thead,
   .sticky-table-scroll .mw-sticky-header:not(.sticky-table-head) > thead {
    position: static; /* Was "sticky". */
     top: auto; /* Was "0". */
    z-index: auto; /* Was "10". */
   }
   }
   .sticky-table-collapsible:not(.mw-collapsed) .jquery-tablesorter > tfoot,
   .sticky-table-scroll .jquery-tablesorter > tfoot,
   .sticky-table-collapsible:not(.mw-collapsed) .mw-sticky-header > tfoot {
   .sticky-table-scroll .mw-sticky-header > tfoot {
     position: static; /* Was "sticky". */
     position: static; /* Was "sticky". */
     bottom: auto; /* Was "0". */
     bottom: auto; /* Was "0". */
    z-index: auto; /* Was "10". */
   }
   }
}
}
 
@media screen and (min-width: 1120px) {
@media all {
   html.client-js.vector-sticky-header-enabled .sticky-table-scroll :not(.sticky-table-head) .mw-sticky-header-element {
   /* Set important to override template parameter. */
     top: auto !important; /* Was "3.125rem !important". */
  .sticky-table-collapsible.mw-collapsed .sticky-table-scroll {
     max-height: none !important; /* Default. */
    max-width: none !important; /* Default. */
   }
   }
}
}

Revision as of 15:47, 9 January 2026

/**
 * Classes to make row N or thead top sticky, and/or column N left sticky.
 *
 * Div classes:
 * - sticky-table-scroll: Adds scroll; contains table.
 *
 * Table classes:
 * - sticky-table-head: Top sticky thead rows.
 * - sticky-table-row1: Top sticky first row.
 * - sticky-table-row2: Top sticky second row.
 * - sticky-table-col1: Left sticky first column.
 * - sticky-table-col2: Left sticky second column.
 *
 * Cell classes:
 * - sticky-table-none: Cell not sticky to fix span issues.
 * - sticky-table-left: Cell left sticky to fix span issues.
 *
 * Notes:
 * - Sortable moves to thead any header rows and (after sort) sorttop rows.
 * - Sticky gadget (.mw-sticky-header) moves to thead any wikitable header rows.
 */
@media screen {
  /**
   * Div containers with restricted height/width + scroll.
   */
  .sticky-table-scroll {
    margin-bottom: 1em; /* Moved from table. */
    margin-top: 1em; /* Moved from table. */
    max-height: 75vh;
    max-width: max-content; /* Vertical scroll next to div. */
    min-width: 50px; /* In case another element floats right. */
    overflow-y: auto;
    /*scrollbar-gutter: stable; /* Fix premature wrapping Gecko: 764076. */
  }
  .sticky-table-scroll table {
    margin-bottom: 0; /* Moved to div. */
    margin-top: 0; /* Moved to div. */
  }
  .sticky-table-scroll caption {
    text-align: left; /* Fix narrow, centered caption hidden on wide table. */
  }

  /**
   * Make top sticky.
   */
  .sticky-table-scroll .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > thead > tr:nth-child(1),
  .sticky-table-scroll .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > caption + tbody > tr:nth-child(1),
  .sticky-table-scroll .sticky-table-row1:not(.sticky-table-row2):not(.sticky-table-head) > tbody:first-child > tr:nth-child(1),
  .sticky-table-scroll .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > thead > tr:nth-child(2),
  .sticky-table-scroll .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > caption + tbody > tr:nth-child(2),
  .sticky-table-scroll .sticky-table-row2:not(.sticky-table-row1):not(.sticky-table-head) > tbody:first-child > tr:nth-child(2),
  .sticky-table-scroll .sticky-table-head:not(.sticky-table-row1):not(.sticky-table-row2) > thead {
    position: sticky; /* Was "static". */
    top: 0;
    z-index: 10;
  }

  /**
   * Make left sticky.
   */
  .sticky-table-scroll .sticky-table-col1:not(.sticky-table-col2) > * > tr > :nth-child(1):not(.sticky-table-none),
  .sticky-table-scroll .sticky-table-col2:not(.sticky-table-col1) > * > tr > :nth-child(2):not(.sticky-table-none),
  .sticky-table-scroll tr > .sticky-table-left {
    position: sticky; /* Was "static". */
    left: 0;
    z-index: 9;
  }

  /**
   * Fix scrolling data shows through sticky's transparent background.
   */
  .sticky-table-scroll table:not(.wikitable) {
    background-color: var(--color-inverted, #fff);
  }
  .sticky-table-scroll thead,
  .sticky-table-scroll tbody,
  .sticky-table-scroll tfoot,
  .sticky-table-scroll tr,
  .sticky-table-scroll td,
  .sticky-table-scroll table:not(.wikitable) > * > tr > th {
    background-color: inherit;
  }

  /**
   * Fix missing borders due to sticky position and wikitable collapsed borders.
   * https://bugs.webkit.org/show_bug.cgi?id=128486
   *
   * Skip rare plain table separated borders, which sometimes shows scrolling
   * data through sticky's 2px "border-spacing".
   *
   * Skip very rare Timeless plain table ".mw-datatable" collapsed borders.
   *
   * Note: {{Static row numbers}} border-bottom separating header/sorttop from
   * numbers missing and not selectable with CSS.
   */
  .sticky-table-scroll .wikitable {
    border-collapse: separate; /* Was "collapse". */
    border-spacing: 0;
    border-width: 1px 0 0 1px;
  }
  .sticky-table-scroll .wikitable > * > tr > td,
  .sticky-table-scroll .wikitable > * > tr > th {
    border-width: 0 1px 1px 0;
  }
  /* Adjust {{static row numbers}} borders. */
  .sticky-table-scroll .static-row-numbers.wikitable > * > tr::before {
    border-right-width: 1px;
  }
  /* .sticky-table-scroll .static-row-numbers.wikitable > * > .sorttop:not(:has(~ .sorttop))::before, */
  .sticky-table-scroll .static-row-numbers.wikitable > tbody > tr:last-child::before,
  .sticky-table-scroll .static-row-numbers.wikitable > tfoot > tr:last-child::before {
    border-bottom-width: 1px;
  }
  /* After sort, "tbody:first-of-type" targets "tbody>tr:first-child". */
  .sticky-table-scroll .static-row-numbers.wikitable > tbody:first-of-type > tr:not(.static-row-header)::before {
    border-top-width: 0;
    border-left-width: 0;
  }

  /**
   * Fix Timeless skin very wide tables not sticky.
   */
  body.skin-timeless .sticky-table-scroll .overflowed,
  body.skin-timeless .sticky-table-scroll .overflowed .content-table {
    overflow: visible; /* Reset. */
  }
  body.skin-timeless .sticky-table-scroll .overflowed {
    margin-top: 0; /* Was "1em". */
    margin-bottom: 0; /* Was "1em". */
  }
  body.skin-timeless .sticky-table-scroll .scroll-right.overflowed .content-table-right {
    box-shadow: none; /* Reset. */
    border-left: none; /* Reset. */
  }
  body.skin-timeless .sticky-table-scroll .wikitable {
    padding: 0;
  }

  /**
   * Fix VisualEditor (VE) removing scrollable and hiding content.
   */
  html.ve-activated .sticky-table-scroll {
    max-height: none; /* Unhide. */
  }
}

/**
 * Fix skins width <=639px (mobile) not sticky.
 */
@media screen and (max-width: 639px) {
  body.skin-minerva .sticky-table-scroll table,
  body.skin-monobook .sticky-table-scroll table,
  body.skin-vector-legacy .sticky-table-scroll table,
  body.skin-vector-2022 .sticky-table-scroll table {
    display: table; /* Was "block". */
  }
  body.skin-minerva .sticky-table-scroll caption {
    display: table-caption; /* Was "block". */
  }
}

/**
 * Fix "Sticky Table Headers" gadget issues; this template has priority.
 */
@media screen {
  .sticky-table-scroll .jquery-tablesorter:not(.sticky-table-head) > thead,
  .sticky-table-scroll .mw-sticky-header:not(.sticky-table-head) > thead {
    position: static; /* Was "sticky". */
    top: auto; /* Was "0". */
    z-index: auto; /* Was "10". */
  }
  .sticky-table-scroll .jquery-tablesorter > tfoot,
  .sticky-table-scroll .mw-sticky-header > tfoot {
    position: static; /* Was "sticky". */
    bottom: auto; /* Was "0". */
    z-index: auto; /* Was "10". */
  }
}
@media screen and (min-width: 1120px) {
  html.client-js.vector-sticky-header-enabled .sticky-table-scroll :not(.sticky-table-head) .mw-sticky-header-element {
    top: auto !important; /* Was "3.125rem !important". */
  }
}