{"id":7121,"date":"2025-08-21T09:50:38","date_gmt":"2025-08-21T09:50:38","guid":{"rendered":"https:\/\/seostrategi.no\/en\/?page_id=7121"},"modified":"2025-08-21T11:21:42","modified_gmt":"2025-08-21T11:21:42","slug":"test-2","status":"publish","type":"page","link":"https:\/\/seostrategi.no\/en\/test-2\/","title":{"rendered":"test"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7121\" class=\"elementor elementor-7121\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ced3e5 e-flex e-con-boxed e-con e-parent\" data-id=\"5ced3e5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f44f0f8 elementor-widget elementor-widget-html\" data-id=\"f44f0f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\" \/>\r\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" \/>\r\n<title>Infinite Card Slider<\/title>\r\n<style>\r\n\r\n  .carousel {\r\n    max-width: 1100px;\r\n    margin: 40px auto;\r\n    padding: 40px 56px;        \/* space for arrows *\/\r\n    position: relative;\r\n  \r\n  }\r\n\r\n  .viewport {\r\n    overflow: hidden;\r\n    width: 100%;\r\n  }\r\n\r\n  .track {\r\n    display: flex;\r\n    gap: 20px;                 \/* spacing between cards *\/\r\n    will-change: transform;\r\n    transition: transform .45s ease;\r\n  }\r\n\r\n  .card {\r\n    flex: 0 0 100%;\r\n    background: #fff;\r\n    border-radius: 14px;\r\n    padding: 20px;\r\n    background: #fff url('your-background.png') no-repeat top center;\r\n    \/*box-shadow: 0 6px 16px rgba(0,0,0,.08);*\/\r\n  }\r\n\r\n  .card h3 { margin: 0 0 8px; color:#0097b2; font-size: 20px; }\r\n  .card p { margin: 0; color:#333; line-height: 1.55; }\r\n\r\n  \/* Responsive cards-per-view: 1 \/ 2 \/ 3 *\/\r\n  @media (min-width: 700px) {\r\n    .card { flex-basis: calc((100% - 20px) \/ 2); }\r\n  }\r\n  @media (min-width: 1024px) {\r\n    .card { flex-basis: calc((100% - 40px) \/ 3); }\r\n  }\r\n\r\n  \/* Arrows *\/\r\n  .nav {\r\n    position: absolute;\r\n    top: 50%;\r\n    transform: translateY(-50%);\r\n    border: none;\r\n    width: 44px; height: 44px;\r\n    border-radius: 50%;\r\n    background: #0097b2;\r\n    color: #fff;\r\n    font-size: 20px;\r\n    cursor: pointer;\r\n    display: grid; place-items: center;\r\n    box-shadow: 0 4px 12px rgba(0,0,0,.15);\r\n    z-index: 2;\r\n  }\r\n  .nav:focus-visible { outline: 3px solid #005a66; }\r\n  .nav.prev { left: 8px; }\r\n  .nav.next { right: 8px; }\r\n\r\n  \/* Prevent layout jump when buttons overlap on small screens *\/\r\n  @media (max-width: 480px) {\r\n    .carousel { padding: 40px 48px; }\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"carousel\" id=\"seoCarousel\">\r\n  <button class=\"nav prev\" aria-label=\"Previous\">&#10094;<\/button>\r\n\r\n  <div class=\"viewport\">\r\n    <div class=\"track\">\r\n      <article class=\"card\">\r\n        <h3>Technical SEO Audit<\/h3>\r\n        <p>Identify issues holding your site back: speed, mobile responsiveness, crawlability, and indexability to ensure complete optimization.<\/p>\r\n      <\/article>\r\n\r\n      <article class=\"card\">\r\n        <h3>On-Page SEO Audit<\/h3>\r\n        <p>Analyze content, meta tags, headings, and internal links. Fix gaps in keywords, titles, and descriptions for better rankings.<\/p>\r\n      <\/article>\r\n\r\n      <article class=\"card\">\r\n        <h3>Backlink Audit<\/h3>\r\n        <p>Evaluate backlink quality and toxicity. Keep links from reputable sources and remove harmful ones to improve authority.<\/p>\r\n      <\/article>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <button class=\"nav next\" aria-label=\"Next\">&#10095;<\/button>\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n  const root = document.getElementById('seoCarousel');\r\n  const track = root.querySelector('.track');\r\n  const viewport = root.querySelector('.viewport');\r\n  const prevBtn = root.querySelector('.prev');\r\n  const nextBtn = root.querySelector('.next');\r\n\r\n  let perView = 1;\r\n  let index = 0;\r\n\r\n  function cardsPerView() {\r\n    const w = window.innerWidth;\r\n    if (w >= 1024) return 3;\r\n    if (w >= 700)  return 2;\r\n    return 1;\r\n  }\r\n\r\n  function removeClones() {\r\n    track.querySelectorAll('.clone').forEach(n => n.remove());\r\n  }\r\n\r\n  function cloneEdges() {\r\n    const cards = Array.from(track.querySelectorAll('.card:not(.clone)'));\r\n    const n = perView;\r\n    const head = cards.slice(0, n).map(el => { const c = el.cloneNode(true); c.classList.add('clone'); return c; });\r\n    const tail = cards.slice(-n).map(el => { const c = el.cloneNode(true); c.classList.add('clone'); return c; });\r\n\r\n    \/\/ prepend tail clones and append head clones\r\n    tail.forEach(c => track.insertBefore(c, track.firstChild));\r\n    head.forEach(c => track.appendChild(c));\r\n  }\r\n\r\n  function allSlides() {\r\n    return Array.from(track.children);\r\n  }\r\n\r\n  \/\/ Align using offsetLeft (robust with gaps and responsive widths)\r\n  function goTo(i, animate = true) {\r\n    const slides = allSlides();\r\n    const target = slides[i];\r\n    if (!target) return;\r\n\r\n    if (!animate) track.style.transition = 'none';\r\n    const x = target.offsetLeft;\r\n    track.style.transform = `translateX(${-x}px)`;\r\n    if (!animate) {\r\n      \/\/ force reflow then restore transition\r\n      void track.offsetHeight;\r\n      track.style.transition = 'transform .45s ease';\r\n    }\r\n  }\r\n\r\n  function setup() {\r\n    \/\/ 1) remove old clones if any\r\n    removeClones();\r\n\r\n    \/\/ 2) set perView based on width and create clones\r\n    perView = cardsPerView();\r\n    cloneEdges();\r\n\r\n    \/\/ 3) start at the first real slide (skip prepended clones)\r\n    index = perView;\r\n    goTo(index, false);\r\n  }\r\n\r\n  function next() {\r\n    index++;\r\n    goTo(index, true);\r\n  }\r\n\r\n  function prev() {\r\n    index--;\r\n    goTo(index, true);\r\n  }\r\n\r\n  \/\/ Seamless looping: after the animation finishes, jump to the matching real slide\r\n  track.addEventListener('transitionend', () => {\r\n    const slides = allSlides();\r\n    const total = slides.length;\r\n    const lastRealIndex = total - perView - 1; \/\/ last index before appended clones start\r\n\r\n    if (index > lastRealIndex) {\r\n      \/\/ jumped into appended clones -> wrap to the real first\r\n      index = perView; \/\/ first real\r\n      goTo(index, false);\r\n    } else if (index < perView) {\r\n      \/\/ jumped into prepended clones -> wrap to the real last\r\n      index = lastRealIndex;\r\n      goTo(index, false);\r\n    }\r\n  });\r\n\r\n  \/\/ Events\r\n  nextBtn.addEventListener('click', next);\r\n  prevBtn.addEventListener('click', prev);\r\n\r\n  \/\/ Recalculate on resize (rebuild clones so loop stays correct)\r\n  let resizeTimer;\r\n  window.addEventListener('resize', () => {\r\n    clearTimeout(resizeTimer);\r\n    resizeTimer = setTimeout(setup, 150);\r\n  });\r\n\r\n  \/\/ Init\r\n  setup();\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Infinite Card Slider &#10094; Technical SEO Audit Identify issues holding your site back: speed, mobile responsiveness, crawlability, and indexability to ensure complete optimization. On-Page SEO Audit Analyze content, meta tags, headings, and internal links. Fix gaps in keywords, titles, and descriptions for better rankings. Backlink Audit Evaluate backlink quality and toxicity. Keep links from reputable [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-7121","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>test - seostrategino<\/title>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"test\" \/>\n<meta property=\"og:description\" content=\"Infinite Card Slider &#10094; Technical SEO Audit Identify issues holding your site back: speed, mobile responsiveness, crawlability, and indexability to ensure complete optimization. On-Page SEO Audit Analyze content, meta tags, headings, and internal links. Fix gaps in keywords, titles, and descriptions for better rankings. Backlink Audit Evaluate backlink quality and toxicity. Keep links from reputable [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/seostrategi.no\/en\/test-2\/\" \/>\n<meta property=\"og:site_name\" content=\"seostrategino\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-21T11:21:42+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"test - seostrategino","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"en_US","og_type":"article","og_title":"test","og_description":"Infinite Card Slider &#10094; Technical SEO Audit Identify issues holding your site back: speed, mobile responsiveness, crawlability, and indexability to ensure complete optimization. On-Page SEO Audit Analyze content, meta tags, headings, and internal links. Fix gaps in keywords, titles, and descriptions for better rankings. Backlink Audit Evaluate backlink quality and toxicity. Keep links from reputable [&hellip;]","og_url":"https:\/\/seostrategi.no\/en\/test-2\/","og_site_name":"seostrategino","article_modified_time":"2025-08-21T11:21:42+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/seostrategi.no\/en\/test-2\/","url":"https:\/\/seostrategi.no\/en\/test-2\/","name":"test - seostrategino","isPartOf":{"@id":"https:\/\/seostrategi.no\/en\/#website"},"datePublished":"2025-08-21T09:50:38+00:00","dateModified":"2025-08-21T11:21:42+00:00","breadcrumb":{"@id":"https:\/\/seostrategi.no\/en\/test-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/seostrategi.no\/en\/test-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/seostrategi.no\/en\/test-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/seostrategi.no\/en\/"},{"@type":"ListItem","position":2,"name":"test"}]},{"@type":"WebSite","@id":"https:\/\/seostrategi.no\/en\/#website","url":"https:\/\/seostrategi.no\/en\/","name":"seostrategino","description":"","publisher":{"@id":"https:\/\/seostrategi.no\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/seostrategi.no\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/seostrategi.no\/en\/#organization","name":"seostrategino","url":"https:\/\/seostrategi.no\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seostrategi.no\/en\/#\/schema\/logo\/image\/","url":"https:\/\/seostrategi.no\/en\/wp-content\/uploads\/2025\/07\/Seostrategi.webp","contentUrl":"https:\/\/seostrategi.no\/en\/wp-content\/uploads\/2025\/07\/Seostrategi.webp","width":501,"height":112,"caption":"seostrategino"},"image":{"@id":"https:\/\/seostrategi.no\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/pages\/7121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/comments?post=7121"}],"version-history":[{"count":7,"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/pages\/7121\/revisions"}],"predecessor-version":[{"id":7129,"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/pages\/7121\/revisions\/7129"}],"wp:attachment":[{"href":"https:\/\/seostrategi.no\/en\/wp-json\/wp\/v2\/media?parent=7121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}