Jean Shorts

Show filters
Sort:
Size
Color
Price
All filters
Sort
Loading...
tag of the document. This will help to improve the load of the images // during color swatches interaction on PLP const preloadBackground = (entries, observer) => { entries.forEach(async (entry) => { if (entry.isIntersecting) { const swatch = entry.target; const images = swatch.dataset.varimg.split(','); images.forEach((img, index) => { // preload image const link = document.createElement('link'); link.href = buildSrc(img); link.imagesrcset = getSrcset(img); link.imagesizes = cssImageMediaCondition; link.rel = 'preload'; link.as = 'image'; document.getElementsByTagName('head')[0].appendChild(link); }); swatch.removeAttribute('data-varimg'); switchObserver.unobserve(swatch); } }); }; const switchObserver = new IntersectionObserver(preloadBackground, { root: null, // Default is the viewport rootMargin: '30px', threshold: 0.05, // Load image when 10% of the div is visible }); // Sort options function getPageParam() { const urlParams = new URLSearchParams(window.location.search); const pageParam = urlParams.get('page'); return pageParam ? parseInt(pageParam, 10) : 1; } domLoadedPage = getPageParam(); setupSortDropdown('.fs_sort_by_wrap_desktop', '.fs_sort_by_options_desktop', '.fs_sort_by_select_desktop'); const sortBySelect = document.getElementById('sortByDesktop'); let sortByValue = getSortBy(); // call the function and store the returned value sortBySelect.value = sortByValue; // update the desktop dropdown value on page load // update sort mobile dropdown value on page load const validSortOptions = ['price_min_to_max', 'price_max_to_min', 'creation_date', 'relevency']; sortByValue = validSortOptions.includes(sortByValue) ? sortByValue : 'relevency'; const inputField = document.querySelector(`form [data-value="${sortByValue}"]`); if (inputField) { inputField.checked = true; // update the value of the option } else { console.error(`No radio button found with data-value="${sortByValue}"`); } const form = document.getElementById('sortForm'); if (form) { form.addEventListener('change', (event) => { if (event.target.name === 'sort') { const selectedValue = event.target.getAttribute('data-value'); if (selectedValue && validSortOptions.includes(selectedValue)) { setUrlParam('sortBy', selectedValue, true); resetPageAndScroll(); updateOtherDropdown(selectedValue); } } }); } updateOtherDropdown(getSortBy()); if (sortBySelect) { sortBySelect.addEventListener('change', function () { if (sortBySelect.value && validSortOptions.includes(sortBySelect.value)) { setUrlParam('sortBy', sortBySelect.value, true); } }); } // Description 'read more' function toggleReadMore(button) { const container = button.parentNode; const isExpanded = container.getAttribute('aria-expanded') === 'true'; container.setAttribute('aria-expanded', !isExpanded); if (isExpanded) { button.querySelector('.button-text').textContent = 'more'; } else { button.querySelector('.button-text').textContent = 'Show less'; } } function visibleReadMore() { const toggleButtons = document.querySelectorAll('.fs_collection_top_toggle'); toggleButtons.forEach(button => { const description_children = button.previousElementSibling.children; let description_scroll_width = 0; let description_client_width = 0; for(const child of description_children) { description_scroll_width += child.scrollWidth; description_client_width += child.clientWidth; }; button.style.display = (description_scroll_width > description_client_width) ? 'block' : 'none'; }); } window.addEventListener('DOMContentLoaded', visibleReadMore); // category pills GTM const categories = document.querySelectorAll('.category-pills__pill'); let category; let categoryHandle; let categoryId; const pushCategoryPills = (category, categoryHandle, categoryId, typeCategory) => { if (category && categoryHandle && categoryId && typeCategory) { const categoryPills = { event: `categoryPills`, category: category, categoryHandle: categoryHandle, categoryId: categoryId, typeCategory: typeCategory }; window.dataLayer.push(categoryPills); } } categories?.forEach(category => { category.addEventListener('click', function(e) { try { category = e.currentTarget.getAttribute('data-category'); categoryHandle = e.currentTarget.getAttribute('data-collection-handle'); categoryId = e.currentTarget.getAttribute('data-collection-id'); typeCategory = e.currentTarget.getAttribute('data-type-category'); pushCategoryPills(category, categoryHandle, categoryId, typeCategory); } catch (error) { console.error('Error in category click event:', error); } }) })

Now Trending

Jean Shorts That Serve Every Mood

From casual days to weekend plans, Windsor’s jean shorts are your go-to for effortless style. High-rise and distressed denim cutoffs pair perfectly with crop tops, bodysuits, or puff-sleeve blouses for that cool, laid-back vibe.

Details That Make a Difference

Explore acid-wash styles, lace-up fronts, and belted waists for a bold finish. Want something flirty? Try a denim skort for the perfect mix of comfort and polish.

Colors & Styling Made Easy

Go classic in blue denim or switch it up with white, black, or seasonal shades. Pair with sneakers for everyday cool, swap in boots for added edge, or dress them up with heels and a crossbody bag for a night-out look.

Fits Every Plan

Whether you’re heading to a festival, a getaway, or just a coffee run, Windsor has jean shorts to match every occasion. These denim staples are made to move with you through every trend, every season.

Shop Windsor’s jean shorts online, in-app, or in-store and find your fit for any mood, any moment.

  • Top Tier Tailored Pinstripe Denim Mini Skort

    Made for the girl who always looks like she has a plan, this pinstripe denim mini skort nails that polished-but-playful balance. It fits sleek, moves with you, and works for everything from coffee catch-ups to your going-out lineup.

    Fit & Features

    • Denim fabric, pinstripe pattern
    • Mid-rise waist, belt loops
    • Extended belt tab, dual button closures
    • Dual front pockets
    • Mini-length overlay, form-hugging fit
    • Hidden fitted shorts
    • Runs true to size

    Style Number/Barcode: 06603-000127

    Category Name: Jean Shorts

    Price: $39.90

    Availability: In Stock

    Available Color: CHARCOAL

    Available Size: XS, S, M, L

  • City Cutie Denim Lace Up Skort

    This denim skort gives you the best of both worlds — a flirty mini vibe in the front with the comfort and confidence of shorts in the back. The lace-up placket adds that little edge that makes even a simple outfit feel styled.

    Fit & Features

    • Denim fabric, slight stretch
    • Mid-rise waist, back zipper and hook-eye closure
    • Lace-up placket at front
    • Skort front with shorts backing
    • Structured yet comfy fit
    • Runs true to size

    Style Number/Barcode: 06603-000129

    Category Name: Jean Shorts

    Price: $36.90

    Availability: In Stock

    Available Color: BROWN

    Available Size: XS, S, M, L

  • Bold Mood Snake Print Denim Mini Skort

    Meet the mini skort that does the flirting for you. The denim snake print adds that bold, I-run-the-room confidence—perfect for nights you want your outfit to do the talking.

    Fit & Features

    • Denim fabric, snake print
    • Mid-rise waist
    • Belted design, rectangular buckle
    • Mini-length overlay, form-hugging fit
    • Hidden fitted shorts
    • Runs true to size

    Style Number/Barcode: 06603-000130

    Category Name: Jean Shorts

    Price: $39.90

    Availability: In Stock

    Available Color: OLIVE

    Available Size: XS, S, M, L