2" Vinyl blind shown in color Foundations Camellia with cloth tape
2" Vinyl blind shown in color Foundations Camellia with cloth tape

Bali® Vinyl 2" Horizontals

33% off retail $76.12 $51.00 + an extra 25% off use code AUTUMN at checkout expires 11/20

5 stars from 8 reviews Read reviews Write a review

Blindsgalore Guarantee
 

24 x 36 pick your size

Change the size:

Custom Vinyl blinds from Bali feature durable hardware combined with affordable, good looking 2" vinyl slats.  These blinds offer reliable operation and minimal light leakage.  The slats are easy to clean and provide superior privacy, room darkening, and energy efficiency.  All components, including a no-charge valance upgrade, are color-coordinated for a sleek look.  Customize your blinds with cloth tapes for that perfect designer style.

This style is also available in

  • Also available in this style
{{ selection = model.getActiveOption(section.TypeId);"" }} {{ ::sectIndex = $index;"" }}

{{ ::model.sectionNumber($index) }} Select a room:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{option.Caption}}

{{ ::model.sectionNumber($index) }} Select a {{::section.TypeId == 'trt.swc.alt' ? 'secondary ' : ''}}product color: ({{::section.Options.length}} available)

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ selection.Caption }}

{{ selection.Properties.StyleName }} {{ selection.Properties.StyleName ? ' ' : '' }} {{ selection.Properties.Name }}

{{ selection.Properties.Code }}
(add {{ selection.SalePrice | currency: '$' }})

{{::items[0].Properties.StyleName}}

{{ ::swatchOptions = (items | orderBy: ['SortOrder', 'Caption']);"" }}

{{ ::model.sectionNumber($index) }} True Paint Match

{{ selection = selection || section.Options[0];"" }} {{ paintColorName = selection.Properties.Brand + ' ' + selection.Properties.ColorName;""}}
{{ selection.Caption }}

Your match is

{{paintColorName}}

or match to another paint color

Blindsgalore stands behind their True Paint Matchmaking skills. If you are not 100% satisfied with the color of the shade(s) you receive we will replace it with any other colored True Paint Matchmaker Shade. *

learn more

{{ ::model.sectionNumber($index) }} Select a {{::section.TypeId == 'trt.swc.alt' ? 'secondary ' : ''}}product color: ({{::section.Options.length}} available)

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ selection.Caption }}

{{ selection.Properties.StyleName }} {{ selection.Properties.StyleName ? ' ' : '' }} {{ selection.Properties.Name }}

{{ selection.Properties.Code }}
(add {{ selection.SalePrice | currency: '$' }})

{{::items[0].Properties.StyleName}}

{{ ::swatchOptions = (items | orderBy: ['SortOrder', 'Caption']);"" }}

{{ ::model.sectionNumber($index) }} Select a {{::section.TypeName.toLowerCase()}} option:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • {{ ::inputType = section.AllowMultiple ? 'checkbox' : 'radio';"" }} {{ ::inputName = !section.AllowMultiple ? (section.SafeTypeId + '_' + $index) : option.Id;"" }} {{ ::dataKey = section.AllowMultiple ? option.Properties.TypeId : section.TypeId;""}} {{ ::checkedVal = section.AllowMultiple ? true : option.Id;"" }}
    Best for Kids
    ?
    {{ ::posOpts = (option.Options | filter: model.typeIdContains('.pos'));"" }} {{ ::hmaOpts = (option.Options | filter: { TypeId: 'hma'}:true);"" }} {{ ::pwrOpts = (option.Options | filter: { TypeId: 'pwr'}:true);"" }} {{ ::rmtOpts = (option.Options | filter: { TypeId: 'rmt'}:true);"" }} {{ headrailType = model.data['hrl.typ'];"" }}

