{"id":11075,"date":"2025-07-18T14:38:13","date_gmt":"2025-07-18T14:38:13","guid":{"rendered":"https:\/\/www.colomio.com\/?page_id=11075"},"modified":"2026-04-21 14:52:59","modified_gmt":"2026-04-21T14:52:59","slug":"latest-colored-mandalas-8","status":"publish","type":"page","link":"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8","title":{"rendered":"Nyeste fargelagte mandalaer"},"content":{"rendered":"\n<div class=\"cont1\">\n<div class=\"left\">\n<a id=\"buttonmz\" title=\"Mest popul\u00e6re fargelagte maler\" href=\"https:\/\/www.colomio.com\/no\/latest-colored\">Alle maler<\/a>\n<a id=\"buttonmz\" title=\"Mest popul\u00e6re fargelagte mandalaer\" href=\"https:\/\/www.colomio.com\/no\/latest-colored-mandalas\" style=\"background-color: #ddeff4;\">Mandalaer<\/a>\n<\/div>\n\n<div class=\"right\">Sortering:\n<div class=\"dropdown\">\n        <div class=\"dropdown-button\">&#9660; Nyeste<\/div>\n        <div class=\"dropdown-content\">\n              <a href=\"https:\/\/www.colomio.com\/no\/colored-mandalas\">Mest popul\u00e6re<\/a>\n        <\/div>\n    <\/div>\n<\/div>\n<\/div>\n<link href=\"https:\/\/media.happycolorz.de\/mix\/html-incl\/colored-templates-n.css\" rel=\"stylesheet\"\/>\r\n<script src=\"https:\/\/w.likebtn.com\/js\/w\/widget.js\"><\/script>\r\n    <div id=\"loadingMessage\" class=\"loading-message\">Loading...<\/div>\r\n    <div id=\"errorMessage\" class=\"error-message\" style=\"display: none;\"><\/div>\r\n    <div id=\"galleryContainer\" class=\"gallery\"><\/div>\r\n\r\n    <!-- Modal Structure -->\r\n    <div id=\"script2-imageModal\" class=\"script2-modal\">\r\n        <span id=\"script2-closeModal\" class=\"script2-clos\">&times;<\/span>\r\n        <div class=\"script2-modal-cont\">\r\n            <div id=\"script2-modalHeader\">\r\n                <div class=\"likebtn-wrapper\" id=\"script2-likeButtonContainer\"><\/div>\r\n                <p id=\"script2-modalTitle\"><\/p>\r\n            <\/div>\r\n            <div class=\"script2-nav-buttons\">\r\n                <span id=\"script2-prevButton\" class=\"script2-nav-button\">&laquo;<\/span>\r\n                <span id=\"script2-nextButton\" class=\"script2-nav-button\">&raquo;<\/span>\r\n            <\/div>\r\n            <div id=\"script2-overlayLayer\"><\/div>\r\n            <div id=\"script2-loadingSpinner\"><\/div>\r\n            <img id=\"script2-modalImage\" class=\"script2-modal-image\" \/>\r\n            <div id=\"script2-svgContainer\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\nclass AllImagesGallery {\r\n    constructor() {\r\n        \/\/ JSONP-Version f\u00fcr PythonAnywhere (keine CORS-Probleme):\r\n        this.jsonpUrl = 'https:\/\/3-hcmz.pythonanywhere.com\/gallery\/all_images.jsonp';\r\n        \r\n        this.currentIndex = 0;\r\n        this.entries = [];\r\n        this.thumbnails = [];\r\n        this.init();\r\n    }\r\n    \r\n    async init() {\r\n        try {\r\n            await this.loadData();\r\n            this.processData();\r\n            this.createGallery();\r\n            this.setupModal();\r\n            this.hideLoading();\r\n        } catch (error) {\r\n            this.showError('Fehler beim Laden der Galerie: ' + error.message);\r\n        }\r\n    }\r\n    \r\n    async loadData() {\r\n        console.log('Lade Daten via JSONP...');\r\n        console.log('JSONP URL:', this.jsonpUrl);\r\n        \r\n        try {\r\n            const data = await this.loadViaJSONP();\r\n            console.log('Daten geladen, Anzahl Eintr\u00e4ge:', data.length);\r\n            this.rawData = data;\r\n        } catch (error) {\r\n            console.error('Fehler beim Laden:', error);\r\n            throw error;\r\n        }\r\n    }\r\n    \r\n    loadViaJSONP() {\r\n        return new Promise((resolve, reject) => {\r\n            \/\/ Verwende einen anderen Callback-Namen f\u00fcr diese Galerie\r\n            window.allImagesCallback = function(data) {\r\n                resolve(data);\r\n                \/\/ Cleanup\r\n                if (script && script.parentNode) {\r\n                    document.head.removeChild(script);\r\n                }\r\n                delete window.allImagesCallback;\r\n            };\r\n            \r\n            \/\/ Erstelle Script-Tag f\u00fcr JSONP\r\n            const script = document.createElement('script');\r\n            script.src = this.jsonpUrl;\r\n            script.onerror = () => {\r\n                reject(new Error('JSONP-Laden fehlgeschlagen'));\r\n                if (script && script.parentNode) {\r\n                    document.head.removeChild(script);\r\n                }\r\n                delete window.allImagesCallback;\r\n            };\r\n            \r\n            \/\/ Timeout nach 10 Sekunden\r\n            setTimeout(() => {\r\n                if (window.allImagesCallback) {\r\n                    reject(new Error('JSONP-Timeout'));\r\n                    if (script && script.parentNode) {\r\n                        document.head.removeChild(script);\r\n                    }\r\n                    delete window.allImagesCallback;\r\n                }\r\n            }, 10000);\r\n            \r\n            document.head.appendChild(script);\r\n        });\r\n    }\r\n    \r\n    processData() {\r\n        console.log('Verarbeite alle Bilder-Daten...');\r\n        \r\n        \/\/ 1. Sortiere nach Timestamp (absteigend - neueste zuerst)\r\n        this.rawData.sort((a, b) => parseInt(b.timestamp) - parseInt(a.timestamp));\r\n        \r\n        \/\/ 2. Mandala-Filter anwenden (wie im ComplexMandalaGallery Script)\r\n        const mandalaEntries = this.rawData.filter(entry => \r\n            entry.text_content && entry.text_content.trim().endsWith('\\nmandala')\r\n        );\r\n        \r\n        console.log('Mandala-Eintr\u00e4ge gefunden:', mandalaEntries.length);\r\n        \r\n        if (mandalaEntries.length === 0) {\r\n            throw new Error('Keine Mandala-Eintr\u00e4ge gefunden');\r\n        }\r\n        \r\n        \/\/ 3. Nimm die ersten 200 Eintr\u00e4ge\r\n        this.entries = mandalaEntries.slice(0, 200);\r\n        \r\n        \/\/ 4. Alle als potentiell DB-f\u00e4hig markieren (wird beim Laden gepr\u00fcft)\r\n        this.entries.forEach(entry => {\r\n            entry.has_db = true; \/\/ Optimistisch - wird bei 404 auf false gesetzt\r\n        });\r\n        \r\n        console.log('Verarbeitete Eintr\u00e4ge f\u00fcr Galerie:', this.entries.length);\r\n    }\r\n    \r\n    createGallery() {\r\n        const container = document.getElementById('galleryContainer');\r\n        container.innerHTML = '';\r\n        \r\n        this.entries.forEach((entry, index) => {\r\n            const thumbnailDiv = document.createElement('div');\r\n            thumbnailDiv.className = 'thumbnail';\r\n            thumbnailDiv.style.backgroundColor = '#f2f2f2';\r\n            thumbnailDiv.style.padding = '5px';\r\n            \r\n            \/\/ Data attributes setzen\r\n            thumbnailDiv.setAttribute('data-has-db', entry.has_db ? 'true' : 'false');\r\n            thumbnailDiv.setAttribute('data-timestamp', entry.timestamp);\r\n            \r\n            \/\/ Thumbnail URL erstellen\r\n            const thumbUrl = entry.image_url.replace('image_', 'thumb_');\r\n            \r\n            \/\/ Text bereinigen: Entferne nur \\nmandala (aber lass andere Zeilen)\r\n            let cleanText = entry.text_content\r\n                .replace(\/\\nmandala\/g, '')\r\n                .replace(\/\\n\/g, '<br>');\r\n            \r\n            thumbnailDiv.innerHTML = `\r\n                <img decoding=\"async\" src=\"${thumbUrl}\" alt=\"Thumbnail\" class=\"painting-img\" loading=\"lazy\">\r\n                <div class=\"text-content\">${cleanText}<\/div>\r\n                <div class=\"script2-play-circle\"><\/div>\r\n            `;\r\n            \r\n            \/\/ Click-Event f\u00fcr Modal\r\n            thumbnailDiv.addEventListener('click', () => {\r\n                this.showImage(index);\r\n            });\r\n            \r\n            container.appendChild(thumbnailDiv);\r\n        });\r\n        \r\n        \/\/ Aktualisiere thumbnails Array f\u00fcr Modal-Navigation\r\n        this.thumbnails = Array.from(container.querySelectorAll('.thumbnail'));\r\n    }\r\n    \r\n    setupModal() {\r\n        const modal = document.getElementById('script2-imageModal');\r\n        const closeModal = document.getElementById('script2-closeModal');\r\n        const prevButton = document.getElementById('script2-prevButton');\r\n        const nextButton = document.getElementById('script2-nextButton');\r\n        \r\n        closeModal.onclick = () => {\r\n            modal.style.display = 'none';\r\n        };\r\n        \r\n        prevButton.onclick = () => {\r\n            this.showImage((this.currentIndex - 1 + this.thumbnails.length) % this.thumbnails.length);\r\n        };\r\n        \r\n        nextButton.onclick = () => {\r\n            this.showImage((this.currentIndex + 1) % this.thumbnails.length);\r\n        };\r\n        \r\n        \/\/ Schlie\u00dfe Modal bei Klick au\u00dferhalb\r\n        modal.onclick = (event) => {\r\n            if (event.target === modal) {\r\n                modal.style.display = 'none';\r\n            }\r\n        };\r\n        \r\n        \/\/ Keyboard Navigation\r\n        document.addEventListener('keydown', (event) => {\r\n            if (modal.style.display === 'block') {\r\n                if (event.key === 'Escape') {\r\n                    modal.style.display = 'none';\r\n                } else if (event.key === 'ArrowLeft') {\r\n                    prevButton.click();\r\n                } else if (event.key === 'ArrowRight') {\r\n                    nextButton.click();\r\n                }\r\n            }\r\n        });\r\n    }\r\n    \r\n    showImage(index) {\r\n        this.currentIndex = index;\r\n        const thumbnailDiv = this.thumbnails[index];\r\n        const img = thumbnailDiv.querySelector('img');\r\n        const textElem = thumbnailDiv.querySelector('.text-content');\r\n        const name = textElem ? textElem.innerText : 'Unbekannter K\u00fcnstler';\r\n        \r\n        const hasDb = thumbnailDiv.getAttribute('data-has-db');\r\n        const timestamp = thumbnailDiv.getAttribute('data-timestamp');\r\n        \r\n        const modal = document.getElementById('script2-imageModal');\r\n        const modalImage = document.getElementById('script2-modalImage');\r\n        const modalTitle = document.getElementById('script2-modalTitle');\r\n        const likeButtonContainer = document.getElementById('script2-likeButtonContainer');\r\n        const loadingSpinner = document.getElementById('script2-loadingSpinner');\r\n        const overlayLayer = document.getElementById('script2-overlayLayer');\r\n        const svgContainer = document.getElementById('script2-svgContainer');\r\n        \r\n        \/\/ Like-Button Setup sofort (wie im Original)\r\n        const identifier = timestamp;\r\n        likeButtonContainer.setAttribute('data-identifier', identifier);\r\n        likeButtonContainer.innerHTML = `<div class=\"likebtn-wrapper\"\r\n            data-identifier=\"${identifier}\"\r\n            data-theme=\"custom\"\r\n            data-btn_size=\"23\"\r\n            data-icon_size=\"18\"\r\n            data-icon_l=\"thmb7-u\"\r\n            data-icon_l_c=\"#529d5a\"\r\n            data-icon_l_c_v=\"#529d5a\"\r\n            data-icon_d_c=\"#529d5a\"\r\n            data-icon_d_c_v=\"#529d5a\"\r\n            data-ef_voting=\"bounce\"\r\n            data-rich_snippet=\"true\"\r\n            data-dislike_enabled=\"false\"\r\n            data-popup_disabled=\"true\"\r\n            data-loader_show=\"true\"><\/div>`;\r\n        if (typeof(LikeBtn) != \"undefined\") {\r\n            LikeBtn.init();\r\n        }\r\n        \r\n        modalTitle.innerText = name;\r\n        overlayLayer.style.display = 'block';\r\n        loadingSpinner.style.display = 'block';\r\n        modal.style.display = 'block';\r\n        \r\n        \/\/ Leere vorhandenes SVG\r\n        svgContainer.innerHTML = '';\r\n        \r\n        if (hasDb === 'true') {\r\n            \/\/ Falls DB-Eintrag vorhanden: Lade animiertes SVG\r\n            modalImage.style.display = 'none';\r\n            svgContainer.style.display = 'inherit';\r\n            \r\n            this.loadAnimatedSVG(timestamp, svgContainer, overlayLayer, loadingSpinner);\r\n        } else {\r\n            \/\/ Kein DB-Eintrag: Zeige statisches Bild\r\n            this.showFallbackImage(svgContainer, overlayLayer, loadingSpinner, img);\r\n        }\r\n    }\r\n    \r\n    async loadAnimatedSVG(timestamp, svgContainer, overlayLayer, loadingSpinner) {\r\n        try {\r\n            console.log('Versuche SVG f\u00fcr Timestamp:', timestamp);\r\n            \r\n            \/\/ Lade Farbdaten\r\n            const response = await fetch(`https:\/\/5-hcmz.pythonanywhere.com\/get-color-data\/${timestamp}`);\r\n            if (!response.ok) {\r\n                console.log('Kein SVG verf\u00fcgbar f\u00fcr Timestamp:', timestamp, '- Fallback auf statisches Bild');\r\n                throw new Error('Kein SVG verf\u00fcgbar');\r\n            }\r\n            \r\n            const data = await response.json();\r\n            if (!data?.svgUrl || !data?.fillActions) {\r\n                throw new Error('Unvollst\u00e4ndige SVG-Daten erhalten');\r\n            }\r\n            \r\n            console.log('SVG-Daten erhalten, lade SVG von:', data.svgUrl);\r\n            \r\n            \/\/ Lade SVG\r\n            const svgResponse = await fetch(data.svgUrl);\r\n            if (!svgResponse.ok) {\r\n                throw new Error('Fehler beim Laden des SVGs');\r\n            }\r\n            \r\n            const svgText = await svgResponse.text();\r\n            const svgElement = new DOMParser()\r\n                .parseFromString(svgText, \"image\/svg+xml\")\r\n                .querySelector(\"svg\");\r\n            \r\n            if (!svgElement) {\r\n                throw new Error('Kein SVG-Element gefunden');\r\n            }\r\n            \r\n            svgContainer.appendChild(svgElement);\r\n            \r\n            \/\/ Starte Animation\r\n            this.startAnimationLoop(svgElement, data.fillActions);\r\n            \r\n            overlayLayer.style.display = 'none';\r\n            loadingSpinner.style.display = 'none';\r\n            \r\n            console.log('SVG erfolgreich geladen und Animation gestartet');\r\n            \r\n        } catch (error) {\r\n            console.log('SVG-Laden fehlgeschlagen:', error.message, '- Zeige statisches Bild');\r\n            \r\n            \/\/ Fallback: Zeige statisches Bild\r\n            const thumbnailDiv = this.thumbnails[this.currentIndex];\r\n            const img = thumbnailDiv.querySelector('img');\r\n            this.showFallbackImage(svgContainer, overlayLayer, loadingSpinner, img);\r\n        }\r\n    }\r\n    \r\n    showFallbackImage(svgContainer, overlayLayer, loadingSpinner, img) {\r\n        svgContainer.style.display = 'none';\r\n        const modalImage = document.getElementById('script2-modalImage');\r\n        modalImage.style.display = 'inherit';\r\n        \r\n        const staticImageUrl = img.src.replace('thumb_', 'image_');\r\n        console.log('Lade statisches Bild:', staticImageUrl);\r\n        modalImage.src = staticImageUrl;\r\n        \r\n        modalImage.onload = () => {\r\n            overlayLayer.style.display = 'none';\r\n            loadingSpinner.style.display = 'none';\r\n            console.log('Statisches Bild erfolgreich geladen');\r\n        };\r\n        \r\n        modalImage.onerror = () => {\r\n            overlayLayer.style.display = 'none';\r\n            loadingSpinner.style.display = 'none';\r\n            console.error('Auch statisches Bild konnte nicht geladen werden:', staticImageUrl);\r\n        };\r\n    }\r\n    \r\n    startAnimationLoop(svgElement, fillActions) {\r\n        const resetSVG = () => {\r\n            fillActions.forEach(action => {\r\n                const element = svgElement.querySelector('#' + action.id);\r\n                if (element) {\r\n                    element.style.fill = '';\r\n                }\r\n            });\r\n            this.animateFill(svgElement, fillActions, resetSVG);\r\n        };\r\n        \r\n        this.animateFill(svgElement, fillActions, resetSVG);\r\n    }\r\n    \r\n    animateFill(svgElement, fillActions, callback) {\r\n        let index = 0;\r\n        const interval = setInterval(() => {\r\n            if (index >= fillActions.length) {\r\n                clearInterval(interval);\r\n                setTimeout(() => {\r\n                    if (typeof callback === 'function') {\r\n                        callback();\r\n                    }\r\n                }, 2000);\r\n                return;\r\n            }\r\n            \r\n            const action = fillActions[index];\r\n            const element = svgElement.querySelector('#' + action.id);\r\n            if (element) {\r\n                element.style.fill = action.color;\r\n            } else {\r\n                console.warn('Element mit ID \"' + action.id + '\" nicht gefunden.');\r\n            }\r\n            index++;\r\n        }, 100);\r\n    }\r\n    \r\n    hideLoading() {\r\n        document.getElementById('loadingMessage').style.display = 'none';\r\n    }\r\n    \r\n    showError(message) {\r\n        document.getElementById('loadingMessage').style.display = 'none';\r\n        const errorDiv = document.getElementById('errorMessage');\r\n        errorDiv.textContent = message;\r\n        errorDiv.style.display = 'block';\r\n    }\r\n}\r\n\r\n\/\/ Starte die All-Images-Galerie wenn DOM geladen ist\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n    new AllImagesGallery();\r\n});\r\n    <\/script>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alle maler Mandalaer Sortering: &#9660; Nyeste Mest popul\u00e6re<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_bctitle":"","_colomio_max_video_preview":"","_colomio_max_image_preview":"","_colomio_max_snippet":"","_custom_article_jsonld":"","_custom_howto_jsonld":"","_custom_schema_jsonld":"","category-page":true,"footnotes":""},"class_list":["post-11075","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Nyeste fargelagte mandalaer - www.colomio.com<\/title>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nyeste fargelagte mandalaer - www.colomio.com\" \/>\n<meta property=\"og:description\" content=\"Alle maler Mandalaer Sortering: &#9660; Nyeste Mest popul\u00e6re\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8\" \/>\n<meta property=\"og:site_name\" content=\"www.colomio.com\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-21T14:52:59+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Ansl. lesetid\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minutt\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8\",\"url\":\"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8\",\"name\":\"Nyeste fargelagte mandalaer - www.colomio.com\",\"isPartOf\":{\"@id\":\"https:\/\/www.colomio.com\/no#website\"},\"datePublished\":\"2025-07-18T14:38:13+00:00\",\"dateModified\":\"2026-04-21T14:52:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8#breadcrumb\"},\"inLanguage\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.colomio.com\/no\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nyeste fargelagte mandalaer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.colomio.com\/no#website\",\"url\":\"https:\/\/www.colomio.com\/no\",\"name\":\"www.colomio.com\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.colomio.com\/no#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.colomio.com\/no?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.colomio.com\/no#organization\",\"name\":\"colomio\",\"url\":\"https:\/\/www.colomio.com\/no\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\/\/www.colomio.com\/no#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.colomio.com\/wp-content\/uploads\/2025\/02\/cropped-colomio-logo.png?wsr\",\"contentUrl\":\"https:\/\/www.colomio.com\/wp-content\/uploads\/2025\/02\/cropped-colomio-logo.png?wsr\",\"width\":373,\"height\":98,\"caption\":\"www.colomio.com\"},\"image\":{\"@id\":\"https:\/\/www.colomio.com\/no#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.instagram.com\/colomio.team\/\",\"https:\/\/de.pinterest.com\/happycolorz_colomio\/\",\"https:\/\/www.pinterest.com\/happycolorz_colomio\/\",\"https:\/\/www.muminthemadhouse.com\/custom-ai-colouring-pages-for-kids\/\",\"https:\/\/slummysinglemummy.com\/2026\/03\/05\/rainy-afternoons-just-got-a-lot-more-creative-discovering-colomio\/\",\"https:\/\/www.amazon.com\/Horses-Coloring-Book-pages-reprint\/dp\/1707878994\",\"https:\/\/www.prnewswire.com\/news-releases\/colomiocom-launches-a-free-customizable-coloring-book-for-home-printing-301162753.html\",\"https:\/\/www.linkedin.com\/in\/mathias-ziegler-b6068568\/\"],\"alternateName\":\"colomio.com\",\"foundingDate\":\"2019\",\"description\":\"Free printable coloring pages, step-by-step drawing tutorials, and creative crafts for kids \u2013 created by parents, tested by children.\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Zeppelinstr. 73\",\"addressLocality\":\"Munich\",\"postalCode\":\"81669\",\"addressRegion\":\"Bavaria\",\"addressCountry\":\"DE\"},\"parentOrganization\":{\"@type\":\"Organization\",\"name\":\"happycolorz GmbH\",\"url\":\"https:\/\/www.happycolorz.de\"},\"founder\":[{\"@type\":\"Person\",\"@id\":\"https:\/\/www.colomio.com\/no#mathias\/\",\"name\":\"Mathias Ziegler\",\"jobTitle\":\"Founder & Managing Director\",\"url\":\"https:\/\/www.colomio.com\/no\/authors\/colomio-team\"}]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nyeste fargelagte mandalaer - www.colomio.com","robots":{"index":"noindex","follow":"follow"},"og_locale":"nb_NO","og_type":"article","og_title":"Nyeste fargelagte mandalaer - www.colomio.com","og_description":"Alle maler Mandalaer Sortering: &#9660; Nyeste Mest popul\u00e6re","og_url":"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8","og_site_name":"www.colomio.com","article_modified_time":"2026-04-21T14:52:59+00:00","twitter_card":"summary_large_image","twitter_misc":{"Ansl. lesetid":"1 minutt"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8","url":"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8","name":"Nyeste fargelagte mandalaer - www.colomio.com","isPartOf":{"@id":"https:\/\/www.colomio.com\/no#website"},"datePublished":"2025-07-18T14:38:13+00:00","dateModified":"2026-04-21T14:52:59+00:00","breadcrumb":{"@id":"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8#breadcrumb"},"inLanguage":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.colomio.com\/no\/latest-colored-mandalas-8#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.colomio.com\/no"},{"@type":"ListItem","position":2,"name":"Nyeste fargelagte mandalaer"}]},{"@type":"WebSite","@id":"https:\/\/www.colomio.com\/no#website","url":"https:\/\/www.colomio.com\/no","name":"www.colomio.com","description":"","publisher":{"@id":"https:\/\/www.colomio.com\/no#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.colomio.com\/no?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nb-NO"},{"@type":"Organization","@id":"https:\/\/www.colomio.com\/no#organization","name":"colomio","url":"https:\/\/www.colomio.com\/no","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/www.colomio.com\/no#\/schema\/logo\/image\/","url":"https:\/\/www.colomio.com\/wp-content\/uploads\/2025\/02\/cropped-colomio-logo.png?wsr","contentUrl":"https:\/\/www.colomio.com\/wp-content\/uploads\/2025\/02\/cropped-colomio-logo.png?wsr","width":373,"height":98,"caption":"www.colomio.com"},"image":{"@id":"https:\/\/www.colomio.com\/no#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/colomio.team\/","https:\/\/de.pinterest.com\/happycolorz_colomio\/","https:\/\/www.pinterest.com\/happycolorz_colomio\/","https:\/\/www.muminthemadhouse.com\/custom-ai-colouring-pages-for-kids\/","https:\/\/slummysinglemummy.com\/2026\/03\/05\/rainy-afternoons-just-got-a-lot-more-creative-discovering-colomio\/","https:\/\/www.amazon.com\/Horses-Coloring-Book-pages-reprint\/dp\/1707878994","https:\/\/www.prnewswire.com\/news-releases\/colomiocom-launches-a-free-customizable-coloring-book-for-home-printing-301162753.html","https:\/\/www.linkedin.com\/in\/mathias-ziegler-b6068568\/"],"alternateName":"colomio.com","foundingDate":"2019","description":"Free printable coloring pages, step-by-step drawing tutorials, and creative crafts for kids \u2013 created by parents, tested by children.","address":{"@type":"PostalAddress","streetAddress":"Zeppelinstr. 73","addressLocality":"Munich","postalCode":"81669","addressRegion":"Bavaria","addressCountry":"DE"},"parentOrganization":{"@type":"Organization","name":"happycolorz GmbH","url":"https:\/\/www.happycolorz.de"},"founder":[{"@type":"Person","@id":"https:\/\/www.colomio.com\/no#mathias\/","name":"Mathias Ziegler","jobTitle":"Founder & Managing Director","url":"https:\/\/www.colomio.com\/no\/authors\/colomio-team"}]}]}},"_links":{"self":[{"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/pages\/11075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/comments?post=11075"}],"version-history":[{"count":6,"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/pages\/11075\/revisions"}],"predecessor-version":[{"id":11244,"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/pages\/11075\/revisions\/11244"}],"wp:attachment":[{"href":"https:\/\/www.colomio.com\/no\/wp-json\/wp\/v2\/media?parent=11075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}