diff --git a/core/.eslintrc.jquery.json b/core/.eslintrc.jquery.json
index 2719cafc298a4f04b08529bd9238ced53e8f79b2..dda0cf76f761325319eb21d971f4a46c9c668783 100644
--- a/core/.eslintrc.jquery.json
+++ b/core/.eslintrc.jquery.json
@@ -11,7 +11,7 @@
     "jquery/no-class": 0,
     "jquery/no-clone": 0,
     "jquery/no-closest": 0,
-    "jquery/no-css": 0,
+    "jquery/no-css": 2,
     "jquery/no-data": 0,
     "jquery/no-deferred": 0,
     "jquery/no-delegate": 2,
diff --git a/core/misc/ajax.js b/core/misc/ajax.js
index 9f659c799fe2b34625f7b9ff3e3773fc7c78ad62..8544f6a1049eada9c11dd2f136a09063d5434ecf 100644
--- a/core/misc/ajax.js
+++ b/core/misc/ajax.js
@@ -1486,6 +1486,7 @@
      *   The XMLHttpRequest status.
      */
     css(ajax, response, status) {
+      // eslint-disable-next-line jquery/no-css
       $(response.selector).css(response.argument);
     },
 
diff --git a/core/misc/dialog/dialog.ajax.js b/core/misc/dialog/dialog.ajax.js
index 4549813abe25f8ff98ae5e666f7e8e6e16d5f368..7e439974df6d15fafa49c9fe01ec1b64d38339e7 100644
--- a/core/misc/dialog/dialog.ajax.js
+++ b/core/misc/dialog/dialog.ajax.js
@@ -89,7 +89,8 @@
         '.form-actions input[type=submit], .form-actions a.button, .form-actions a.action-link',
       );
       $buttons.each(function () {
-        const $originalButton = $(this).css({ display: 'none' });
+        const $originalButton = $(this);
+        this.style.display = 'none';
         buttons.push({
           text: $originalButton.html() || $originalButton.attr('value'),
           class: $originalButton.attr('class'),
diff --git a/core/misc/dialog/dialog.position.js b/core/misc/dialog/dialog.position.js
index d6394c471f0c9b5045ce6c5fa1019e9817f2cfb9..8864496cb0798f1fe3e9ba1c63d8c5c8e61c2bb2 100644
--- a/core/misc/dialog/dialog.position.js
+++ b/core/misc/dialog/dialog.position.js
@@ -118,10 +118,10 @@
       const autoResize = debounce(resetSize, 20);
       const eventData = { settings, $element };
       if (settings.autoResize === true || settings.autoResize === 'true') {
-        $element
+        const uiDialog = $element
           .dialog('option', { resizable: false, draggable: false })
-          .dialog('widget')
-          .css('position', 'fixed');
+          .dialog('widget');
+        uiDialog[0].style.position = 'fixed';
         $(window)
           .on('resize.dialogResize scroll.dialogResize', eventData, autoResize)
           .trigger('resize.dialogResize');
diff --git a/core/misc/dialog/off-canvas/js/off-canvas.js b/core/misc/dialog/off-canvas/js/off-canvas.js
index a61224459f15f6c54bf699edf854c973ed49f12b..a6400415889bc9890e44d22d24388f0a0a9072ee 100644
--- a/core/misc/dialog/off-canvas/js/off-canvas.js
+++ b/core/misc/dialog/off-canvas/js/off-canvas.js
@@ -182,7 +182,7 @@
       let offset = 0;
 
       // Let scroll element take all the height available.
-      $element.css({ height: 'auto' });
+      $element[0].style.height = 'auto';
       const modalHeight = $container.height();
 
       $offsets.each((i, e) => {
@@ -214,7 +214,7 @@
       }
       // Set a minimum height on $element
       if (position === 'top') {
-        $element.css('min-height', `${Drupal.offCanvas.minimumHeight}px`);
+        $element[0].style.minHeight = `${Drupal.offCanvas.minimumHeight}px`;
       }
 
       displace();
@@ -236,9 +236,12 @@
         position === 'side'
           ? `${$(window).height() - (offsets.top + offsets.bottom)}px`
           : event.data.settings.height;
-      container.css({
+
+      Object.assign(container[0].style, {
         position: 'fixed',
-        height,
+        height: Number.isNaN(parseFloat(height))
+          ? height
+          : `${parseFloat(height)}px`,
       });
 
       $element
@@ -267,24 +270,26 @@
       Drupal.offCanvas.resetPadding();
       const $element = event.data.$element;
       const $container = Drupal.offCanvas.getContainer($element);
-      const $mainCanvasWrapper = Drupal.offCanvas.$mainCanvasWrapper;
+      const mainCanvasWrapper = Drupal.offCanvas.$mainCanvasWrapper[0];
 
       const width = $container.outerWidth();
-      const mainCanvasPadding = $mainCanvasWrapper.css(
-        `padding-${Drupal.offCanvas.getEdge()}`,
-      );
+      const mainCanvasPadding =
+        window.getComputedStyle(mainCanvasWrapper)[
+          `padding-${Drupal.offCanvas.getEdge()}`
+        ];
+
       if (position === 'side' && width !== mainCanvasPadding) {
-        $mainCanvasWrapper.css(
-          `padding-${Drupal.offCanvas.getEdge()}`,
-          `${width}px`,
-        );
+        mainCanvasWrapper.style[
+          `padding-${Drupal.offCanvas.getEdge()}`
+        ] = `${width}px`;
+
         $container.attr(`data-offset-${Drupal.offCanvas.getEdge()}`, width);
         displace();
       }
 
       const height = $container.outerHeight();
       if (position === 'top') {
-        $mainCanvasWrapper.css('padding-top', `${height}px`);
+        mainCanvasWrapper.style.paddingTop = `${height}px`;
         $container.attr('data-offset-top', height);
         displace();
       }
@@ -316,11 +321,10 @@
      * Resets main canvas wrapper and toolbar padding / margin.
      */
     resetPadding() {
-      Drupal.offCanvas.$mainCanvasWrapper.css(
-        `padding-${Drupal.offCanvas.getEdge()}`,
-        0,
-      );
-      Drupal.offCanvas.$mainCanvasWrapper.css('padding-top', 0);
+      Drupal.offCanvas.$mainCanvasWrapper[0].style[
+        `padding-${Drupal.offCanvas.getEdge()}`
+      ] = 0;
+      Drupal.offCanvas.$mainCanvasWrapper[0].style.paddingTop = 0;
       displace();
     },
   };
diff --git a/core/misc/position.js b/core/misc/position.js
index a42f2331f249d9749c1121791512d4c2b0b9ce44..c1aa34da783c26371d3e86dc53dfb16b69db7543 100644
--- a/core/misc/position.js
+++ b/core/misc/position.js
@@ -42,7 +42,7 @@
   }
 
   function parseCss(element, property) {
-    return parseInt($.css(element, property), 10) || 0;
+    return parseInt(window.getComputedStyle(element)[property], 10) || 0;
   }
 
   function getDimensions(elem) {
@@ -311,7 +311,7 @@
 
       $('body').append(div);
       const w1 = innerDiv.offsetWidth;
-      div.css('overflow', 'scroll');
+      div[0].style.overflow = 'scroll';
 
       let w2 = innerDiv.offsetWidth;
 
@@ -327,11 +327,11 @@
       const overflowX =
         within.isWindow || within.isDocument
           ? ''
-          : within.element.css('overflow-x');
+          : window.getComputedStyle(within.element[0])['overflow-x'];
       const overflowY =
         within.isWindow || within.isDocument
           ? ''
-          : within.element.css('overflow-y');
+          : window.getComputedStyle(within.element[0])['overflow-y'];
       const hasOverflowX =
         overflowX === 'scroll' ||
         (overflowX === 'auto' && within.width < within.element[0].scrollWidth);
diff --git a/core/misc/progress.js b/core/misc/progress.js
index 24c13af0cc34d2f9df168f5c6479f0ea5ecf84c9..ae1d2d7d1af86a75894270296db102d899580f47 100644
--- a/core/misc/progress.js
+++ b/core/misc/progress.js
@@ -76,7 +76,9 @@
         if (percentage >= 0 && percentage <= 100) {
           $(this.element)
             .find('div.progress__bar')
-            .css('width', `${percentage}%`);
+            .each(function () {
+              this.style.width = `${percentage}%`;
+            });
           $(this.element)
             .find('div.progress__percentage')
             .html(`${percentage}%`);
diff --git a/core/misc/tabledrag.js b/core/misc/tabledrag.js
index 722a36a1ec37dd96cd2dfa494bf8847a2de7ed88..47fa97a83da48ea745a7983cc3ddc794f48ea441 100644
--- a/core/misc/tabledrag.js
+++ b/core/misc/tabledrag.js
@@ -129,7 +129,7 @@
      *
      * @type {number}
      */
-    this.rtl = $(this.table).css('direction') === 'rtl' ? -1 : 1;
+    this.rtl = window.getComputedStyle(this.table).direction === 'rtl' ? -1 : 1;
 
     /**
      *
@@ -423,9 +423,13 @@
   Drupal.tableDrag.prototype.hideColumns = function () {
     const $tables = $(once.filter('tabledrag', 'table'));
     // Hide weight/parent cells and headers.
-    $tables.find('.tabledrag-hide').css('display', 'none');
+    $tables.find('.tabledrag-hide').each(function () {
+      this.style.display = 'none';
+    });
     // Show TableDrag handles.
-    $tables.find('.tabledrag-handle').css('display', '');
+    $tables.find('.tabledrag-handle').each(function () {
+      this.style.display = '';
+    });
     // Reduce the colspan of any effected multi-span columns.
     $tables.find('.tabledrag-has-colspan').each(function () {
       this.colSpan -= 1;
@@ -440,9 +444,13 @@
   Drupal.tableDrag.prototype.showColumns = function () {
     const $tables = $(once.filter('tabledrag', 'table'));
     // Show weight/parent cells and headers.
-    $tables.find('.tabledrag-hide').css('display', '');
+    $tables.find('.tabledrag-hide').each(function () {
+      this.style.display = '';
+    });
     // Hide TableDrag handles.
-    $tables.find('.tabledrag-handle').css('display', 'none');
+    $tables.find('.tabledrag-handle').each(function () {
+      this.style.display = 'none';
+    });
     // Increase the colspan for any columns where it was previously reduced.
     $tables.find('.tabledrag-has-colspan').each(function () {
       this.colSpan += 1;
diff --git a/core/misc/tableheader.js b/core/misc/tableheader.js
index 4c60e6d517976ac3c6e7aabe5cb0ac4b131ca541..2c7624023ca986bc1de8db1d3b41a5a4d33f26cf 100644
--- a/core/misc/tableheader.js
+++ b/core/misc/tableheader.js
@@ -211,12 +211,9 @@
         // Clone the table header so it inherits original jQuery properties.
         const $stickyHeader = this.$originalHeader.clone(true);
         // Hide the table to avoid a flash of the header clone upon page load.
-        this.$stickyTable = $('<table class="sticky-header"></table>')
-          .css({
-            visibility: 'hidden',
-            position: 'fixed',
-            top: '0px',
-          })
+        this.$stickyTable = $(
+          '<table class="sticky-header" style="visibility: hidden; position: fixed; top: 0;"></table>',
+        )
           .append($stickyHeader)
           .insertBefore(this.$originalTable);
 
@@ -245,12 +242,13 @@
         if (typeof offsetLeft === 'number') {
           css.left = `${this.tableOffset.left - offsetLeft}px`;
         }
-        this.$html.css(
-          'scroll-padding-top',
+        this.$html[0].style.scrollPaddingTop =
           displace.offsets.top +
-            (this.stickyVisible ? this.$stickyTable.height() : 0),
-        );
-        return this.$stickyTable.css(css);
+          (this.stickyVisible ? this.$stickyTable.height() : 0);
+
+        Object.assign(this.$stickyTable[0].style, css);
+
+        return this.$stickyTable;
       },
 
       /**
@@ -286,10 +284,9 @@
         this.checkStickyVisible();
         // Track horizontal positioning relative to the viewport.
         this.stickyPosition(null, scrollValue('scrollLeft'));
-        this.$stickyTable.css(
-          'visibility',
-          this.stickyVisible ? 'visible' : 'hidden',
-        );
+        this.$stickyTable[0].style.visibility = this.stickyVisible
+          ? 'visible'
+          : 'hidden';
       },
 
       /**
@@ -318,14 +315,17 @@
         for (let i = 0; i < il; i++) {
           $that = $(this.$originalHeaderCells[i]);
           $stickyCell = this.$stickyHeaderCells.eq($that.index());
-          display = $that.css('display');
+          display = window.getComputedStyle($that[0]).display;
           if (display !== 'none') {
-            $stickyCell.css({ width: $that.css('width'), display });
+            Object.assign($stickyCell[0].style, {
+              width: window.getComputedStyle($that[0]).width,
+              display,
+            });
           } else {
-            $stickyCell.css('display', 'none');
+            $stickyCell[0].style.display = 'none';
           }
         }
-        this.$stickyTable.css('width', this.$originalTable.outerWidth());
+        this.$stickyTable[0].style.width = this.$originalTable.outerWidth();
       },
     },
   );
diff --git a/core/modules/contextual/js/contextual.js b/core/modules/contextual/js/contextual.js
index 7d916d5e3cb18d63e89f1982c95a061c09ccee28..75abe445b5678c6517a203484428126e4d4809d2 100644
--- a/core/modules/contextual/js/contextual.js
+++ b/core/modules/contextual/js/contextual.js
@@ -71,7 +71,8 @@
       $trigger.addClass('visually-hidden');
 
       // Adjust nested contextual link's position.
-      $nestedContextual.css({ top: $nestedContextual.position().top + height });
+      $nestedContextual[0].style.top =
+        $nestedContextual.position().top + height;
     }
   }
 
diff --git a/core/modules/toolbar/js/toolbar.js b/core/modules/toolbar/js/toolbar.js
index c7eba1e805eaa64ad3792e7844fb05111f2f6642..1ca75fcf46a9c1f36da030527c1267ddba655bc8 100644
--- a/core/modules/toolbar/js/toolbar.js
+++ b/core/modules/toolbar/js/toolbar.js
@@ -207,26 +207,27 @@
 
         $(window).on({
           'dialog:aftercreate': (event, dialog, $element, settings) => {
-            const $toolbar = $('#toolbar-bar');
-            $toolbar.css('margin-top', '0');
+            const toolbarBar = document.getElementById('toolbar-bar');
+            toolbarBar.style.marginTop = '0';
 
             // When off-canvas is positioned in top, toolbar has to be moved down.
             if (settings.drupalOffCanvasPosition === 'top') {
               const height = Drupal.offCanvas
                 .getContainer($element)
                 .outerHeight();
-              $toolbar.css('margin-top', `${height}px`);
+              toolbarBar.style.marginTop = `${height}px`;
 
               $element.on('dialogContentResize.off-canvas', () => {
                 const newHeight = Drupal.offCanvas
                   .getContainer($element)
                   .outerHeight();
-                $toolbar.css('margin-top', `${newHeight}px`);
+                toolbarBar.style.marginTop = `${newHeight}px`;
               });
             }
           },
           'dialog:beforeclose': () => {
-            $('#toolbar-bar').css('margin-top', '0');
+            const toolbarBar = document.getElementById('toolbar-bar');
+            toolbarBar.style.marginTop = '0';
           },
         });
       });
diff --git a/core/modules/toolbar/js/views/ToolbarVisualView.js b/core/modules/toolbar/js/views/ToolbarVisualView.js
index e2d78cd956de2a26f6cbad46e38e8f83bea103b8..89f472f0eafaa75f141041415e996511f80f6f45 100644
--- a/core/modules/toolbar/js/views/ToolbarVisualView.js
+++ b/core/modules/toolbar/js/views/ToolbarVisualView.js
@@ -84,12 +84,8 @@
           toolbarTabOuterHeight + toolbarTrayHorizontalOuterHeight,
         );
 
-        $('body').css({
-          'padding-top': this.model.get('height'),
-        });
-        $('html').css({
-          'scroll-padding-top': this.model.get('height'),
-        });
+        $('body')[0].style.paddingTop = `${this.model.get('height')}px`;
+        $('html')[0].style.scrollPaddingTop = `${this.model.get('height')}px`;
 
         this.triggerDisplace();
       },
diff --git a/core/modules/user/user.js b/core/modules/user/user.js
index 8652cc467d4e0c8fe553e1378bdf6adb80851a16..e1832ee72e9e80f0660baa3b6703c14ad06f699d 100644
--- a/core/modules/user/user.js
+++ b/core/modules/user/user.js
@@ -221,9 +221,8 @@
               );
             }
             // Adjust the length of the strength indicator.
-            password.$strengthBar
-              .css('width', `${result.strength}%`)
-              .addClass(result.indicatorClass);
+            password.$strengthBar[0].style.width = `${result.strength}%`;
+            password.$strengthBar.addClass(result.indicatorClass);
 
             // Update the strength indication text.
             password.$strengthTextWrapper.html(result.indicatorText);
@@ -232,9 +231,9 @@
           // Check the value in the confirm input and show results.
           if ($confirmInput[0].value) {
             passwordCheckMatch($confirmInput[0].value);
-            $passwordConfirmMessage.css({ visibility: 'visible' });
+            $passwordConfirmMessage[0].style.visibility = 'visible';
           } else {
-            $passwordConfirmMessage.css({ visibility: 'hidden' });
+            $passwordConfirmMessage[0].style.visibility = 'hidden';
           }
 
           if (widgetClassesToRemove) {
diff --git a/core/modules/views_ui/js/dialog.views.js b/core/modules/views_ui/js/dialog.views.js
index b5cbb91fbb5bfaefe3d49625e90f9a68ea9e6e8d..78fe9c9994b1ee76cb938d1b874708f5e4303435 100644
--- a/core/modules/views_ui/js/dialog.views.js
+++ b/core/modules/views_ui/js/dialog.views.js
@@ -14,7 +14,12 @@
       // Add a class to do some styles adjustments.
       $modal.closest('.views-ui-dialog').addClass('views-ui-dialog-scroll');
       // Let scroll element take all the height available.
-      $scroll.css({ overflow: 'visible', height: 'auto' });
+      $scroll.each(function () {
+        Object.assign(this.style, {
+          overflow: 'visible',
+          height: 'auto',
+        });
+      });
       modalHeight = $modal.height();
       $viewsOverride.each(function () {
         offset += $(this).outerHeight();
@@ -24,8 +29,12 @@
       const scrollOffset = $scroll.outerHeight() - $scroll.height();
       $scroll.height(modalHeight - offset - scrollOffset);
       // Reset scrolling properties.
-      $modal.css('overflow', 'hidden');
-      $scroll.css('overflow', 'auto');
+      $modal.each(function () {
+        this.style.overflow = 'hidden';
+      });
+      $scroll.each(function () {
+        this.style.overflow = 'auto';
+      });
     }
   }
 
diff --git a/core/modules/views_ui/js/views-admin.js b/core/modules/views_ui/js/views-admin.js
index f0a6da9fbef2c6d52de6e6c9720490d164e74e78..d046d08a92b385d3b49b863ad7567c4cdd922e8d 100644
--- a/core/modules/views_ui/js/views-admin.js
+++ b/core/modules/views_ui/js/views-admin.js
@@ -320,7 +320,8 @@
     const label = $target.closest('td').next().html().trim();
     // Add/remove the checked item to the list.
     if (event.target.checked) {
-      this.$selected_div.show().css('display', 'block');
+      this.$selected_div.show();
+      this.$selected_div[0].style.display = 'block';
       this.checkedItems.push(label);
     } else {
       const position = $.inArray(label, this.checkedItems);
diff --git a/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js b/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js
index c013a52016d963200ca89cbb468632983496ab09..7c82cc83c6b08cec3a10a5375bacb003038f10cb 100644
--- a/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js
+++ b/core/tests/Drupal/Nightwatch/Tests/jQueryUIPositionShimTest.js
@@ -1931,9 +1931,10 @@ module.exports = {
       function () {
         const $ = jQuery;
         const toReturn = {};
-        const $elx = $('#elx').css({
-          marginTop: 6,
-          marginLeft: 4,
+        const $elx = $('#elx');
+        Object.assign($elx[0].style, {
+          marginTop: '6px',
+          marginLeft: '4px',
         });
         $elx.position({
           my: 'left top',
@@ -1983,9 +1984,10 @@ module.exports = {
       function () {
         const $ = jQuery;
         const toReturn = {};
-        const $elx = $('#elx').css({
-          marginTop: 6,
-          marginLeft: 4,
+        const $elx = $('#elx');
+        Object.assign($elx[0].style, {
+          marginTop: '6px',
+          marginLeft: '4px',
         });
         $elx.position({
           my: 'left top',
@@ -2182,9 +2184,9 @@ module.exports = {
         const toReturn = {};
 
         const $scrollX = $('#scrollX');
-        $scrollX.css({
-          width: 100,
-          height: 100,
+        Object.assign($scrollX[0].style, {
+          width: '100px',
+          height: '100px',
           left: 0,
           top: 0,
         });
@@ -2225,9 +2227,7 @@ module.exports = {
           },
         };
 
-        $scrollX.css({
-          overflow: 'auto',
-        });
+        $scrollX[0].style.overflow = 'auto';
 
         toReturn['auto, no scroll"'] = {
           actual: $elx.offset(),
@@ -2237,11 +2237,8 @@ module.exports = {
           },
         };
 
-        $scrollX
-          .css({
-            overflow: 'auto',
-          })
-          .append($('<div>').height(300).width(300));
+        $scrollX[0].style.overflow = 'auto';
+        $scrollX.append($('<div>').height(300).width(300));
 
         $elx.position({
           of: '#scrollX',