{"id":100116,"date":"2026-09-09T11:57:55","date_gmt":"2026-09-09T11:57:55","guid":{"rendered":"https:\/\/ripbozo.ir\/?page_id=100116"},"modified":"2026-10-15T23:43:39","modified_gmt":"2026-10-15T20:13:39","slug":"landing","status":"publish","type":"page","link":"https:\/\/iransteel.net\/","title":{"rendered":"landing"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"100116\" class=\"elementor elementor-100116\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20b01e0 e-con-full e-flex e-con e-parent\" data-id=\"20b01e0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22bce4b elementor-widget elementor-widget-html\" data-id=\"22bce4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- \u2500\u2500 Rolling text (fixed) \u2014 paste into an Elementor HTML widget \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     \u2022 No pause on hover (no :hover rules at all).\n     \u2022 Seamless loop: the text strip is built of two identical halves and the\n       animation slides exactly one half, so the second copy is always already\n       on screen \u2014 no empty gap, ever.\n     \u2022 Band height = the .txt-marquee__item line-height (currently 21.6px).\n     \u2022 Speed is the SPEED constant below (pixels per second). -->\n<div class=\"txt-marquee\" dir=\"ltr\">\n  <div class=\"txt-marquee__track\">\n    <div class=\"txt-marquee__half\">\n      <span class=\"txt-marquee__item\">\u06a9\u0644\u064a\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u062f\u0631\u0628\u0627\u0631\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f \u060c \u0635\u0646\u0627\u06cc\u0639 \u0648\u0627\u0628\u0633\u062a\u0647 \u0648 \u0645\u0639\u0627\u062f\u0646<\/span>\n    <\/div>\n    <div class=\"txt-marquee__half\" aria-hidden=\"true\">\n      <span class=\"txt-marquee__item\">\u06a9\u0644\u064a\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u062f\u0631\u0628\u0627\u0631\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f \u060c \u0635\u0646\u0627\u06cc\u0639 \u0648\u0627\u0628\u0633\u062a\u0647 \u0648 \u0645\u0639\u0627\u062f\u0646<\/span>\n    <\/div>\n  <\/div>\n<\/div>\n<style>\n  .txt-marquee {\n    width: 100%;\n    overflow: hidden;\n    box-sizing: border-box;\n    direction: ltr;\n    background: #BDDAF3;\n  }\n  .txt-marquee__track {\n    display: flex;\n    width: max-content;\n    will-change: transform;\n    \/* duration is set by the script (halfWidth \/ SPEED); this is only the\n       no-JS fallback *\/\n    animation: txt-marquee-scroll 30s linear infinite;\n  }\n  .txt-marquee__half {\n    display: flex;\n    flex: 0 0 auto;\n  }\n  .txt-marquee__item {\n    display: inline-block;\n    white-space: nowrap;\n    padding: 0 40px;\n    font-size: 12px;\n    line-height: 21.6px; \/* band height = 18px + 20% *\/\n    font-family: Arial, sans-serif;\n    font-weight: 500;\n    direction: rtl;\n    unicode-bidi: isolate;\n  }\n  @keyframes txt-marquee-scroll {\n    from { transform: translateX(0); }\n    to   { transform: translateX(-50%); }\n  }\n<\/style>\n<script>\n(function () {\n  var SPEED = 70; \/\/ rolling speed in pixels per second \u2014 tune me\n\n  document.querySelectorAll('.txt-marquee').forEach(function (box) {\n    if (box.dataset.mqReady) { return; }\n    box.dataset.mqReady = '1';\n\n    var track = box.querySelector('.txt-marquee__track');\n    var half  = box.querySelector('.txt-marquee__half');\n    if (!track || !half) { return; }\n\n    var item = half.querySelector('.txt-marquee__item');\n    var itemW = item.getBoundingClientRect().width;\n    if (!itemW) { return; }\n\n    \/\/ how many copies per half are needed so ONE half already fills the box\n    var perHalf = Math.max(2, Math.ceil(box.clientWidth \/ itemW) + 1);\n    var itemHTML = item.outerHTML;\n    half.innerHTML = new Array(perHalf + 1).join(itemHTML);\n\n    \/\/ drop the static fallback half(s) so the track holds EXACTLY two halves\u2026\n    box.querySelectorAll('.txt-marquee__half').forEach(function (h) {\n      if (h !== half) { h.remove(); }\n    });\n    \/\/ \u2026then append an exact copy of the computed half\n    var half2 = half.cloneNode(true);\n    half2.setAttribute('aria-hidden', 'true');\n    track.appendChild(half2);\n\n    var halfW = half.getBoundingClientRect().width;\n    track.style.animationDuration = (halfW \/ SPEED) + 's';\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<header class=\"elementor-element elementor-element-6e46425 e-con e-atomic-element e-flexbox-base e-default-header e-6e46425-518c335 \" data-id=\"6e46425\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6e46425\" data-e-type=\"e-flexbox\" data-id=\"6e46425\">\n    \t\t<div class=\"elementor-element elementor-element-f878186 elementor-widget elementor-widget-spacer\" data-id=\"f878186\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e8b9fa elementor-widget elementor-widget-heading\" data-id=\"2e8b9fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">\u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6268e7d elementor-widget elementor-widget-spacer\" data-id=\"6268e7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b73c650 elementor-widget elementor-widget-html\" data-id=\"b73c650\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =====================================================================\n     \u00ab\u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f\u00bb \u2014 Latest posts list (Elementor HTML widget)\n     ---------------------------------------------------------------------\n     Replica of the old iransteel.net landing-page list:\n       \u00b7 heading 30px bold, centered\n       \u00b7 title cell : peach #F9DDD4 \u2014 black #110001 link, 15px Tahoma, no\n                      underline, hover #022CB0, right-aligned\n       \u00b7 date cell  : green #ABF7AC \u2014 122px wide, centered, Jalali dd\/mm\/yyyy,\n                      pinned at the RIGHT end of the row (positions follow the\n                      old table's column order)\n       \u00b7 rows : 26px tall, 4px white gaps (old cellspacing=4)\n\n     Data source (changed):\n       \u00b7 REST API of https:\/\/fouladnews.ir\n       \u00b7 category \"\u0641\u0648\u0644\u0627\u062f\" \u2192 categories=24\n       \u00b7 endpoint:\n         https:\/\/fouladnews.ir\/wp-json\/wp\/v2\/posts?categories=24&per_page=50&_fields=title,link,date\n\n     Knobs:\n       \u00b7 N          \u2192 how many posts to fetch          (default 50)\n       \u00b7 max-height \u2192 scroll-window height             (default 600px)\n\n     If the page already has an \u00ab\u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f\u00bb heading,\n     just delete the <h1> line below.\n     ===================================================================== -->\n<div id=\"steel-news\">\n<style>\n#steel-news { direction: rtl; text-align: right; font-family: Tahoma, Arial, sans-serif; font-size: 15px; color: #110001; }\n#steel-news h1 { margin: 12px 0 14px; font: bold 30px\/1.3 Tahoma, Arial, sans-serif; text-align: center; color: #000; }\n#steel-news .steel-news__list { max-height: 600px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #999999 #eeeeee; }\n#steel-news .steel-news__list::-webkit-scrollbar { width: 8px; }\n#steel-news .steel-news__list::-webkit-scrollbar-thumb { background: #999999; border-radius: 4px; }\n#steel-news .steel-news__row { display: flex; gap: 4px; margin-bottom: 4px; direction: ltr; }\n#steel-news .steel-news__title { flex: 1; min-width: 0; display: block; padding: 2px 6px; background: #F9DDD4; color: #110001; text-decoration: none; line-height: 22px; direction: rtl; text-align: right; }\n#steel-news .steel-news__title:hover { color: #022CB0; }\n#steel-news .steel-news__date { flex: none; width: 122px; padding: 2px 0; background: #ABF7AC; text-align: center; line-height: 22px; color: #110001; }\n#steel-news .steel-news__loading { padding: 10px; color: #666666; }\n<\/style>\n<div class=\"steel-news__list\" id=\"steel-news-list\">\n  <div class=\"steel-news__loading\">\u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0627\u062e\u0628\u0627\u0631\u2026<\/div>\n<\/div>\n<script>\n(function () {\n  var N = 50; \/* how many posts to show (the rest are reached by scrolling) *\/\n  var API = 'https:\/\/fouladnews.ir\/wp-json\/wp\/v2\/posts?categories=24&per_page=' + N + '&_fields=title,link,date';\n  var box = document.getElementById('steel-news-list');\n  if (!box) { return; }\n\n  function pad(n) { return n < 10 ? '0' + n : '' + n; }\n\n  \/* Gregorian \u2192 Jalali (dd\/mm\/yyyy, e.g. 17\/10\/1404) *\/\n  function toJalali(gy, gm, gd) {\n    var gdm = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n    var jy = (gy <= 1600) ? 0 : 979; gy -= (gy <= 1600) ? 621 : 1600;\n    var gy2 = (gm > 2) ? gy + 1 : gy;\n    var days = 365 * gy + Math.floor((gy2 + 3) \/ 4) - Math.floor((gy2 + 99) \/ 100) +\n               Math.floor((gy2 + 399) \/ 400) - 80 + gd + gdm[gm - 1];\n    jy += 33 * Math.floor(days \/ 12053); days %= 12053;\n    jy += 4 * Math.floor(days \/ 1461); days %= 1461;\n    if (days > 365) { jy += Math.floor((days - 1) \/ 365); days = (days - 1) % 365; }\n    var jm = (days < 186) ? 1 + Math.floor(days \/ 31) : 7 + Math.floor((days - 186) \/ 30);\n    var jd = 1 + ((days < 186) ? days % 31 : (days - 186) % 30);\n    return [jy, jm, jd];\n  }\n\n  fetch(API)\n    .then(function (r) { return r.json(); })\n    .then(function (posts) {\n      box.innerHTML = '';\n      if (!posts || !posts.length) {\n        box.innerHTML = '<div class=\"steel-news__loading\">\u062e\u0628\u0631\u06cc \u06cc\u0627\u0641\u062a \u0646\u0634\u062f.<\/div>';\n        return;\n      }\n      posts.forEach(function (p) {\n        var d = new Date(p.date);\n        var j = toJalali(d.getFullYear(), d.getMonth() + 1, d.getDate());\n        var row = document.createElement('div');\n        row.className = 'steel-news__row';\n        var a = document.createElement('a');\n        a.className = 'steel-news__title';\n        a.href = p.link;\n        a.target = '_blank';\n        a.rel = 'noopener';\n        a.innerHTML = (p.title && p.title.rendered) ? p.title.rendered : '';\n        var s = document.createElement('span');\n        s.className = 'steel-news__date';\n        s.textContent = pad(j[2]) + '\/' + pad(j[1]) + '\/' + j[0];\n        row.appendChild(a);\n        row.appendChild(s);\n        box.appendChild(row);\n      });\n    })\n    .catch(function () {\n      box.innerHTML = '<div class=\"steel-news__loading\">\u062e\u0637\u0627 \u062f\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u062e\u0628\u0627\u0631.<\/div>';\n    });\n})();\n<\/script>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/header>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u06a9\u0644\u064a\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u062f\u0631\u0628\u0627\u0631\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f \u060c \u0635\u0646\u0627\u06cc\u0639 \u0648\u0627\u0628\u0633\u062a\u0647 \u0648 \u0645\u0639\u0627\u062f\u0646 \u06a9\u0644\u064a\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u062f\u0631\u0628\u0627\u0631\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f \u060c \u0635\u0646\u0627\u06cc\u0639 \u0648\u0627\u0628\u0633\u062a\u0647 \u0648 \u0645\u0639\u0627\u062f\u0646 \u0627\u062e\u0628\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u0635\u0646\u0639\u062a \u0641\u0648\u0644\u0627\u062f \u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0627\u062e\u0628\u0627\u0631\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-100116","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/iransteel.net\/index.php?rest_route=\/wp\/v2\/pages\/100116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iransteel.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iransteel.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iransteel.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iransteel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=100116"}],"version-history":[{"count":71,"href":"https:\/\/iransteel.net\/index.php?rest_route=\/wp\/v2\/pages\/100116\/revisions"}],"predecessor-version":[{"id":100558,"href":"https:\/\/iransteel.net\/index.php?rest_route=\/wp\/v2\/pages\/100116\/revisions\/100558"}],"wp:attachment":[{"href":"https:\/\/iransteel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=100116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}