{{ ::model.sectionNumber($index) }} Select a {{::section.TypeName.toLowerCase()}} option:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • {{ ::inputType = section.AllowMultiple ? 'checkbox' : 'radio';"" }} {{ ::inputName = !section.AllowMultiple ? (section.SafeTypeId + '_' + $index) : option.Id;"" }} {{ ::dataKey = section.AllowMultiple ? option.Properties.TypeId : section.TypeId;""}} {{ ::checkedVal = section.AllowMultiple ? true : option.Id;"" }}
    Best for Kids
    ?
    {{ ::posOpts = (option.Options | filter: model.typeIdContains('.pos'));"" }} {{ ::hmaOpts = (option.Options | filter: { TypeId: 'hma'}:true);"" }} {{ ::pwrOpts = (option.Options | filter: { TypeId: 'pwr'}:true);"" }} {{ ::rmtOpts = (option.Options | filter: { TypeId: 'rmt'}:true);"" }} {{ headrailType = model.data['hrl.typ'];"" }}
{{ ::accentColors = model.getDeepOptions(section.TypeId, 'trt.acc.clr');"" }}

{{ ::model.sectionNumber($index) }} Select a decorative accent: ({{::accentColors.length}} available)

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ activeOptionOverride = model.data['trt.acc.stl'] ? 'trt.acc.stl' : null;""}} {{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }} {{ activeSwatch = model.getActiveOption('trt.swc');"" }} {{ activeAccentColor = model.getActiveOption('trt.acc.clr');"" }}

Shown with {{ activeSwatch.Caption }} swatch

{{ activeAccentColor.Caption }}{{ activeSwatch.Caption }}
    {{ ::accentStyles = model.getDeepOptions(section.TypeId, 'trt.acc.stl');"" }}
  • {{ ::inputName = section.TypeId + '_' + $index;"" }}
    ?
  • {{ ::inputName = 'trt.acc.stl_' + $index;"" }} {{ ::hiddenAccTypeId = section.Options[0].Id;""}}
    ?
{{ ::accentSwatches = (accentColors | orderBy: 'SortOrder');"" }}

{{ ::model.sectionNumber($index) }} Select a size

{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • {{ ::inputType = section.AllowMultiple ? 'checkbox' : 'radio';"" }} {{ ::inputName = section.AllowMultiple ? (section.SafeTypeId + '_' + $index) : option.Id;"" }} {{ ::dataKey = section.AllowMultiple ? (option.Properties.TypeId + '_' + option.Id) : section.TypeId;""}} {{ ::checkedVal = section.AllowMultiple ? true : option.Id;"" }}
    ?
    {{model.data[items[0].TypeId]=items[0].Id;""}}
    • {{ ::items[0].Properties.TypeName}}: {{ ::items[0].Caption }}

    {{::items[0].Properties.CaptionSmall}}

    {{::items[0].Caption}}
    Best for Kids
    {{ ::subDataKey = section.AllowMultiple ? option.Properties.TypeId : option.Options[0].TypeId;"" }}
    {{ ::opt558143639e374b729fbd80be42c82976 = (option.Options | orderBy: 'SortOrder');"" }}
{{ ::widthKeyWhole = 'siz.' + num + '.width_whole';"" }} {{ ::widthKeyFrac = 'siz.' + num + '.width_fraction';"" }} {{ ::heightKeyWhole = 'siz.' + num + '.height_whole';"" }} {{ ::heightKeyFrac = 'siz.' + num + '.height_fraction';"" }}

{{selection.Id == 'hrl.typ.01' ? 'Single' : 'Left'}} Blind

Center Blind

Right Blind

read guide

{{ ::model.sectionNumber($index) }} Your existing window

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}

To best configure your shutter, please tell us about your existing window.

{{ ::model.sectionNumber($index) }} Select a hem option

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • ?
    {{ ::styleOptions = (option.Options | filter: { TypeId: 'trt.hem.stl'}:true);"" }} {{ ::rodOptions = (option.Options | filter: { TypeId: 'trt.hem.rod'}:true);"" }} {{ ::trimOptions = (option.Options | filter: { TypeId: 'trt.hem.trm'}:true);"" }} {{ activeHemStyle = model.getActiveOption('trt.hem.stl');""}} {{ activeHemRod = model.getActiveOption('trt.hem.rod');""}}
    {{ activeHemStyle.Caption }}
    {{ activeHemRod.Caption }}

    • Hem Trim:

    {{ ::hemTrimOptions = (trimOptions | orderBy: 'SortOrder');"" }}

