Битрикс корзина на Vue.js

В данной статье приведен пример реализации корзины в CMS Битрикс на Vue.js.

В примере нет сложных модификаций, здесь сделано все по простому.

Создадим в проекте папке basket. Корзина будет доступна по пути /basket/.

В файле index.php будет примерно такой код:


<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetPageProperty("description", "Интернет-магазин Корзина");
$APPLICATION->SetPageProperty("keywords", "Интернет-магазин Корзина");
$APPLICATION->SetTitle("Корзина");
?>

   <? $APPLICATION->IncludeFile(
      "/basket/baskedFixed.php",
      Array(),
      Array("MODE" => "html", "NAME" => "включаемую область"));
?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Создадим файл baskedFixed.php в папке /basket/.


<? $APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH."/styles/baskedFixed.min.css", true) ?>
<?
use Bitrix\Main\Context,
    Bitrix\Currency\CurrencyManager,
    Bitrix\Sale\Order,
    Bitrix\Sale\Basket,
    Bitrix\Sale\Delivery,
    Bitrix\Sale\PaySystem;
     CModule::IncludeModule("iblock");
    CModule::IncludeModule("catalog");
    CModule::IncludeModule("sale");
//получаем корзину
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(CSaleBasket::GetBasketUserID()), \Bitrix\Main\Context::getCurrent()->getSite());
if (!$basket->getPrice()) {?>
    <div class="make-an-order order_success-wrap">
            <div class="wrapper">
                <h2 class="make-an-order_title">Корзина</h2>
                <div class="order_success" style="margin-bottom: 15px;">
                    <h2 class="success_title">Корзина пуста</h2>
                </div>
            </div>
        </div>
    <?
}
else{
?>
        <div class="cart">
            <div class="wrapper">
                <div class="cart_header">
                    <h2 class="header_title">Корзина</h2>
                    <p class="header_subtitle">
                        У вас в корзине есть товары, которых нет в наличии, вы можете оформить предзаказ, либо удалить эти товары.<br>
                        Товар будет доставлен вам в течение 14 дней, мы дополнительно свяжемся с вами.
                    </p>
                </div>

                <div class="cart_main" id="fixedBasket">
                    <div class="cart_line">
                        <div class="line_img"><img src="/img/cart_img.png" alt="cart img"></div>
                        <p class="line_name">Наименование товара</p>
                        <div class="line_desc">
                        </div>
                        <div class="line_country"><p>Страна</p></div>
                        <div class="line_season"><p>Сезон</p></div>
                        <div class="line_size"><p>Размер коробки</p></div>
                        <div class="line_price"><p>Цена</p></div>
                        <div class="line_counter">
                            <p>Кол-во</p>    
                        </div>
                        <div class="line_summary">
                            <p>Итого</p>
                        </div>                  
                    </div>
                    <div class="cart_line"  v-for="(item, key) in goods" :data-productId="item.ID">
                        <div class="line_img"><img :src="item.IMAGE" :alt="item.NAME"></div>
                        
                        <p class="line_name">
                            <a  v-if="item.DETAIL_PAGE_URL" :href="item.DETAIL_PAGE_URL">{{item.NAME}}</a>
                            <span v-else>{{item.NAME}}</span>
                        </p>

                        <div class="line_desc">
                            <p class="desc_btn">
                                <a v-if="item.DETAIL_PAGE_URL" :href="item.DETAIL_PAGE_URL">
                                    Подробнее 
                                    о товаре
                                </a>
                            </p>
                            <div class="desc_desc">
                                <div class="desc_line">
                                    <p class="desc_line_country">Страна</p>
                                    <p class="desc_line_season">Сезон</p>
                                    <p class="desc_line_sizes">Размер коробки</p>
                                </div>
                                <div class="desc_line">
                                    <p class="desc_line_country">{{item.COUNTRY_PRODUCTION}}</p>
                                    <p class="desc_line_season">
                                       {{item.PRODUCT_SEZON}} 
                                            
                                        </p>
                                   <p class="desc_line_sizes">
                                    {{item.PRODUCT_K}}
                                    
                                    </p>
                                </div>
                                <img v-on:click="goodsDelete(item, key)" src="/img/svg/cart-desc-close.svg" alt="close" class="desc_close">
                            </div>
                        </div>

                        <div class="line_country"><p>{{item.COUNTRY_PRODUCTION}}</p></div>

                        <div class="line_season"><p>
                                 {{item.PRODUCT_SEZON}} 
                            </p>
                        </div>

                        <div class="line_size"><p>
                            {{item.PRODUCT_K}}
                         
                        </p></div>

                        <div class="line_price"><p>{{item.PRICE}}  ₽</p><span style="display: none">Цена</span></div>

                        <div class="line_counter">
                            <span style="display: none">Кол-во</span>
                            <img src="/img/svg/counter_minus.svg" alt="minus" class="counter_minus" v-on:click="goodsMinus(item); item.quantity - 1">
                            <p class="">{{item.QUANTITY}}</p> 
                            <?/*<input style="width: 38px;" class="counter_counter"  type="number" min="1" name="quantity" :value="item.QUANTITY" disabled>*/?>
                            <img src="/img/svg/counter_plus.svg" alt="plus" class="counter_plus"  v-on:click="goodsPlus(item)">
                        </div>

                        <div class="line_summary">
                            <span style="display: none">Итого</span>
                            <p class="summ">{{rounded(item.DISCOUNT * item.QUANTITY)}} ₽</p>
                        </div>

                        <div class="line_delete">
                            <img src="/img/svg/cart_line_delete.png" v-on:click="goodsDelete(item, key)" alt="delete">
                        </div>
                    </div>

                    <div class="cart_summ">
                        <p>Стоимость покупки: <span class="itog_summ"><b>0</b> руб</span></p>
                    </div>

                    <a href="/personal/order/make/" class="cart_buy">Оформить заказ</a>
                </div>

            </div>

        </div>


<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
function round(value, decimals) {
 return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
}

var vm = new Vue({
    el: '#fixedBasket',
    data: {
        goods: [],
    },
    watch:{
        goods: {
            handler: function (data) {//высчитываем сумму товаров
                let result = 0;

                for (const item of data) {

                    let price = item.DISCOUNT;

                    let quantity = item.QUANTITY;

                    result += Number(price) * Number(quantity);
                }

                if (document.querySelectorAll('.basket__fixed-btn__text b').length > 0) {
                    document.querySelector('.basket__fixed-btn__text b').textContent = this.summPrettify(result);
                }
                if (document.querySelectorAll('#fixedBasket .itog_summ b').length > 0) {
                    document.querySelector('#fixedBasket .itog_summ b').textContent = this.summPrettify(result);
                }
                if (document.querySelectorAll('.header__basket_order-counter span').length > 0) {

                    document.querySelector('.header__basket_order-counter span').textContent = this.summPrettify(result) + ' руб.';
                }
            },
            deep: true,
            immediate: true,
        },
    },
    methods: {
        getGoods: function() {//получаем товары из корзины пользователя
            fetch("https://<?=$_SERVER["HTTP_HOST"]?>/basket/getPersonalBasketGoods.php")
                .then(response => response.json())
                .then(json => {
                    this.goods = json;
                });
        },
        goodsPlus: function (item) {//увеличиваем кол-во товара
            let product_id = item.PRODUCT_ID;
                id = Number(item.ID);
                product_name = item.NAME;
                product_quant = Number(item.QUANTITY) + 1;
                var price = round(item.PRICE,2);

                product_price = item.PRICE;

            $.ajax({
                type: 'POST',
                url: '/basket/ajax.php',
                data: {
                    'ACTION': 'CART_UPDATE',
                    'PRODUCT': product_id,
                    'QUANTITY': product_quant,
                    'NAME': product_name,
                    'PRODUCT_CART_ID': id,

                    // 'PRICE': product_price,
                },
                success: () => {
                    item.QUANTITY = Number(item.QUANTITY) + 1
                }
            });
        },
        goodsMinus: function (item) {//уменьшаем кол-во товара
            if (item.QUANTITY > Number('<?=COUNT_ADD_BASKET?>')) {
                let product_id = item.PRODUCT_ID;
                    id = Number(item.ID);
                    product_name = item.NAME;
                    product_quant = Number(item.QUANTITY) - 1;
                    var price = round(item.PRICE,2);
                    product_price = item.PRICE;

                $.ajax({
                    type: 'POST',
                    url: '/basket/ajax.php',
                    data: {
                        'ACTION': 'CART_UPDATE',
                        'PRODUCT': product_id,
                        'QUANTITY': product_quant,
                        'NAME': product_name,
                        'PRODUCT_CART_ID': id,
                    },
                    success: () => {
                        item.QUANTITY = Number(item.QUANTITY) - 1
                    }
                });

            }else{
                item.QUANTITY = Number('<?=COUNT_ADD_BASKET?>');
            }
        },
        goodsDelete: function (item, key) {//удаляем товар
            let product_id = item.PRODUCT_ID;
                id = Number(item.ID);
                product_name = item.NAME;
                product_quant = 1;
                product_price = item.PRICE;

            $.ajax({
                type: 'POST',
    			url: '/basket/ajax.php',
                data: {
                    'ACTION': 'DEL_PRODUCT',
                    'PRODUCT_ID': id,
                    'NAME': product_name,
                },
                success: () => { this.goods.splice(key, 1) },
    		})
        },
        summPrettify: function(num){//улучшение визуального вида суммы. добавляем пробелы между цифрами.
            var n = num.toString();
            return n.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + ' ');
        },

        rounded: function(number){
		    return +number.toFixed(2);
		},
    },
    mounted: function () {
        this.getGoods();
    },
});
window.vm = vm;

