@@ -18,8 +18,10 @@ $enableLazyLoadingWithoutBorders = (bool)$block->getVar(
1818 'enable_lazy_loading_for_images_without_borders ' ,
1919 'Magento_Catalog '
2020);
21+ $ width = (int )$ block ->getWidth ();
22+ $ paddingBottom = $ block ->getRatio () * 100 ;
2123?>
22- <span class="product-image-container" id=" product-image-container-<?= /* @noEscape */ $ block ->getProductId () ?> ">
24+ <span class="product-image-container product-image-container-<?= /* @noEscape */ $ block ->getProductId () ?> ">
2325 <span class="product-image-wrapper">
2426 <img class="<?= $ escaper ->escapeHtmlAttr ($ block ->getClass ()) ?> "
2527 <?php foreach ($ block ->getCustomAttributes () as $ name => $ value ): ?>
@@ -36,11 +38,29 @@ $enableLazyLoadingWithoutBorders = (bool)$block->getVar(
3638 <?php endif ; ?>
3739 alt="<?= $ escaper ->escapeHtmlAttr ($ block ->getLabel ()) ?> "/></span>
3840</span>
39- <?= /* @noEscape */ $ secureRenderer ->renderStyleAsTag (
40- 'width: ' . (int )$ block ->getWidth () . 'px; ' ,
41- '#product-image-container- ' . $ block ->getProductId ()
42- ) ?>
43- <?= /* @noEscape */ $ secureRenderer ->renderStyleAsTag (
44- 'padding-bottom: ' . ($ block ->getRatio () * 100 ) . '%; ' ,
45- '#product-image-container- ' . $ block ->getProductId () . ' span.product-image-wrapper '
46- ) ?>
41+ <?php
42+ $ styles = <<<STYLE
43+ .product-image-container- {$ block ->getProductId ()} {
44+ width: {$ width }px;
45+ }
46+ .product-image-container- {$ block ->getProductId ()} span.product-image-wrapper {
47+ padding-bottom: {$ paddingBottom }%;
48+ }
49+ STYLE ;
50+ //In case a script was using "style" attributes of these elements
51+ $ script = <<<SCRIPT
52+ prodImageContainers = document.querySelectorAll(".product-image-container- {$ block ->getProductId ()}");
53+ for (var i = 0; i < prodImageContainers.length; i++) {
54+ prodImageContainers[i].style.width = " {$ width }px";
55+ }
56+ prodImageContainersWrappers = document.querySelectorAll(
57+ ".product-image-container- {$ block ->getProductId ()} span.product-image-wrapper"
58+ );
59+ for (var i = 0; i < prodImageContainersWrappers.length; i++) {
60+ prodImageContainersWrappers[i].style.paddingBottom = " {$ paddingBottom }%";
61+ }
62+ SCRIPT ;
63+
64+ ?>
65+ <?= /* @noEscape */ $ secureRenderer ->renderTag ('style ' , [], $ styles , false ) ?>
66+ <?= /* @noEscape */ $ secureRenderer ->renderTag ('script ' , ['type ' => 'text/javascript ' ], $ script , false ) ?>
0 commit comments