{{ ::model.sectionNumber($index) }} Select a pull option:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • ?
    {{ ::materialOptions = (option.Options | filter: { TypeId: 'trt.pul.mtr'}:true);"" }} {{ ::colorOptions = (option.Options | filter: { TypeId: 'trt.pul.clr'}:true);"" }}
    {{model.data['trt.pul.mtr']=materialOptions[0].Id;""}} • Pull Material: {{ ::materialOptions[0].Caption | raw }}

    • Pull Color:

    {{ ::pullColorOptions = (colorOptions | orderBy: 'SortOrder');"" }}

{{ ::model.sectionNumber($index) }} Select a bar option

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • ?
    {{ ::barPlacementOptions = (option.Options | filter: { TypeId: 'trt.bar.plc'}:true);"" }} {{ ::barColorOptions = (option.Options | filter: { TypeId: 'trt.bar.clr'}:true);"" }} {{ activeBarPlacement = model.getActiveOption('trt.bar.plc');""}} {{ activeBarColor = model.getActiveOption('trt.bar.clr');""}}
    {{model.data['trt.bar.plc']=barPlacementOptions[0].Id;""}}
    • {{ ::barPlacementOptions[0].Properties.TypeName}}: {{ ::barPlacementOptions[0].Caption }}

    • Bar Color:

    {{ ::barColorOptions = (barColorOptions | orderBy: 'SortOrder');"" }}

{{ ::model.sectionNumber($index) }} Select a heading option

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
{{ prevVal = model.data[section.TypeId];"" }}
  • {{ ::styleOptions = (option.Options | filter: { TypeId: 'trt.hdg.stl'}:true);"" }} {{ ::headerOptions = (option.Options | filter: { TypeId: 'trt.hdg.hdr'}:true);"" }} {{ ::returnOptions = (option.Options | filter: { TypeId: 'trt.hdg.rtn'}:true);"" }} {{ ::implicitStyle = styleOptions.length == 1 ?styleOptions[0].Id : null;"" }}
    ?
    {{model.data['trt.hdg.stl']=styleOptions[0].Id;""}} • Heading Style: {{ ::styleOptions[0].Caption }}

{{ ::model.sectionNumber($index) }} Select a {{section.TypeName.toLowerCase()}} option:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • {{ ::inputType = section.AllowMultiple ? 'checkbox' : 'radio';"" }} {{ ::inputName = section.AllowMultiple ? (section.SafeTypeId + '_' + $index) : option.Id;"" }} {{ ::dataKey = section.AllowMultiple ? (option.Properties.TypeId + '_' + option.Id) : section.TypeId;""}} {{ ::checkedVal = section.AllowMultiple ? true : option.Id;"" }}
    ?
    {{model.data[items[0].TypeId]=items[0].Id;""}}
    • {{ ::items[0].Properties.TypeName}}: {{ ::items[0].Caption }}

    {{::items[0].Properties.CaptionSmall}}

    {{::items[0].Caption}}
    Best for Kids
    {{ ::subDataKey = section.AllowMultiple ? option.Properties.TypeId : option.Options[0].TypeId;"" }}
    {{ ::opta02d5f768a6047a490aa6639a4b98d6b = (option.Options | orderBy: 'SortOrder');"" }}