</script>

<?}?>


Создадим файл getPersonalBasketGoods.php, в котором будет формироваться массив для корзины.


<?
define("NO_KEEP_STATISTIC", true);
define('BX_SESSION_ID_CHANGE', false);
define('NO_AGENT_CHECK', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Main\Context,
    Bitrix\Currency\CurrencyManager,
    Bitrix\Sale\Order,
    Bitrix\Sale\Basket,
    Bitrix\Sale\Delivery,
    Bitrix\Sale\PaySystem;

    Bitrix\Main\Loader::includeModule("sale");
    Bitrix\Main\Loader::includeModule("catalog");
    Bitrix\Main\Loader::includeModule("sale");
    

//получаем корзину
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(CSaleBasket::GetBasketUserID()), \Bitrix\Main\Context::getCurrent()->getSite());
//скидка
$fuser = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId(true));
$discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $fuser);
$discounts->calculate();
$result = $discounts->getApplyResult(true);
$prices = $result['PRICES']['BASKET']; // цены товаров с учетом скидки


foreach ($basket as $basketItem) {
    $ID = $basketItem->getField('ID');
    $PRODUCT_ID = $basketItem->getField('PRODUCT_ID');
    $NAME = $basketItem->getField('NAME');
    $QUANTITY = $basketItem->getQuantity();
    $PRODUCT_ID = $basketItem->getField('PRODUCT_ID');
    $DETAIL_PAGE_URL = $basketItem->getField('DETAIL_PAGE_URL');
    $BASE_PRICE = $basketItem->getField('BASE_PRICE');
    $PRICE = $basketItem->getField('PRICE');

    $DISCOUNT = $basketItem->getDiscountPrice();
    $FINAL_PRICE = $basketItem->getFinalPrice();

    $arResult["BASKET"][] = array(
        "ID" => $ID,
        "NAME" => $NAME,
        "QUANTITY" => $QUANTITY,
        "PRODUCT_ID" => $PRODUCT_ID,
        "DETAIL_PAGE_URL" => $DETAIL_PAGE_URL,
        "BASE_PRICE" => $BASE_PRICE,
        "PRICE" =>$PRICE,
    );
}
//засовываем скидку
$i = 0;
foreach ($prices as $price){
$arResult["BASKET"][$i]["DISCOUNT"]=$price["PRICE"];
$arResult["BASKET"][$i]["DISCOUNT_PRODUCT"]=round($price["PRICE"] *$arResult["BASKET"][$i]["QUANTITY"], 2);
$i++;
}



//убираем баг когда не отображаюся картинки: перешли в /order/ и затем в каталог и добавили товар
foreach ($arResult["BASKET"] as $key => $value) {
$PRODUCT_ID = $value["PRODUCT_ID"];
$intElementID = $value["PRODUCT_ID"]; // ID предложения
$mxResult = CCatalogSku::GetProductInfo(
$intElementID
);
if (is_array($mxResult))
{
    $value["PRODUCT_ID"]= $mxResult['ID']; ///echo 'ID товара = '.$mxResult['ID'];
}
else
{
    ///ShowError('Это не торговое предложение');
}



        //получение карьера, на всякий случай
    if(CModule::IncludeModule('iblock'))
    {

        $arSelect = Array("ID", "IBLOCK_ID", "NAME","DETAIL_PAGE_URL","DETAIL_PICTURE","PREVIEW_PICTURE","PICTURE", "DATE_ACTIVE_FROM","PROPERTY_*");//IBLOCK_ID и ID обязательно должны быть указаны, см. описание arSelectFields выше
        $arFilter = Array( "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y","ID"=>$value["PRODUCT_ID"]);
        $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
        //можно использовать Fetch, когда нет множественных свойств
        while($ob = $res->GetNextElement()){
            $arFields = $ob->GetFields();
        
            $arProps = $ob->GetProperties();
           $arPhotoSmall = CFile::ResizeImageGet(
               ($arFields["DETAIL_PICTURE"])?$arFields["DETAIL_PICTURE"]:$arFields["PREVIEW_PICTURE"],
               array(
                  'width'=>250,
                  'height'=>250
               ),
               BX_RESIZE_IMAGE_PROPORTIONAL,
              Array(
                  "name" => "sharpen",
                  "precision" => 0
               )
            );
            
            $arResult["BASKET"][$key]["IMAGE"] = $arPhotoSmall['src'];
            if(empty($arResult["BASKET"][$key]["DETAIL_PAGE_URL"])) $arResult["BASKET"][$key]["DETAIL_PAGE_URL"] = $arFields["DETAIL_PAGE_URL"];
            
            

            $arResult["BASKET"][$key]['COUNTRY_PRODUCTION'] = $arProps["COUNTRY_PRODUCTION"]["VALUE"];
            $arResult["BASKET"][$key]['PRODUCT_SEZON'] =implode(" ", $arProps["PRODUCT_SEZON"]["VALUE"]);
            
               $arSKU = CCatalogSKU::getOffersList(
                 $value["PRODUCT_ID"],
                0,
                array('ACTIVE' => 'Y'),
                array('ID', 'NAME', 'CODE'),
                array()
            );

             $intval_id = intval($PRODUCT_ID);
            


              if ($arSKU[$value["PRODUCT_ID"]]) {
                $arResult["BASKET"][$key]['PRODUCT_K'] = $arSKU[$value["PRODUCT_ID"]][$intval_id]["NAME"];
              }else  $arResult["BASKET"][$key]['PRODUCT_K'] = "";

        }
    }
        
 
}

