), then please use the "Add HTML Code" page, as this is a HTML code that links a JavaScript file. End of comment */ document.addEventListener('DOMContentLoaded', function() { // Get min price from the element let min_pri_spli = jQuery('.min_price bdi').text().split('$'); let get_min_pri_af_spli = min_pri_spli[1]; get_min_pri_af_spli = get_min_pri_af_spli.replace(/,/g, ''); get_min_pri_af_spli = parseInt(get_min_pri_af_spli); // Get max price from the element let max_pri_spli = jQuery('.high_price bdi').text().split('$'); let get_max_pri_af_spli = max_pri_spli[1]; get_max_pri_af_spli = get_max_pri_af_spli.replace(/,/g, ''); get_max_pri_af_spli = parseInt(get_max_pri_af_spli); const minPrice = get_min_pri_af_spli; // Use dynamic min price const maxPrice = get_max_pri_af_spli; // Use dynamic max price // Create price values array with 5 equal parts const priceValues = []; const step = (maxPrice - minPrice) / 4; // 4 intervals = 5 points for (let i = 0; i < 5; i++) { priceValues.push(Math.round(minPrice + (step * i))); } // Update slider labels with new price values const sliderLabels = document.getElementById('sliderLabels'); const positions = ['0%', '25%', '50%', '75%', '100%']; sliderLabels.innerHTML = ''; priceValues.forEach((price, index) => { const label = document.createElement('div'); label.className = `slider-label ${index === 0 || index === 4 ? 'main' : ''}`; label.style.left = positions[index]; label.textContent = price.toLocaleString(); sliderLabels.appendChild(label); }); const handleFrom = document.getElementById('handleFrom'); const handleTo = document.getElementById('handleTo'); const sliderRange = document.getElementById('sliderRange'); const priceMin = document.querySelector('.price-min'); const priceMax = document.querySelector('.price-max'); // Get initial positions from URL parameters or set default let fromPosition = 0; let toPosition = 100; // Function to get URL parameters function getUrlParameter(name) { const urlParams = new URLSearchParams(window.location.search); return urlParams.get(name); } // Function to update URL with price parameters and refresh page function updateUrlWithPrices(minPriceVal, maxPriceVal) { const url = new URL(window.location); url.searchParams.set('min_price', minPriceVal); url.searchParams.set('max_price', maxPriceVal); // Use window.location.href for full page refresh window.location.href = url.toString(); } // Initialize slider positions from URL if available const urlMinPrice = getUrlParameter('min_price'); const urlMaxPrice = getUrlParameter('max_price'); if (urlMinPrice && urlMaxPrice) { const minPriceNum = parseInt(urlMinPrice); const maxPriceNum = parseInt(urlMaxPrice); // Calculate positions from prices fromPosition = ((minPriceNum - minPrice) / (maxPrice - minPrice)) * 100; toPosition = ((maxPriceNum - minPrice) / (maxPrice - minPrice)) * 100; // Ensure positions are within bounds fromPosition = Math.max(0, Math.min(100, fromPosition)); toPosition = Math.max(0, Math.min(100, toPosition)); // Ensure from is less than to if (fromPosition >= toPosition) { fromPosition = toPosition - 8; } } function updateSlider() { handleFrom.style.left = fromPosition + '%'; handleTo.style.left = toPosition + '%'; sliderRange.style.left = fromPosition + '%'; sliderRange.style.width = (toPosition - fromPosition) + '%'; // Calculate actual prices based on position const fromPrice = Math.round(minPrice + (maxPrice - minPrice) * (fromPosition / 100)); const toPrice = Math.round(minPrice + (maxPrice - minPrice) * (toPosition / 100)); priceMin.textContent = '$' + fromPrice.toLocaleString(); priceMax.textContent = '$' + toPrice.toLocaleString(); } // Initialize slider updateSlider(); // Make handles draggable let activeHandle = null; let isDragging = false; function startDrag(e) { activeHandle = e.target; isDragging = true; document.addEventListener('mousemove', onDrag); document.addEventListener('mouseup', stopDrag); } function onDrag(e) { if (!activeHandle) return; const sliderRect = document.querySelector('.slider-container').getBoundingClientRect(); const sliderWidth = sliderRect.width; const position = ((e.clientX - sliderRect.left) / sliderWidth) * 100; if (activeHandle === handleFrom) { fromPosition = Math.max(0, Math.min(toPosition - 5, position)); } else { toPosition = Math.min(100, Math.max(fromPosition + 5, position)); } updateSlider(); } function stopDrag() { if (isDragging) { // Update URL when dragging stops and refresh page const fromPrice = Math.round(minPrice + (maxPrice - minPrice) * (fromPosition / 100)); const toPrice = Math.round(minPrice + (maxPrice - minPrice) * (toPosition / 100)); updateUrlWithPrices(fromPrice, toPrice); } activeHandle = null; isDragging = false; document.removeEventListener('mousemove', onDrag); document.removeEventListener('mouseup', stopDrag); } handleFrom.addEventListener('mousedown', startDrag); handleTo.addEventListener('mousedown', startDrag); });
Call Us: 888-993-3757Email: [email protected]Mon – Fri / 8:30AM – 5:00PM EST

Individual Pebble Ceiling Tile | Build Your Own Sets | 18 Colors

SKU: ESC-P-CP-PBL

As low as:  $ Price range: $201.78 through $397.88

Dimensions N/A
Acoustic Panel Design Pebbles Panel Thickness 1/2"
Material PET (Polyethylene Terephthalate) Fire Rating ASTM E-84 Fireproof Rating of CLASS A
Product Line eSCAPE Shipping Method Parcel
Warranty 5 Years Application Suspended Panels
Number Of Panels 1 Hardware Included D-Rings, Optional hanging chain
Dimensions N/A
Acoustic Panel Design Pebbles
Panel Thickness 1/2"
Material PET (Polyethylene Terephthalate)
Fire Rating ASTM E-84 Fireproof Rating of CLASS A
Product Line eSCAPE
Shipping Method Parcel
Warranty 5 Years
Application Suspended Panels
Number Of Panels 1
Hardware Included D-Rings, Optional hanging chain

Bring modern texture and acoustic comfort to any space with our Priced Per Individual Pebble Outline Panel.
Perfect for offices, conference rooms, classrooms, and creative environments, these panels allow you to mix and match shapes, sizes, and colors to design a wall installation that’s uniquely yours. Inspired by natural pebble formations, each panel adds a soft, organic aesthetic while helping reduce noise and improve the overall ambiance of your room.

Crafted proudly in the USA, these decorative acoustic panels feature our signature Pebbles design and are available in 18 vibrant color options, making it simple to coordinate with existing décor or create an eye-catching accent wall. Each panel is made from high-quality PET felt with a 12mm thickness (approximately ½ inch), offering both durability and functional sound-absorbing performance.

Installation is quick and effortless—every panel comes with D-rings attached for easy mounting, and you can also add an optional 10 ft hanging cable if you prefer a suspended look. Whether you’re upgrading a small home office or designing a full corporate display, these panels provide endless flexibility for both style and sound control.

Looking to build a cohesive set? Pack of Pebblescheck out the Pebble Ceiling Panels Set

Our design team is happy to assist with custom layouts and acoustic design recommendations.

Recommended for You

U-Shaped Office Suite | 6×10 | Indigo Desk Series2-Person Cubicle Workstation | Laminate Gallery Panels | Sol Series | 6x6x52″-39″H

As low as:  $ Price range: $4,391.23 through $4,539.47

Select options

Quantum II Series V-Shaped Sit-Stand Desk | 120 Degree Electric Standing Desk | 3 Size Options | 9 Laminate Options2-Person Cubicle Workstation | Laminate Gallery Panels | Sol Series | 6x6x52″-39″H

As low as:  $ Price range: $1,324.04 through $1,480.21

Select options

6-Person Arc Rectangle Huddle Table with Metal Post Legs | Wall Mounted | 46X722-Person Cubicle Workstation | Laminate Gallery Panels | Sol Series | 6x6x52″-39″H

As low as:  $ Price range: $1,419.66 through $1,571.35

Select options