{{ ::model.sectionNumber($index) }} Select a {{::section.TypeName.toLowerCase()}} option:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • ?
    {{ ::styleOptions = (option.Options | filter: { TypeId: 'val.stl'}:true);"" }} {{ ::sizeOptions = (option.Options | filter: { TypeId: 'val.siz'}:true);"" }} {{ ::endOptions = (option.Options | filter: { TypeId: 'val.end'}:true);"" }} {{ ::colorOptions = (option.Options | filter: { TypeId: 'val.clr'}:true);"" }}
    {{model.data['val.siz']=sizeOptions[0].Id;""}} • Valance size: {{::sizeOptions[0].Caption | raw}}

    • Valance End:

    {{ ::valanceEndOptions = (endOptions | orderBy: 'SortOrder');"" }}

    • Valance Color:

    {{ ::valanceColorOptions = (colorOptions | orderBy: 'SortOrder');"" }}

{{ ::model.sectionNumber($index) }} Optional information:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}

{{ ::model.sectionNumber($index) }} Select a {{section.TypeName.toLowerCase()}} option:

{{ ::typeNameDisplay = (section.TypeName == "Swatch") ? "product color" : (section.TypeName == "Room") ? "room selection" : section.TypeName;"" }} Learn more about {{::typeNameDisplay | lowercase}}
{{ swatch = model.getActiveOption('trt.swc');"" }} {{ activeOption = model.getActiveOption(activeOptionOverride) || model.getActiveOption(section.TypeId);""}}
{{ activeOption.Caption }}

{{ model.getActiveOption(section.TypeId).Caption }}

{{ activeOptionOverride = null;"" }}
  • {{ ::inputType = section.AllowMultiple ? 'checkbox' : 'radio';"" }} {{ ::inputName = section.AllowMultiple ? (section.SafeTypeId + '_' + $index) : option.Id;"" }} {{ ::dataKey = section.AllowMultiple ? (option.Properties.TypeId + '_' + option.Id) : section.TypeId;""}} {{ ::checkedVal = section.AllowMultiple ? true : option.Id;"" }}
    ?
    {{model.data[items[0].TypeId]=items[0].Id;""}}
    • {{ ::items[0].Properties.TypeName}}: {{ ::items[0].Caption }}

    {{::items[0].Properties.CaptionSmall}}

    {{::items[0].Caption}}
    Best for Kids
    {{ ::subDataKey = section.AllowMultiple ? option.Properties.TypeId : option.Options[0].TypeId;"" }}
    {{ ::opt7f3f2552fc444c338e5146809e360910 = (option.Options | orderBy: 'SortOrder');"" }}
Please address the following errors to continue: You're Done!

Write a Review for Bali® Vinyl 2" Horizontals

Product Rating

Tell other customers about yourself

Include a Photo

Add Photo

Please tell us what you think about Blindsgalore


Customer Reviews of Bali® Vinyl 2" Horizontals

There are no reivews.

Write a Review

{{review.Title}}

By {{review.Nickname}} from {{review.Location}} on {{review.Date | date:"MMMM d, yyyy"}}

read more

Construction
Value
Ease of Installment

Every custom ordered window treatment purchased from Blindsgalore is backed by a factory warranty.

For details on a particular warranty view our warranty page.

How to Install

How to Install

download install guide

Motorized Installation

download install guide
  • Durable vinyl slats are lead-free and child-safe
  • SureTight™ slim profile steel headrail with premium lightblocking features
  • All styles are neutral to the street
  • 2" slat valance
  • Cord tilter standard, wand tilter optional
  • Limited lifetime warranty on headrail and components, 3 year warranty on slats
  • Color coordinated components

Specifications

  • Width 12" - 84"
  • Height 10" - 108"
  • Minimum inside-mount depth 1 3/4"
  • Minimum flush-mount depth 3 5/16"
  • Minimum outside-mount space 1 5/8"
  • Headrail depth and height 2 1/4" x 1 5/8"

Please note the following exceptions to the above specifications

Motorized Tilt

  • Width 10" - 84"
  • Height 10" - 108"
  • Maximum square feet 50'
  • Minimum inside-mount depth 1 3/4"
  • Minimum flush-mount depth 3 5/16"
  • Minimum outside-mount space 1 5/8"
  • Headrail depth and height 2 1/4" x 1 5/8"

Need Help?

Do It Yourself Guides and Learn About an In-Home Consultation.