echo json_encode($arResult["BASKET"]);

Создадим обработчик ajax.php, в котором реализуем обновление товаров и удаление.


<?
define('STOP_STATISTICS', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
$GLOBALS['APPLICATION']->RestartBuffer();
use COption;
use CCurrency;
use CCatalogProduct;
use CFile;
use CModule;
use CCatalogDiscount;
use CCatalogSKU;
use CPrice;
use CCurrencyLang;
use CCurrencyRates;
use CIBlockElement;
use CIBlockPriceTools;
use CSaleBasket;

\CModule::IncludeModule('iblock');
\CModule::IncludeModule('catalog');
\CModule::IncludeModule('sale');

$IBLOCK_ID = 40;//здесь лучше написать класс для получения по коде id инфоблока
$IBLOCK_OFF = 3;

if (\Bitrix\Main\Loader::includeModule("sale") && \Bitrix\Main\Loader::includeModule("catalog") && \Bitrix\Main\Loader::includeModule("iblock"))
{
	$ajaxAction = trim( $_POST['ACTION'] );
	$ajaxActionForm = trim( $_POST['ACTION_FORM'] );


		if ( $_POST['ACTION'] == 'CART_UPDATE' )
        {

            if ( $_POST['PRODUCT'] ){

                    $filter = array();
                    $filter['IBLOCK_ID'] = $IBLOCK_ID;
                    $filter['ID'] = $_POST['PRODUCT'];

                    $getOffersList = CIBlockElement::GetList(
                        array(),
                        $filter,
                        false,
                        false,
                        array('ID','NAME','DETAIL_PAGE_URL','CATALOG_GROUP_1')
                    );
                    if( $getOffersElement = $getOffersList->GetNext() )
                    {
                        $postPrice = $getOffersElement['CATALOG_PRICE_1'];
                        $getOfferPrice = $getOffersElement['CATALOG_PRICE_1'];
                        $detailPage = $getOffersElement['DETAIL_PAGE_URL'];
                        $getOffersElement = $getOffersElement['ID'];
                        $thisName = $getOffersElement['NAME'];



                    }
                }



                $arFields = array(
                    "PRODUCT_ID" => $_POST['PRODUCT'],
                    "PRODUCT_PRICE_ID" => 1,
                    "PRICE" => $postPrice,
                    "CURRENCY" => "RUB",
                    "QUANTITY" => $_POST['QUANTITY'],
                    "LID" => 's1',
                    "DELAY" => "N",
                    "CAN_BUY" => "Y",
                    "NAME" => $_POST['NAME'],
                    "MODULE" => "catalog",
                    "PRODUCT_PROVIDER_CLASS"=>'CCatalogProductProvider',
                    "DETAIL_PAGE_URL" => $detailPage
                );

                CSaleBasket::Update($_POST['PRODUCT_CART_ID'], $arFields);


            }



                if ($_POST['ACTION'] == 'DEL_PRODUCT')
                    {
                        CSaleBasket::Delete($_POST['PRODUCT_ID']);
                    }
}



Стили будут отличаться, сама корзина представлена для примера. Поэтому и стили также не являются полным соответствием, и представлены только для части корзины. Так как остальная часть всегда будет отличаться.



/* ------------------------------------ */
/* ------------------------------------ */
/* ------------------------------------ */
/* -------=========CART==========------ */
/* ------------------------------------ */
/* ------------------------------------ */
/* ------------------------------------ */
.cart {
  margin-top: 67px; }
  .cart .wrapper {
    display: grid;
    grid-template-columns: 1095px 261px;
    column-gap: 84px; }
    .cart .wrapper .cart_header {
      grid-column-start: 1;
      grid-column-end: 2;
      grid-row-start: 1;
      grid-row-end: 2;
      margin-bottom: 65px; }
      .cart .wrapper .cart_header .header_title {
        font-size: 48px;
        line-height: 46px;
        font-family: "OpiumNewC" !important;
        font-weight: 500 !important;
        margin-bottom: 25px; }
      .cart .wrapper .cart_header .header_subtitle {
        font-size: 18px;
        line-height: 175%;
        color: #373737;
        font-family: "OpiumNewC" !important;
        font-weight: 400 !important; }
    .cart .wrapper .cart_main {
      grid-column-start: 1;
      grid-column-end: 2;
      grid-row-start: 2;
      grid-row-end: 3; }
      .cart .wrapper .cart_main .cart_line {
        display: grid;
        grid-template-columns: 259px 134px 96px 255px 96px 132px 79px 38px;
        grid-template-columns: 12.49vw 6.979vw 5vw 11.281vw 5vw 6.875vw 5.115vw 1.979vw;
        padding: 34px 0;
        align-items: center;
        border-bottom: 1px solid #C4C4C4; }
        .cart .wrapper .cart_main .cart_line .line_img {
          display: none; }
        .cart .wrapper .cart_main .cart_line .line_desc {
          display: none; }
        .cart .wrapper .cart_main .cart_line p {
          font-size: 16px;
          line-height: 15px;
          font-family: "OpiumNewC" !important;
          font-weight: 500 !important;
          color: #000000;
          word-wrap: break-word; }
        .cart .wrapper .cart_main .cart_line .line_name {
          padding-right: 0 15px; }
        .cart .wrapper .cart_main .cart_line .line_country {
          text-align: center;
          padding: 0 15px; }
        .cart .wrapper .cart_main .cart_line .line_season {
          text-align: center;
          padding: 0 10px; }
        .cart .wrapper .cart_main .cart_line .line_size {
          padding-left: 25px; }
        .cart .wrapper .cart_main .cart_line .line_price {
          padding: 0 10px; }
        .cart .wrapper .cart_main .cart_line .line_counter {
          display: flex;
          justify-content: space-between;
          align-items: center;
          padding: 0 10px; }
          .cart .wrapper .cart_main .cart_line .line_counter img {
            cursor: pointer; }
        .cart .wrapper .cart_main .cart_line .line_summary {
          padding-left: 15px; }
        .cart .wrapper .cart_main .cart_line .line_delete {
          display: flex;
          justify-content: flex-end;
          align-items: center; }
        .cart .wrapper .cart_main .cart_line:first-child {
          padding: 0;
          padding-bottom: 10px; }
          .cart .wrapper .cart_main .cart_line:first-child p {
            color: #61a036; }
          .cart .wrapper .cart_main .cart_line:first-child .line_counter {
            display: flex;
            justify-content: center; }
      .cart .wrapper .cart_main .cart_summ {
        display: flex;
        justify-content: flex-end;
        padding-top: 20px;
        padding-bottom: 48px;
        font-size: 24px;
        line-height: 23px;
        font-family: "OpiumNewC" !important;
        font-weight: 500 !important; }
        .cart .wrapper .cart_main .cart_summ span {
          font-size: 36px;
          line-height: 34px; }
      .cart .wrapper .cart_main .cart_buy {
        display: block;
        background: #61a036;
        border-radius: 7px;
        padding: 20px;
        color: #FFFFFF;
        border: 0;
        font-family: "OpiumNewC" !important;
        font-weight: 500 !important;
        font-size: 18px;
        line-height: 17px;
        text-align: center;
        margin-bottom: 167px; }
    .cart .wrapper .cart_sidebar {
      grid-column-start: 2;
      grid-column-end: 3;
      grid-row-start: 1;
      grid-row-end: 3; }
      .cart .wrapper .cart_sidebar .sidebar_blk {
        position: relative;
        padding-left: 73px;
        padding-top: 8px; }
        .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_title {
          font-size: 18px;
          line-height: 153.69%;
          font-family: "OpiumNewC" !important;
          font-weight: 500 !important;
          margin-bottom: 10px; }
        .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_desc {
          font-size: 14px;
          line-height: 175%;
          font-family: "OpiumNewC" !important;
          font-weight: 400 !important;
          color: #969696; }
        .cart .wrapper .cart_sidebar .sidebar_blk .subtitle_img {
          position: absolute;
          left: 0;
          top: 0;
          width: 48px;
          height: 48px; }

@media screen and (max-width: 1920px){
    .cathalog_cathalog .wrapper .cathalog_main .cathalog_main_filter .cathalog_main_filter_groupbox:nth-of-type(4) .filter_selection {
        min-width: 13.698vw;
    }

    .cathalog_cathalog .wrapper .cathalog_main .cathalog_products .product_blk .product_heart{
        border-radius: 11px 11px 21px 19px;
    }


     .cart {
    margin-top: 3.490vw; }
    .cart .wrapper {
      grid-template-columns: 57.031vw 13.594vw;
      column-gap: 4.375vw; }
      .cart .wrapper .cart_header {
        margin-bottom: 3.385vw; }
        .cart .wrapper .cart_header .header_title {
          font-size: 2.500vw;
          line-height: 2.396vw;
          margin-bottom: 1.302vw; }
        .cart .wrapper .cart_header .header_subtitle {
          font-size: 0.938vw; }
      .cart .wrapper .cart_main {
        border-radius: 0.365vw;
        padding: 1.042vw 0;
        font-size: 0.938vw;
        line-height: 0.885vw;
        margin-bottom: 8.698vw; }
        .cart .wrapper .cart_main .cart_line {
          /*grid-template-columns: 13.490vw 6.979vw 5vw 13.281vw 5vw 6.875vw 4.115vw 1.979vw;*/
          grid-template-columns: 12.49vw 6.979vw 5vw 11.281vw 5vw 6.875vw 5.115vw 1.979vw;
          padding: 1.771vw 0; }
          .cart .wrapper .cart_main .cart_line p {
            font-size: 0.833vw;
            line-height: 0.781vw; }
          .cart .wrapper .cart_main .cart_line .line_name {
            padding-right: 0 0.781vw; }
          .cart .wrapper .cart_main .cart_line .line_country {
            padding: 0 0.781vw; }
          .cart .wrapper .cart_main .cart_line .line_season {
            padding: 0 0.521vw; }
          .cart .wrapper .cart_main .cart_line .line_size {
            padding-left: 1.302vw; }
          .cart .wrapper .cart_main .cart_line .line_price {
            padding: 0 0.521vw; }
          .cart .wrapper .cart_main .cart_line .line_counter {
            padding: 0 0.521vw; }
            .cart .wrapper .cart_main .cart_line .line_counter img {
              width: 1.667vw;
              height: 1.667vw; }
          .cart .wrapper .cart_main .cart_line .line_summary {
            padding-left: 0.781vw; }
          .cart .wrapper .cart_main .cart_line .line_delete img {
            width: 1.042vw;
            height: 1.042vw; }
          .cart .wrapper .cart_main .cart_line:first-child {
            padding: 0;
            padding-bottom: 0.521vw; }
        .cart .wrapper .cart_main .cart_summ {
          padding-top: 1.042vw;
          padding-bottom: 2.500vw;
          font-size: 1.250vw;
          line-height: 1.198vw; }
          .cart .wrapper .cart_main .cart_summ span {
            font-size: 1.875vw;
            line-height: 1.771vw; }
      .cart .wrapper .cart_sidebar .sidebar_blk {
        padding-left: 3.802vw;
        padding-top: 0.417vw; }
        .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_title {
          font-size: 0.938vw;
          margin-bottom: 0.521vw; }
        .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_desc {
          font-size: 0.729vw; }
        .cart .wrapper .cart_sidebar .sidebar_blk .subtitle_img {
          width: 2.500vw;
          height: 2.500vw; }

}


.politic_margin{

    margin-top: 20px;
    margin-bottom: 20px;
}

.popular_blocks .product_heart{
    position: absolute;
    top: 19px;
    right: 21px;
}
/*
.popular_blocks .favor.active{
    
    border-radius: 29px 38px 73px 65px;
    height: 19px;
    width: 19px;
    background: url(/img/favor_cart_active.png);
}*/
/*
.product_product .favor.active{
    
    border-radius: 29px 38px 73px 65px;
    height: 20px;
    width: 26px;
    background: url(/img/favor_detail_active.png);
}

*/

@media (min-width: 768px) and (max-width: 769px){
    .header_mobile_burger{
        margin-left: 30px;
    }
}

@media (min-width: 1023px) and (max-width: 1024px) {
.header .desktop .desktop_header_wrapper .desktop_nav .desktop_nav_items a{
        margin-right: 0.442vw !important;
    }
}



@media screen and (max-width: 768px){
    .cart .wrapper .cart_main .cart_line .line_desc {
        display: block;
        position: relative;
        padding: 0 2.734vw 0 2.604vw;
    }

    

    .cart {
    margin-top: 2.604vw; }
    .cart .wrapper {
      grid-template-columns: 1fr;
      column-gap: 0;
      padding: 0 0px; }
      .cart .wrapper .cart_header {
        margin-bottom: 2.604vw;
        grid-column-start: 1;
        grid-column-end: 2;
        grid-row-start: 1;
        grid-row-end: 2; }
        .cart .wrapper .cart_header .header_title {
          font-size: 3.125vw;
          line-height: 3.125vw;
          margin-bottom: 2.604vw; }
        .cart .wrapper .cart_header .header_subtitle {
          font-size: 1.823vw; }
      .cart .wrapper .cart_main {
        grid-column-start: 1;
        grid-column-end: 2;
        grid-row-start: 3;
        grid-row-end: 4; }
        .cart .wrapper .cart_main .cart_line {
          grid-template-columns: 30.599vw 19.271vw 11.849vw 17.188vw 10.286vw 4.818vw;
          padding: 1.771vw 0; }
          .cart .wrapper .cart_main .cart_line p {
            font-size: 2.083vw;
            line-height: 2.083vw; }
          .cart .wrapper .cart_main .cart_line .line_name {
            padding-right: 0; }
          .cart .wrapper .cart_main .cart_line .line_country {
            display: none; }
          .cart .wrapper .cart_main .cart_line .line_season {
            display: none; }
          .cart .wrapper .cart_main .cart_line .line_size {
            display: none; }
          .cart .wrapper .cart_main .cart_line .line_desc {
            display: block;
            position: relative;
            padding: 0 2.734vw 0 2.604vw; }
            .cart .wrapper .cart_main .cart_line .line_desc .desc_btn {
              padding: 0.651vw 2.214vw;
              background: #61a036;
              border-radius: 0.911vw;
              color: #FFFFFF;
              font-size: 1.563vw;
              line-height: 153.69%;
              text-align: center; }
              .cart .wrapper .cart_main .cart_line .line_desc .desc_btn a{
                color: #fff;
              }
            .cart .wrapper .cart_main .cart_line .line_desc .desc_desc {
              position: absolute;
              width: 63.542vw;
              background: white;
              z-index: 1;
              padding: 2.083vw 2.083vw 0.911vw 1.693vw;
              transform: translateX(-40%);
              border: 1px solid #61a036;
              align-items: center;
              opacity: 0;
              visibility: hidden;
              transition: .3s; }
              .cart .wrapper .cart_main .cart_line .line_desc .desc_desc p {
                font-size: 2.083vw;
                line-height: 1.953vw;
                font-family: "OpiumNewC" !important;
                font-weight: 400 !important; }
              .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line {
                display: grid;
                grid-template-columns: 11.589vw 11.849vw 1fr;
                padding: 5.599vw 0;
                border-bottom: 1px solid #C4C4C4; }
                .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line:first-child {
                  padding: 0;
                  padding-bottom: 1.302vw; }
                  .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line:first-child p {
                    color: #61a036; }
                .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line p:nth-child(1) {
                  padding-right: 0.651vw; }
                .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line p:nth-child(2) {
                  padding: 0 0.651vw; }
              .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_close {
                position: absolute;
                top: 7px;
                right: 10px; }
            .cart .wrapper .cart_main .cart_line .line_desc .desc_desc-active {
              opacity: 1;
              visibility: visible; }
          .cart .wrapper .cart_main .cart_line .line_price {
            padding: 0 0.521vw; }
          .cart .wrapper .cart_main .cart_line .line_counter {
            padding: 0 15px; }
            .cart .wrapper .cart_main .cart_line .line_counter img {
              width: 4.167vw;
              height: 4.167vw; }
          .cart .wrapper .cart_main .cart_line .line_summary {
            padding-left: 0.781vw; }
          .cart .wrapper .cart_main .cart_line .line_delete img {
            width: 2.604vw;
            height: 2.604vw; }
          .cart .wrapper .cart_main .cart_line:first-child {
            padding: 0;
            padding-bottom: 0.521vw; }
        .cart .wrapper .cart_main .cart_summ {
          padding-top: 2.604vw;
          padding-bottom: 5.859vw;
          font-size: 3.125vw;
          line-height: 2.995vw; }
          .cart .wrapper .cart_main .cart_summ span {
            font-size: 4.688vw;
            line-height: 4.427vw; }
        .cart .wrapper .cart_main .cart_buy {
          border-radius: 0.911vw;
          padding: 2.604vw;
          font-size: 2.344vw;
          line-height: 2.214vw;
          margin-bottom: 9.505vw; }
      .cart .wrapper .cart_sidebar {
        grid-column-start: 1;
        grid-column-end: 2;
        grid-row-start: 2;
        grid-row-end: 3;
        display: flex;
        flex-direction: row; }
        .cart .wrapper .cart_sidebar .sidebar_blk {
          display: flex;
          flex-direction: row-reverse;
          align-items: center;
          padding-top: 0;
          margin-right: 7.161vw;
          padding-left: 0;
          margin-bottom: 1.953vw; }
          .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_title {
            font-size: 2.344vw;
            margin-bottom: 0;
            margin-left: 3.255vw; }
          .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_desc {
            display: none; }
          .cart .wrapper .cart_sidebar .sidebar_blk .subtitle_img {
            position: relative;
            width: 6.250vw;
            height: 6.250vw; }
          .cart .wrapper .cart_sidebar .sidebar_blk:last-child {
            margin-right: 0; }

}

@media screen and (max-width: 520px){
    .cart {
    margin-top: 5.604vw; }
    .cart .wrapper {
      grid-template-columns: 1fr;
      column-gap: 0;
      padding: 0 0px; }
      .cart .wrapper .cart_header {
        margin-bottom: 6.250vw; }
        .cart .wrapper .cart_header .header_title {
          font-size: 4.375vw;
          line-height: 4.375vw;
          margin-bottom: 2.604vw; }
        .cart .wrapper .cart_header .header_subtitle {
          font-size: 4.063vw; }
      .cart .wrapper .cart_main {
        grid-column-start: 1;
        grid-column-end: 2;
        grid-row-start: 3;
        grid-row-end: 4;
        width: 93.750vw; }
        .cart .wrapper .cart_main .cart_line {
          grid-template-columns: 28.125vw 18.750vw 30.625vw 16.875vw;
          padding: 0 0;
          position: relative;
          border: 0;
          margin-bottom: 12.500vw; }
          .cart .wrapper .cart_main .cart_line p, .cart .wrapper .cart_main .cart_line span {
            /*font-size: 4.063vw;*/
            font-size: 3.363vw;
            line-height: 4.063vw; }
          .cart .wrapper .cart_main .cart_line span {
            color: #61a036;
            display: block !important;
            font-family: "OpiumNewC" !important;
            font-weight: 500 !important; }
          .cart .wrapper .cart_main .cart_line .line_img {
            display: block;
            grid-column-start: 1;
            grid-column-end: 2;
            grid-row-start: 2;
            grid-row-end: 4; }
            .cart .wrapper .cart_main .cart_line .line_img img {
              width: 28.125vw;
              height: 28.125vw; }
          .cart .wrapper .cart_main .cart_line .line_desc {
            padding: 0;
            grid-column-start: 2;
            grid-column-end: 5;
            grid-row-start: 2;
            grid-row-end: 3; }
            .cart .wrapper .cart_main .cart_line .line_desc .desc_btn {
              padding: 2.188vw 10.625vw;
              border-radius: 2.188vw;
              font-size: 3.125vw;
              width: fit-content;
              margin-left: 3.125vw;
              margin-bottom: 1.563vw; }
            .cart .wrapper .cart_main .cart_line .line_desc .desc_desc {
              width: 95.625vw;
              padding: 3.750vw 2.188vw;
              transform: translateX(-31.5%); }
              .cart .wrapper .cart_main .cart_line .line_desc .desc_desc p {
                font-size: 4.063vw;
                line-height: 4.063vw; }
              .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line {
                grid-template-columns: 18.750vw 20vw 1fr;
                padding: 9.375vw 0;
                border-bottom: 1px solid #C4C4C4; }
                .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line:first-child {
                  padding: 0;
                  padding-bottom: 1.302vw; }
                  .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line:first-child p {
                    color: #61a036; }
                .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line p:nth-child(1) {
                  padding-right: 1.151vw; }
                .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_line p:nth-child(2) {
                  padding: 0 1.151vw; }
              .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_close {
                position: absolute;
                top: 2.188vw;
                right: 3.125vw; }
                .cart .wrapper .cart_main .cart_line .line_desc .desc_desc .desc_close img {
                  width: 3.750vw;
                  height: 3.750vw; }
            .cart .wrapper .cart_main .cart_line .line_desc .desc_desc-active {
              opacity: 1;
              visibility: visible; }
          .cart .wrapper .cart_main .cart_line .line_name {
            grid-column-start: 1;
            grid-column-end: 5;
            grid-row-start: 1;
            grid-row-end: 2;
            padding: 0.938vw 10.938vw 0.938vw 0;
            text-align: right;
            margin-bottom: 3.125vw; }
          .cart .wrapper .cart_main .cart_line .line_price {
            padding: 0 0.521vw;
            display: flex;
            flex-direction: column-reverse;
            align-items: center;
            border-right: 1px solid #C4C4C4; }
            .cart .wrapper .cart_main .cart_line .line_price span {
              margin-bottom: 5.938vw; }
          .cart .wrapper .cart_main .cart_line .line_counter {
            padding: 0 1.563vw;
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            justify-items: center; }
            .cart .wrapper .cart_main .cart_line .line_counter span {
              grid-column-start: 1;
              grid-column-end: 4;
              text-align: center;
              margin-bottom: 3.125vw; }
            .cart .wrapper .cart_main .cart_line .line_counter img {
              width: 7.813vw;
              height: 7.813vw;
              text-align: center; }
          .cart .wrapper .cart_main .cart_line .line_summary {
            padding-left: 0.781vw;
            display: flex;
            flex-direction: column;
            align-items: center;
            border-left: 1px solid #C4C4C4;
            justify-content: center; }
            .cart .wrapper .cart_main .cart_line .line_summary span {
              margin-bottom: 5.938vw; }
          .cart .wrapper .cart_main .cart_line .line_delete {
            position: absolute;
            right: 0;
            top: 0; }
            .cart .wrapper .cart_main .cart_line .line_delete img {
              width: 4.688vw;
              height: 4.688vw; }
          .cart .wrapper .cart_main .cart_line:first-child {
            display: none; }
        .cart .wrapper .cart_main .cart_summ {
          padding-top: 0;
          padding-bottom: 7.813vw;
          font-size: 4.063vw;
          line-height: 4.063vw; }
          .cart .wrapper .cart_main .cart_summ span {
            font-size: 5.625vw;
            line-height: 5.625vw; }
        .cart .wrapper .cart_main .cart_buy {
          border-radius: 0.911vw;
          padding: 3.750vw;
          font-size: 3.750vw;
          line-height: 3.750vw;
          margin-bottom: 14.063vw; }
      .cart .wrapper .cart_sidebar {
        grid-column-start: 1;
        grid-column-end: 2;
        grid-row-start: 2;
        grid-row-end: 3;
        display: flex;
        flex-direction: row;
        flex-wrap: wrap; }
        .cart .wrapper .cart_sidebar .sidebar_blk {
          display: flex;
          flex-direction: row-reverse;
          align-items: center;
          padding-top: 0;
          margin-right: 7.813vw;
          padding-left: 0;
          margin-bottom: 7.500vw; }
          .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_title {
            font-size: 4.375vw;
            margin-bottom: 0;
            margin-left: 3.255vw; }
          .cart .wrapper .cart_sidebar .sidebar_blk .sidebar_blk_desc {
            display: none; }
          .cart .wrapper .cart_sidebar .sidebar_blk .subtitle_img {
            position: relative;
            width: 9.375vw;
            height: 9.375vw; }
          .cart .wrapper .cart_sidebar .sidebar_blk:last-child {
            margin-right: 0; }
          .cart .wrapper .cart_sidebar .sidebar_blk:nth-child(2) {
            margin-right: 0; }



            /* MAKE ORDER*/
              .make-an-order .wrapper {
    padding-top: 7.813vw;
    column-gap: 0;
    grid-template-columns: 100%;
    width: 87.500vw; }
    .make-an-order .wrapper .make-an-order_title {
      font-size: 7.500vw;
      line-height: 8.750vw;
      margin-bottom: 10.313vw;
      text-align: center; }
    .make-an-order .wrapper .make-an-order_status {
      display: none; }
    .make-an-order .wrapper .make-an-order_my-data {
      margin-bottom: 11.250vw;
      width: 100%; }
      .make-an-order .wrapper .make-an-order_my-data .my-data_header {
        margin-bottom: 4.167vw; }
        .make-an-order .wrapper .make-an-order_my-data .my-data_header .my-data_title {
          font-size: 5.625vw;
          line-height: 6.563vw;
          padding: 1.875vw 0 1.875vw 15vw;
          background-size: 10vw; }
        .make-an-order .wrapper .make-an-order_my-data .my-data_header .my-data_hint {
          display: none; }
      .make-an-order .wrapper .make-an-order_my-data .my-data_inputs {
        width: 100%; }
        .make-an-order .wrapper .make-an-order_my-data .my-data_inputs .my-data_groupbox .my-data_input-title {
          font-size: 4.375vw;
          line-height: 4.063vw;
          margin-bottom: 4.688vw;
          font-family: "OpiumNewC" !important;
          font-weight: 500 !important; }
        .make-an-order .wrapper .make-an-order_my-data .my-data_inputs .my-data_groupbox .my-data_input {
          font-size: 4.375vw;
          line-height: 4.063vw;
          border-radius: 2.188vw;
          padding: 3.438vw 6.250vw;
          margin-bottom: 4.688vw; }
        .make-an-order .wrapper .make-an-order_my-data .my-data_inputs .my-data_groupbox-splitted {
          flex-direction: column; }
          .make-an-order .wrapper .make-an-order_my-data .my-data_inputs .my-data_groupbox-splitted .my-data_groupbox {
            width: 100%; }
        .make-an-order .wrapper .make-an-order_my-data .my-data_inputs .my-data_checkbox label {
          font-size: 4.375vw;
          line-height: 4.063vw;
          padding: 0 0 0 9.688vw;
          background-size: 6.250vw;
          display: block;
          font-family: "OpiumNewC" !important;
          font-weight: 500 !important; }
        .make-an-order .wrapper .make-an-order_my-data .my-data_inputs .my-data_checkbox input:checked + label {
          background-size: 6.875vw; }
    .make-an-order .wrapper .make-an-order_delivey-method {
      margin-bottom: 4.063vw;
      grid-column-start: 1;
      grid-column-end: 3; }
      .make-an-order .wrapper .make-an-order_delivey-method .delivey-method_header {
        font-size: 5.625vw;
        line-height: 6.563vw;
        padding: 1.875vw 0 1.875vw 15vw;
        background-size: 10vw;
        display: block;
        margin: 0 auto;
        margin-bottom: 12.813vw;
        text-align: center;
        width: fit-content; }
      .make-an-order .wrapper .make-an-order_delivey-method .delivey-method_methods {
        column-gap: 0;
        grid-template-columns: 1fr; }
        .make-an-order .wrapper .make-an-order_delivey-method .delivey-method_methods .delivey-method_method {
          width: 100%;
          position: relative; }
          .make-an-order .wrapper .make-an-order_delivey-method .delivey-method_methods .delivey-method_method label {
            font-size: 4.375vw;
            line-height: 4.063vw;
            padding: 0 0 0 9.688vw;
            background-size: 6.250vw;
            width: 51.563vw;
            margin-bottom: 3.125vw;
            min-height: 7.500vw; }
            .make-an-order .wrapper .make-an-order_delivey-method .delivey-method_methods .delivey-method_method label span {
              position: absolute;
              right: 0;
              padding: 1.563vw;
              border-radius: 0.938vw;
              margin-top: 0.239vw; }
          .make-an-order .wrapper .make-an-order_delivey-method .delivey-method_methods .delivey-method_method input:checked + label {
            background-size: 8.500vw;
            margin-left: -1vw;
            padding-left: 10.688vw; }
          .make-an-order .wrapper .make-an-order_delivey-method .delivey-method_methods .delivey-method_method .method_desc {
            padding-left: 9.688vw;
            font-size: 3.750vw;
            margin-bottom: 8.438vw; }
    .make-an-order .wrapper .make-an-order_adress {
      width: 100%;
      grid-column-start: 1;
      grid-column-end: 3; }
      .make-an-order .wrapper .make-an-order_adress input, .make-an-order .wrapper .make-an-order_adress select {
        font-size: 5.625vw;
        line-height: 6.563vw;
        border-radius: 2.188vw;
        padding: 3.438vw 6.250vw; }
      .make-an-order .wrapper .make-an-order_adress .adress_input_title {
        font-size: 5.625vw;
        line-height: 6.563vw;
        margin-bottom: 4.688vw; }
      .make-an-order .wrapper .make-an-order_adress .adress_line1 {
        flex-direction: column; }
        .make-an-order .wrapper .make-an-order_adress .adress_line1 .adress_groupbox {
          margin-bottom: 4.688vw; }
          .make-an-order .wrapper .make-an-order_adress .adress_line1 .adress_groupbox:nth-of-type(1) {
            width: 100%; }
          .make-an-order .wrapper .make-an-order_adress .adress_line1 .adress_groupbox:nth-of-type(2) {
            width: 100%; }
          .make-an-order .wrapper .make-an-order_adress .adress_line1 .adress_groupbox:nth-of-type(3) {
            width: 100%; }
            .make-an-order .wrapper .make-an-order_adress .adress_line1 .adress_groupbox:nth-of-type(3) select {
              width: 41.250vw; }
            .make-an-order .wrapper .make-an-order_adress .adress_line1 .adress_groupbox:nth-of-type(3) .groupbox_splitter {
              padding: 1.563vw;
              font-size: 5.625vw; }
      .make-an-order .wrapper .make-an-order_adress .adress_line2 {
        margin-bottom: 3.906vw;
        display: flex;
        flex-direction: column; }
        .make-an-order .wrapper .make-an-order_adress .adress_line2 .adress_groupbox {
          margin-bottom: 4.688vw; }
          .make-an-order .wrapper .make-an-order_adress .adress_line2 .adress_groupbox input, .make-an-order .wrapper .make-an-order_adress .adress_line2 .adress_groupbox select {
            width: 100%;
            font-size: 5.625vw;
            line-height: 6.563vw;
            border-radius: 2.188vw;
            padding: 3.438vw 6.250vw; }
          .make-an-order .wrapper .make-an-order_adress .adress_line2 .adress_groupbox:nth-of-type(1) {
            width: 100%; }
          .make-an-order .wrapper .make-an-order_adress .adress_line2 .adress_groupbox:nth-of-type(2) {
            width: 100%; }
    .make-an-order .wrapper .make-an-order_payment-way {
      grid-column-start: 1;
      grid-column-end: 2;
      display: flex;
      flex-direction: column;
      width: 100%; }
      .make-an-order .wrapper .make-an-order_payment-way .payment-way_title {
        font-size: 5.625vw;
        line-height: 6.563vw;
        padding: 1.875vw 0 1.875vw 15vw;
        background-size: 10vw;
        display: block;
        margin: 0 auto;
        margin-bottom: 12.813vw;
        text-align: center;
        width: fit-content; }
      .make-an-order .wrapper .make-an-order_payment-way .payment-way_way {
        width: 100%; }
        .make-an-order .wrapper .make-an-order_payment-way .payment-way_way label {
          font-size: 4.375vw;
          line-height: 4.063vw;
          padding: 1.250vw 0 1.250vw 9.688vw;
          background-size: 6.250vw;
          margin-bottom: 3.125vw; }
        .make-an-order .wrapper .make-an-order_payment-way .payment-way_way input:checked + label {
          background-size: 8.500vw;
          margin-left: -1vw;
          padding-left: 10.688vw; }
        .make-an-order .wrapper .make-an-order_payment-way .payment-way_way .way_description {
          padding-left: 9.688vw;
          font-size: 3.750vw;
          margin-bottom: 8.438vw;
          line-height: 6.563vw; }
          .make-an-order .wrapper .make-an-order_payment-way .payment-way_way .way_description:last-child {
            margin-bottom: 12.500vw; }
      .make-an-order .wrapper .make-an-order_payment-way .payment-way_pay-btn {
        padding: 15px;
        font-size: 18px;
        border-radius: 7px;
        width: 100%;
        margin-bottom: 9.375vw; }
    .make-an-order .wrapper .make-an-order_my-order {
      width: 100%;
      grid-column-start: 2;
      grid-column-end: 1;
      grid-row-start: 6;
      grid-row-end: 6; }
      .make-an-order .wrapper .make-an-order_my-order .my-order_header {
        font-size: 5.625vw;
        line-height: 6.563vw;
        padding: 1.875vw 0 1.875vw 15vw;
        background-size: 10vw;
        display: block;
        margin: 0 auto;
        margin-bottom: 9.375vw;
        text-align: center;
        width: fit-content; }
      .make-an-order .wrapper .make-an-order_my-order .my-order_main {
        padding: 4.688vw;
        border-radius: 2.188vw;
        margin-bottom: 7.813vw; }
        .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_product p {
          font-size: 4.375vw;
          line-height: 4.063vw;
          margin-bottom: 7.813vw; }
        .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_product .product_name {
          width: 54.125vw; }
        .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_product .product_price {
          margin-left: 0.694vw; }
        .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_delivery p {
          font-size: 4.375vw;
          font-size: 3.675vw;
          line-height: 4.063vw;
          margin-bottom: 7.813vw; }
        .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_delivery .delivery_name {
          width: 54.125vw; }
        .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_delivery .delivery_price {
          margin-left: 0.694vw;
          font-size: 5.625vw;
          line-height: 6.563vw; }
        .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_summ {
          padding-top: 7.813vw; }
          .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_summ .summ_text {
            font-size: 4.375vw;
            line-height: 4.063vw; }
          .make-an-order .wrapper .make-an-order_my-order .my-order_main .my-order_summ .summ_summ {
            /*font-size: 7.500vw;*/
            font-size: 4.500vw;
            line-height: 8.750vw;
            margin-left: 0.694vw; }

}


.auth-message.mes-text p{
    text-align: left;
} 


p.counter_minus, p.counter_plus,.sidebar_tell-friends a.social_share{
    cursor: pointer;
}

 .back_nono_product{
     background: #C4C4C4 !important;
 }

 .pagination_blk a {
    padding: 13px 20px;
    border: 1px solid #61a036;
    border-radius: 10px;
 }

 .lk .wrapper .lk_main-info .info_fieldname{
    font-size: 18px;
 }

 .about_sertificats .wrapper .about_sertificats_slider .swiper-container .swiper-wrapper .swiper-slide .sertificats_sertificat img{
    border: 1px solid #61a036;
    border-radius: 12px;
 }
@media (max-width: 470px) {
    #myModal > div > div.modal-header > h2{
        margin-left: -10px;
        font-size: 16px;
    }
    #myModal > div > div.modal-header > span{
        font-size: 20px;
    }
}

.pagination_blk{
    padding: 1px !important;
}
.navigation_left, .navigation_right{
    align-items: center !important;
}
.pagination_blk-active{
   margin-top: -1px !important;
    height: 2.550vw; !important;
}

.product_button {
    background: #61a036;
    border-radius: 7px;
    display: block;
    padding: 16px;
    text-align: center;
    color: white;
    font-size: 16px;
    line-height: 15px;
    font-family: "OpiumNewC" !important;
    font-weight: 400 !important;
}
@media(min-width: 1024px){
    .popular_class_width{
        /*width: calc(20% );*/
        min-width: 237px;
    }

    .catalog_quantity_width{
       flex-wrap: inherit; 
    }

    .catalog_quantity_width .card__calc{
        margin-left: 5px;
    }

    .make-an-order.order_success-wrap.basket-empty{
        min-height: 600px;
    }

    .lk .wrapper .lk_selection-blk{
        position: relative;
        padding-right: 30px;
        width: 100%;
    }

    .lk .cathalog_main_filter_groupbox {
        display: flex;
        align-items: center;
        position: absolute;
        /* margin-left: 35.5%; */
        right: 30px;
        margin:0;
    }

    .lk .wrapper .lk_header{
        padding-right: 30px;
    }

}

@media (max-width: 450px){
    .card__btn-buy.disabled{
        /*margin-top:30px !important;*/
        font-size: 16px;
    }

    .about_sertificats .wrapper .about_sertificats_slider .swiper-container {
        margin: 0px 37px;
    }

    .about_sertificats .wrapper .about_sertificats_slider .swiper-container .swiper-wrapper .swiper-slide .sertificats_sertificat {
        width: 195px;
        margin-right: 40px;
    }

    .about_sertificats .wrapper .about_sertificats_slider .swiper-button-prev{
        left: 10px;
    }

    .about_sertificats .wrapper .about_sertificats_slider .swiper-button-next {
        right: 10px;
    }

    .about_webs .wrapper .webs_main{
        display: none;
    }

    .popular__list{
       margin-top: 15px; 
    }

    .cathalog_cathalog .wrapper .wrapper{
        padding-left: 0px;
        padding-right: 30px;
    }

    .popular.recomends_class{
       margin-top:30px; 
    }

    .mobile_search_in_catalog{
        display:block;
        width: 100%;
    }

    .cathalog_main .swiper-container{
        width: 100%;
    }

}

@media(min-width: 451px){
     .about_seti_desc{
        display:none;
     }

     .mobile_search_in_catalog{
        display:none;
    }


}

select.typeselect{background: 0;
    border: 2px solid #61A036;
    border-radius: 7px;
    padding: 10px;
    -webkit-appearance: none;
    font-size: 18px;
    /* line-height: 17px; */
    font-family: "OpiumNewC" !important;
    font-weight: 400 !important;
    color: #171717;
    margin-top: 10px;
    margin-right: 7px;
    line-height: 1.1vw;}




    .head-actives .swiper-pagination.swiper-pagination-clickable.swiper-pagination-bullets{
        display:none;
    }


На этом корзина на Vue.js на Битрикс завершена. Код не является идеальным. Лучше конечно использовать сборщик, собирать стили и скрипты, и подключать стили и скрипты в нужном месте. Здесь код больше представлен для ознакомления, в учебных целях, когда можно по простому создать корзину.

Интересные статьи по программированию:

Уважаемый читатель!

Ты можешь сделать проект Mirdeveloper.ru лучше!

Написание статей требует много затрат, времени и сил, ресурсов, в том числе и денежных.

Оставь чаевые, и будут новые статьи, и появятся видео.

Это даст новые возможности в улучшении сайта

Спасибо за то, что Вы с нами!


Комментарии находятся на модерации или не добавлены.

Для добавления комментариев необходимо зарегистрироваться и авторизоваться

Также возможно авторизоваться через Социальную сеть Вконтакте (VK)