Tag Archives: model

Glacier National Park Model Shoot

Sometimes I like to try new ideas or create images that might be a little to abstract or unusual for most couples. For these ideas I like working with friends and models to try to create more abstract images. As many of you know, I spent many years as a professional nature and landscape photographer.[more…]

Anatomy of an Image #11

The Breckenridge Ice Castles are an amazing venue to photograph in. Every year as soon as it gets cold, they start adding water a little at a time, and allowing it to freeze into beautiful formations. This year they also added colored LED lights inside the ice itself to further add to the surreal beauty of the place. When this model contacted me about doing a winter photo shoot in Breckenridge, I knew this had to be the place.

// --- Accordion jump/open helper --- window.ACC_HELPER = 'loaded'; document.addEventListener('DOMContentLoaded', function () { var OFFSET = 100; // adjust for sticky header height function titleFor(hash) { if (!hash) return null; // works with full URLs or just "#hash" var titles = document.querySelectorAll('.accordion .accordion-title'); for (var i = 0; i < titles.length; i++) { if ((titles[i].hash || '').toLowerCase() === hash.toLowerCase()) return titles[i]; } return null; } function openAndScroll(hash) { var title = titleFor(hash); if (!title) return false; var item = title.closest('.accordion-item'); if (!item) return false; var toggle = item.querySelector('.toggle') || title; if (!item.classList.contains('active')) { // fire the same click Flatsome expects toggle.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window })); } var y = item.getBoundingClientRect().top + window.pageYOffset - OFFSET; window.scrollTo({ top: y, behavior: 'smooth' }); return true; } function retry(hash, times, delay) { var n = 0, id = setInterval(function () { n++; if (openAndScroll(hash) || n >= times) clearInterval(id); }, delay); } // 1) Open on page load if there's a hash if (location.hash) retry(location.hash, 12, 80); // 2) Intercept in-page clicks that correspond to accordion panels document.addEventListener('click', function (e) { var a = e.target.closest('a[href*="#"]'); if (!a || !a.hash) return; if (titleFor(a.hash)) { e.preventDefault(); if (location.hash !== a.hash) history.pushState(null, '', a.hash); retry(a.hash, 10, 80); } }); // 3) Handle back/forward to hashes window.addEventListener('hashchange', function () { if (location.hash) retry(location.hash, 10, 80); }); });