<button type="button" class="sorting__button" id="cost-button">Цене</button>
<ul class="elements__list">
<li class="elements__item">
<div class="elements__item-image-container">
<img class="elements__item-image" src="https://funik.ru/wp-content/uploads/2018/10/17478da42271207e1d86.jpg" alt="Фото котика">
<button type="button" class="elements__item-like"></button>
<p class="elements__item-sale">-40%</p>
</div>
<h2 class="elements__item-title">Кот полосатый</h2>
<div class="elements__item-about-container">
<div class="elements__item-rectangle"></div>
<p class="elements__item-text elements__item-text_first">Коричневый окрас</p>
<div class="elements__item-text-container">
<p class="elements__item-text-bold elements__item-text-bold_age">2 мес.</p>
<p class="elements__item-text">Возраст</p>
</div>
<div class="elements__item-text-container elements__item-text-container_second">
<p class="elements__item-text-bold">4</p>
<p class="elements__item-text">Кол-во лап</p>
</div>
</div>
<h2 class="elements__item-title elements__item-title_cost">30 500 руб.</h3>
<button type="button" class="elements__item-button">Купить</button>
</li>
<li class="elements__item">
<div class="elements__item-image-container">
<img class="elements__item-image" src="https://funik.ru/wp-content/uploads/2018/10/17478da42271207e1d86.jpg" alt="Фото котика">
<button type="button" class="elements__item-like"></button>
<p class="elements__item-sale">-40%</p>
</div>
<h2 class="elements__item-title">Кот полосатый</h2>
<div class="elements__item-about-container">
<div class="elements__item-rectangle"></div>
<p class="elements__item-text elements__item-text_first">Коричневый окрас</p>
<div class="elements__item-text-container">
<p class="elements__item-text-bold elements__item-text-bold_age">2 мес.</p>
<p class="elements__item-text">Возраст</p>
</div>
<div class="elements__item-text-container elements__item-text-container_second">
<p class="elements__item-text-bold">4</p>
<p class="elements__item-text">Кол-во лап</p>
</div>
</div>
<h2 class="elements__item-title elements__item-title_cost">20 000 руб.</h3>
<button type="button" class="elements__item-button">Купить</button>
</li>
</ul>
.elements__list {
padding: 0;
margin: 0 auto 0;
list-style: none;
display: grid;
grid-gap: 23px 40px;
grid-template-columns: repeat(auto-fit, 400px);
}
.elements__item {
background-color: rgb(243, 243, 243);
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
.elements__item-about-container {
margin: 24px 0 0 29px;
padding: 0;
display: flex;
}
.elements__item-button {
width: 100%;
height: 65px;
border: none;
padding: 0;
margin: 50px 0 0;
background-color: rgb(110, 187, 211);
cursor: pointer;
font-style: normal;
font-weight: bold;
font-size: 16px;
line-height: 20px;
text-align: center;
color: rgb(255, 255, 255);
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
.elements__item-button:hover {
opacity: 0.6;
transition: opacity 0.5s;
}
.elements__item-button:active {
background-color: rgb(67, 196, 31);
}
.elements__item-image {
width: 100%;
object-fit: cover;
height: 264px;
position: relative;
}
.elements__item-image-container {
position: relative;
}
.elements__item-like {
position: absolute;
top: 36px;
right: 32px;
padding: 0;
margin: 0;
background-image: url('../../../images/like.svg');
background-repeat: no-repeat;
cursor: pointer;
width: 46px;
height: 40px;
border: none;
background-color: transparent;
}
.elements__item-rectangle {
width: 4px;
height: 26px;
background-color: rgb(110, 187, 211);
}
.elements__item-sale {
margin: 0;
padding: 10px 19px;
position: absolute;
top: 34px;
left: 38px;
width: 40px;
background-color: rgb(229, 45, 45);
font-style: normal;
font-weight: normal;
font-size: 16px;
line-height: 20px;
color: rgb(255, 255, 255);
text-align: center;
border-radius: 10px;
}
.elements__item-text {
font-style: normal;
font-weight: normal;
font-size: 12px;
line-height: 15px;
color: rgb(0, 0, 0);
max-width: 90px;
margin: 0;
padding: 0;
}
.elements__item-text_first {
margin-left: 19px;
}
.elements__item-text-bold {
font-style: normal;
font-weight: bold;
font-size: 16px;
line-height: 20px;
color: rgb(0, 0, 0);
max-width: 90px;
margin: 0;
padding: 0;
}
.elements__item-text-container {
margin-left: 20px;
}
.elements__item-text-container_second{
margin-left: 46px;
}
.elements__item-title {
margin: 29px 0 0 29px;
padding: 0;
font-style: normal;
font-weight: bold;
font-size: 24px;
line-height: 29px;
color: rgb(0, 0, 0);
}
.elements {
max-width: 1280px;
}
const costButton = document.getElementById('cost-button');
const allElements = document.querySelectorAll('.elements__item');
const allPrice = '.elements__item-title_cost';
const elementsContainer = document.querySelector('.elements__lis');
//функция по изменению стрелочки
function toggleArrow(arrow) {
if(arrow.src = "./images/right-arrow-up.png") {
arrow.src = "./images/right-arrow-down.png";
}
else {
arrow.src = "./images/right-arrow-up.png";
}
};
//функция по сортировке
function sortCard(elements, type, arrow) {
let sortingObj = {};
elements.forEach((element, index) => {
const elementValue = parseInt(element.querySelector(type).textContent.replace('руб.', '').replace(/\s+/g, ''));
sortingObj[elementValue] = {'element': element, 'index': index};
});
toggleArrow(arrow);
const keys = Object.keys(sortingObj);
function numberSort(a, b) {
a = parseInt(a);
b = parseInt(b);
if (a < b) return -1;
if (a > b) return 1;
}
keys.sort(numberSort);
keys.map(function(key, index){
elementsContainer.insertAdjacentElement('beforeend', sortingObj[key]['element']);
});
}
costButton.addEventListener("click", function() {
sortCard(allElements, allPrice, costArrow);
})
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.