- index.html
- style.css
- script.js
HTML
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Catalog | Device</title>
  <link rel="stylesheet" href="device/setting.css">
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <ul class="products">
    <li class="product product--available">
      <h2 class="product__title">Selfie stick for beginners</h2>
      <img class="product__image" src="device/item-1.jpg" alt="Selfie stick for beginners">
      <p class="product__price">200 ₽</p>
    </li>
    <li class="product product--unavailable">
      <h2 class="product__title">Professional selfie stick</h2>
      <img class="product__image" src="device/item-2.jpg" alt="Professional selfie stick">
      <p class="product__price">1,500 ₽</p>
    </li>
    <li class="product product--available">
      <h2 class="product__title">Unsinkable selfie stick</h2>
      <img class="product__image" src="device/item-3.jpg" alt="Unsinkable selfie stick">
      <p class="product__price">2,500 ₽</p>
    </li>
  </ul>
  <script src="script.js"></script>
</body>
</html>
CSS
.products {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  width: 570px;
  margin: 20px auto;
  padding: 0;
  list-style: none;
}
.product {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  width: 270px;
  margin-bottom: 30px;
}
.product__image {
  order: -1;
  width: 270px;
  height: 380px;
  margin-bottom: 15px;
}
.product__title {
  max-width: 180px;
  margin: 0;
  font-weight: 500;
  font-size: 18px;
  line-height: 24px;
}
.product__price {
  max-width: 80px;
  margin: 0;
  text-align: right;
  font-weight: 300;
  font-size: 16px;
  line-height: 27px;
}
.product--special {
  order: -1;
  width: 100%;
  height: 380px;
  flex-direction: column;
  justify-content: flex-start;
  align-content: space-between;
}
.product--special .product__title {
  width: 270px;
  max-width: 100%;
  margin-bottom: 10px;
  font-size: 28px;
  line-height: 36px;
}
.product--special .product__price {
  width: 270px;
  max-width: 100%;
  text-align: left;
  text-decoration: line-through;
  color: #cccccc;
}
.product--special .product__special-price {
  margin: 0;
}
.product--special .product__image {
  outline: 3px solid #ffc600;
}
.product--special::before {
  content: "Product of the day";
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 5px 10px;
  font-weight: 500;
  color: #111111;
  text-transform: uppercase;
  background-color: #ffc600;
}
.product--available::after,
.product--unavailable::after {
  position: absolute;
  top: 343px;
  left: 50%;
  padding: 10px 5px 2px 5px;
  border-bottom: 1px solid #57c74b;
  transform: translateX(-50%);
}
.product--available::after {
  content: "In stock";
}
.product--unavailable {
  filter: grayscale(1) opacity(0.7);
}
.product--unavailable::after {
  content: "Out of stock";
}
.product--special.product--available::after,
.product--special.product--unavailable::after {
  left: 135px;
}
JavaScript
var makeElement = function (tagName, className, text) {
  var element = document.createElement(tagName);
  element.classList.add(className);
  if (text) {
    element.textContent = text;
  }
  return element;
};
var cardList = document.querySelector('.products');
console.log(cardList.children);
var listItem = makeElement('li', 'product');
cardList.appendChild(listItem);
console.log(cardList.children);
var title = makeElement('h2', 'product__title', 'Professional selfie stick');
listItem.appendChild(title);
var picture = makeElement('img', 'product__image');
picture.src = 'device/item-4.jpg';
picture.alt = 'Professional selfie stick';
listItem.appendChild(picture);
var price = makeElement('p', 'product__price', '1000');
listItem.appendChild(price);
Console
Goalscompleted
0
- After the makeElementfunction, create acreateCardfunction.
- Move to the body of the createCardfunction the entire code, starting with declaring a variablelistItemand ending with addition ofprice(inclusive) to the product card.
- From the body of the createCard, removecardList.appendChild(listItem)andconsole.log(cardList.children).
- Return listItemfrom the function.
Comments