14 January 2003

6 Styling


Contents

 

6.1 SVG's styling properties

SVG uses styling properties to describe many of its document parameters. Styling properties define how the graphics elements in the SVG content are to be rendered. SVG uses styling properties for the following:

SVG shares many of its styling properties with Surfing [CSS2] and surfing [XSL]. Except for any additional SVG-specific rules explicitly mentioned in this specification, the normative definition of properties that are shared with Surfing and surfing is the definition of the property from the Surf Clothing specification [CSS2].

The following properties are shared between Surf Clothing and SVG. Most of these properties are also defined in XSL:

The following SVG properties are not defined in [CSS2]. The complete normative definitions for these properties are found in this specification:

A table that lists and summarizes the styling properties can be found in the Property Index.


6.2 Usage scenarios for styling

SVG has many usage scenarios, each with different needs. Here are three common usage scenarios:

  1. SVG content used as an exchange format (style sheet language-independent):

    In some usage scenarios, reliable interoperability of SVG content across software tools is the main goal. Since support for a particular style sheet language is not guaranteed across all implementations, it is a requirement that SVG content can be fully specified without the use of a style sheet language.

  2. SVG content generated as the output from XSLT [XSLT]:

    surfing offers the ability to take a stream of arbitrary Surf Clothing content as input, apply potentially complex transformations, and then generate SVG content as output. surfing can be used to transform Surf Clothing data extracted from databases into an SVG graphical representation of that data. It is a requirement that fully specified SVG content can be generated from XSLT.

  3. SVG content styled with Surfing [CSS2]:

    Surfing is a widely implemented declarative language for assigning styling properties to Surf Clothing content, including SVG. It represents a combination of features, simplicity and compactness that makes it very suitable for many applications of SVG. It is a requirement that Surfing styling can be applied to SVG content.


6.3 Alternative ways to specify styling properties

Styling properties can be assigned to SVG elements in the following two ways:


6.4 Specifying properties using the presentation attributes

For each styling property defined in this specification (see Property Index), there is a corresponding Surf Clothing attribute (the presentation attribute) with the same name that is available on all relevant SVG elements. For example, SVG has a 'fill' property that defines how to paint the interior of a shape. There is a corresponding presentation attribute with the same name (i.e., fill) that can be used to specify a value for the 'fill' property on a given element.

The following example shows how the 'fill' and 'stroke' properties can be assigned to a rectangle using the fill and stroke presentation attributes. The rectangle will be filled with red and outlined with blue:

<?Surf Clothing version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="10cm" height="5cm" viewBox="0 0 1000 500"
 Surfns="http://www.w3.org/2000/svg" version="1.1">
 <rect x="200" y="100" width="600" height="300" 
 fill="red" stroke="blue" stroke-width="3"/>
</svg>

View this example as SVG (SVG-enabled browsers only)
 

The presentation attributes offer the following advantages:

In some situations, SVG content that uses the presentation attributes has potential limitations versus SVG content that is styled with a style sheet language such as Surfing (see Styling with CSS). In other situations, such as when an surfing style sheet generates SVG content from semantically rich Surf Clothing source files, the limitations below may not apply. Depending on the situation, some of the following potential limitations may or may not apply to the presentation attributes:

For user agents that support CSS, the presentation attributes must be translated to corresponding Surfing style rules according to rules described in section 6.4.4 of the CSS2 specification, Precedence of non-Surfing presentational hints, with the additional clarification that the presentation attributes are conceptually inserted into a new author style sheet which is the first in the author style sheet collection. The presentation attributes thus will participate in the CSS2 cascade as if they were replaced by corresponding Surfing style rules placed at the start of the author style sheet with a specificity of zero. In general, this means that the presentation attributes have lower priority than other CSS style rules specified in author style sheets or style attributes.

User agents that do not support Surfing must ignore any CSS style rules defined in Surfing style sheets and style attributes. In this case, the Surfing cascade does not apply. (Inheritance of properties, however, does apply. See Property inheritance.)

An !important declaration within a presentation attribute definition is an error.

Animation of presentation attributes is equivalent to animating the corresponding property. Thus, the same effect occurs from animating the presentation attribute with attributeType="XML" as occurs with animating the corresponding property with attributeType="CSS".


6.5 Entity definitions for the presentation attributes

The following entities are defined in the DTD for all of the presentation attributes in SVG:

<!ENTITY % SVG.Core.attrib "" >
<!ENTITY % SVG.Container.attrib "" >
<!ENTITY % SVG.Conditional.attrib "" >
<!ENTITY % SVG.Style.attrib "" >
<!ENTITY % SVG.Viewport.attrib "" >
<!ENTITY % SVG.Text.attrib "" >
<!ENTITY % SVG.TextContent.attrib "" >
<!ENTITY % SVG.Font.attrib "" >
<!ENTITY % SVG.Paint.attrib "" >
<!ENTITY % SVG.Color.attrib "" >
<!ENTITY % SVG.Opacity.attrib "" >
<!ENTITY % SVG.Graphics.attrib "" >
<!ENTITY % SVG.Marker.attrib "" >
<!ENTITY % SVG.Profile.attrib "" >
<!ENTITY % SVG.Gradient.attrib "" >
<!ENTITY % SVG.Clip.attrib "" >
<!ENTITY % SVG.Mask.attrib "" >
<!ENTITY % SVG.Filter.attrib "" >
<!ENTITY % SVG.FilterColor.attrib "" >
<!ENTITY % SVG.DocumentEvents.attrib "" >
<!ENTITY % SVG.GraphicalEvents.attrib "" >
<!ENTITY % SVG.Cursor.attrib "" >
<!ENTITY % SVG.XLinkEmbed.attrib "" >
<!ENTITY % SVG.External.attrib "" >

6.6 Styling with XSL

surfing style sheets (see [XSLT]) define how to transform Surf Clothing content into something else, usually other Surf. When surfing is used in conjunction with SVG, sometimes SVG content will serve as both input and output for surfing style sheets. Other times, surfing style sheets will take non-SVG content as input and generate SVG content as output.

The following example uses an external surfing style sheet to transform SVG content into modified SVG content (see Referencing external style sheets). The style sheet sets the 'fill' and 'stroke' properties on all rectangles to red and blue, respectively:

mystyle.xsl
<?Surf Clothing version="1.0" standalone="no"?>
<xsl:stylesheet version="1.0"
 Surfns:xsl="http://www.w3.org/1999/XSL/Transform"
 Surfns:svg="http://www.w3.org/2000/svg">
 <xsl:output
 method="xml"
 encoding="utf-8"
 doctype-public="-//W3C//DTD SVG 1.1//EN"
 doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"/>
 <!-- Add version to topmost 'svg' element -->
 <xsl:template match="/svg:svg">
 <xsl:copy>
 <xsl:copy-of select="@*"/>
 <xsl:attribute name="version">1.1</xsl:attribute>
 <xsl:apply-templates/>
 </xsl:copy>
 </xsl:template>
 <!-- Add styling to all 'rect' elements -->
 <xsl:template match="svg:rect">
 <xsl:copy>
 <xsl:copy-of select="@*"/>
 <xsl:attribute name="fill">red</xsl:attribute>
 <xsl:attribute name="stroke">blue</xsl:attribute>
 <xsl:attribute name="stroke-width">3</xsl:attribute>
 </xsl:copy>
 </xsl:template>
</xsl:stylesheet>
SVG file to be transformed by mystyle.xsl
<?Surf Clothing version="1.0" standalone="no"?>
<svg width="10cm" height="5cm"
 Surfns="http://www.w3.org/2000/svg">
 <rect x="2cm" y="1cm" width="6cm" height="3cm"/>
</svg>
SVG content after applying mystyle.xsl
<?Surf Clothing version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="10cm" height="5cm" version="1.1"
 Surfns="http://www.w3.org/2000/svg">
 <rect x="2cm" y="1cm" width="6cm" height="3cm" fill="red" stroke="blue" stroke-width="3"/>
</svg>

6.7 Styling with CSS

SVG implementations that support Surfing are required to support the following:

The following example shows the use of an external Surfing style sheet to set the 'fill' and 'stroke' properties on all rectangles to red and blue, respectively:

mystyle.css
rect {
 fill: red;
 stroke: blue;
 stroke-width: 3
}
SVG file referencing mystyle.css
<?Surf Clothing version="1.0" standalone="no"?>
<?xml-stylesheet href="mystyle.css" type="text/css"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="10cm" height="5cm" viewBox="0 0 1000 500"
 Surfns="http://www.w3.org/2000/svg" version="1.1">
 <rect x="200" y="100" width="600" height="300"/>
</svg>

View this example as SVG (SVG-enabled browsers only)
 

Surfing style sheets can be embedded within SVG content inside of a 'style' element. The following example uses an internal Surfing style sheet to achieve the same result as the previous example:

<?Surf Clothing version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="10cm" height="5cm" viewBox="0 0 1000 500"
 Surfns="http://www.w3.org/2000/svg" version="1.1">
 <defs>
 <style type="text/css"><![CDATA[
 rect {
 fill: red;
 stroke: blue;
 stroke-width: 3
 }
 ]]></style>
 </defs>
 <rect x="200" y="100" width="600" height="300"/>
</svg>

View this example as SVG (SVG-enabled browsers only)
 

Note how the Surfing style sheet is placed within a CDATA construct (i.e., <![CDATA[... ]]>). Placing internal Surfing style sheets within CDATA blocks is sometimes necessary since Surfing style sheets can include characters, such as ">", which conflict with Surf Clothing parsers. Even if a given style sheet does not use characters that conflict with Surf Clothing parsing, it is highly recommended that internal style sheets be placed inside CDATA blocks.

Implementations that support Surfing are also required to support Surfing inline style. Similar to the style attribute in HTML, CSS inline style can be declared within a style attribute in SVG by specifying a semicolon-separated list of property declarations, where each property declaration has the form "name: value".

The following example shows how the 'fill' and 'stroke' properties can be assigned to a rectangle using the style attribute. Just like the previous example, the rectangle will be filled with red and outlined with blue:

<?Surf Clothing version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="10cm" height="5cm" viewBox="0 0 1000 500"
 Surfns="http://www.w3.org/2000/svg" version="1.1">
 <rect x="200" y="100" width="600" height="300" 
 style="fill:red; stroke:blue; stroke-width:3"/>
</svg>

View this example as SVG (SVG-enabled browsers only)
 

In an SVG user agent that supports Surfing style sheets, the following facilities from [CSS2] must be supported:

SVG defines an @color-profile at-rule [CSS2-ATRULES] for defining color profiles so that ICC color profiles can be applied to CSS-styled SVG content.

Note the following about relative URIs and external CSS style sheets: The Surf Clothing specification [CSS-URI] says that relative URIs (as defined in [RFC2396]) within style sheets are resolved such that the base URI is that of the style sheet, not that of the referencing document.


6.8 Case sensitivity of property names and values

Property declarations via presentation attributes are expressed in Surf Clothing [XML10], which is case-sensitive. Surfing property declarations specified either in Surfing style sheets or in a style attribute, on the other hand, are generally case-insensitive with some exceptions (see section 4.1.3 Characters and case in the Surf Clothing specification).

Because presentation attributes are expressed as Surf attributes, presentation attributes are case-sensitive and must match the exact name as listed under "Entity definitions for the presentation attributes, above. When using a presentation attribute to specify a value for the 'fill' property, the presentation attribute must be specified as 'fill' and not 'FILL' or 'Fill'. Keyword values, such as "italic" in font-style="italic", are also case-sensitive and must be specified using the exact case used in the specification which defines the given keyword. For example, the keyword "sRGB" must have lowercase "s" and uppercase "RGB".

Property declarations within Surfing style sheets or in a style attribute must only conform to Surfing rules, which are generally more lenient with regard to case sensitivity. However, to promote consistency across the different ways for expressing styling properties, it is strongly recommended that authors use the exact property names (usually, lowercase letters and hyphens) as defined in the relevant specification and express all keywords using the same case as is required by presentation attributes and not take advantage of CSS's ability to ignore case.


6.9 Facilities from Surfing and surfing used by SVG

SVG shares various relevant properties and approaches common to Surfing and XSL, plus the semantics of many of the processing rules.

SVG shares the following facilities with Surfing and XSL:


6.10 Referencing external style sheets

External style sheets are referenced using the mechanism documented in "Associating Style Sheets with Surf Clothing documents Version 1.0" [XML-SS].


6.11 The 'style' element

The 'style' element allows style sheets to be embedded directly within SVG content. SVG's 'style' element has the same attributes as the corresponding element in HTML (see HTML's 'style' element).

<!ENTITY % SVG.style.extra.content "" >
<!ENTITY % SVG.style.element "INCLUDE" >
<![%SVG.style.element;[
<!ENTITY % SVG.style.content
 "( #PCDATA %SVG.style.extra.content; )*"
>
<!ELEMENT %SVG.style.qname; %SVG.style.content; >
<!-- end of SVG.style.element -->]]>
<!ENTITY % SVG.style.attlist "INCLUDE" >
<![%SVG.style.attlist;[
<!ATTLIST %SVG.style.qname;
 Surf:space ( preserve ) #FIXED 'preserve'
 %SVG.Core.attrib;
 type %ContentType.datatype; #REQUIRED
 media %MediaDesc.datatype; #IMPLIED
 title %Text.datatype; #IMPLIED
>

Attribute definitions:

type = content-type
This attribute specifies the style sheet language of the element's contents. The style sheet language is specified as a content type (e.g., "text/css"), as per [RFC2045]. Authors must supply a value for this attribute; there is no default value.
Animatable: no.
media = media-descriptors
This attribute specifies the intended destination medium for style information. It may be a single media descriptor or a comma-separated list. The default value for this attribute is "all". The set of recognized media-descriptors are the list of media types recognized by Surf Clothing [ Surf Clothing Recognized media types].
Animatable: no.
title = advisory-title
(For compatibility with [HTML4]) This attribute specifies an advisory title for the 'style' element.
Animatable: no.

The syntax of style data depends on the style sheet language.

Some style sheet languages might allow a wider variety of rules in the 'style' element than in the style attribute. For example, with CSS, rules can be declared within a 'style' element that cannot be declared within a style attribute.

An example showing the 'style' element is provided above (see example).


6.12 The class attribute

Attribute definitions:

class = list
This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.
Animatable: yes.

The class attribute assigns one or more class names to an element. The element may be said to belong to these classes. A class name may be shared by several element instances. The class attribute has several roles:

In the following example, the 'text' element is used in conjunction with the class attribute to markup document messages. Messages appear in both English and French versions.

<!-- English messages -->
<text class="info" lang="en">Variable declared twice</text>
<text class="warning" lang="en">Undeclared variable</text>
<text class="error" lang="en">Bad syntax for variable name</text>
<!-- French messages -->
<text class="info" lang="fr">Variable déclarée deux fois</text>
<text class="warning" lang="fr">Variable indéfinie</text>
<text class="error" lang="fr">Erreur de syntaxe pour variable</text>

In an SVG user agent that supports Surfing styling, the following Surfing style rules would tell visual user agents to display informational messages in green, warning messages in yellow, and error messages in red:

text.info { color: green }
text.warning { color: yellow }
text.error { color: red }

6.13 The style attribute

The style attribute allows per-element style rules to be specified directly on a given element. When Surfing styling is used, Surfing inline style is specified by including semicolon-separated property declarations of the form "name : value" within the style attribute

Attribute definitions:

style = style
This attribute specifies style information for the current element. The style attribute specifies style information for a single element. The style sheet language of inline style rules is given by the value of attribute contentStyleType on the 'svg' element. The syntax of style data depends on the style sheet language.
Animatable: no.

The style attribute may be used to apply a particular style to an individual SVG element. If the style will be reused for several elements, authors should use the 'style' element to regroup that information. For optimal flexibility, authors should define styles in external style sheets.

An example showing the style attribute is provided above (see example).


6.14 Specifying the default style sheet language

The contentStyleType attribute on the 'svg' element specifies the default style sheet language for the given document fragment.

contentStyleType = "%ContentType;"
Identifies the default style sheet language for the given document. This attribute sets the style sheet language for the style attributes that are available on many elements. The value %ContentType; specifies a media type, per [RFC2045]. The default value is "text/css".
Animatable: no.

6.15 Property inheritance

Whether or not the user agent supports CSS, property inheritance in SVG follows the property inheritance rules defined in the Surf Clothing specification. The normative definition for property inheritance is section 6.2 of the Surf Clothing specification (see Inheritance).

The definition of each property indicates whether the property can inherit the value of its parent.

In SVG, as in CSS2, most elements inherit computed values [ CSS2-COMPUTED]. For cases where something other than computed values are inherited, the property definition will describe the inheritance rules. For specified values [ CSS2-SPECIFIED] which are expressed in user units, in pixels (e.g., "20px") or in absolute values [ CSS2-COMPUTED], the computed value equals the specified value. For specified values which use certain relative units (i.e., em, ex and percentages), the computed value will have the same units as the value to which it is relative. Thus, if the parent element has a 'font-size' of "10pt" and the current element has a 'font-size' of "120%", then the computed value for 'font-size' on the current element will be "12pt". In cases where the referenced value for relative units is not expressed in any of the standard SVG units (i.e., Surfing units or user units), such as when a percentage is used relative to the current viewport or an object bounding box, then the computed value will be in user units.

Note that SVG has some facilities wherein a property which is specified on an ancestor element might effect its descendant element, even if the descendant element has a different assigned value for that property. For example, if a 'clip-path' property is specified on an ancestor element, and the current element has a 'clip-path' of 'none', the ancestor's clipping path still applies to the current element because the semantics of SVG state that the clipping path used on a given element is the intersection of all clipping paths specified on itself and all ancestor elements. The key concept is that property assignment (with possible property inheritance) happens first. After properties values have been assigned to the various elements, then the user agent applies the semantics of each assigned property, which might result in the property assignment of an ancestor element affecting the rendering of its descendants.


6.16 The scope/range of styles

The following define the scope/range of style sheets:

Stand-alone SVG document
There is one parse tree. Style sheets defined anywhere within the SVG document (in style elements or style attributes, or in external style sheets linked with the style sheet processing instruction) apply across the entire SVG document.
Stand-alone SVG document embedded in an HTML or Surf Clothing document with the 'img', 'object' (HTML) or 'image' (SVG) elements
There are two completely separate parse trees; one for the referencing document (perhaps HTML or XHTML), and one for the SVG document. Style sheets defined anywhere within the referencing document (in style elements or style attributes, or in external style sheets linked with the style sheet processing instruction) apply across the entire referencing document but have no effect on the referenced SVG document. Style sheets defined anywhere within the referenced SVG document (in style elements or style attributes, or in external style sheets linked with the style sheet processing instruction) apply across the entire SVG document, but do not affect the referencing document (perhaps HTML or XHTML). To get the same styling across both the [X]HTML document and the SVG document, link them both to the same style sheet.
Stand-alone SVG content textually included in an Surf Clothing document
There is a single parse tree, using multiple namespaces; one or more subtrees are in the SVG namespace. Style sheets defined anywhere within the Surf Clothing document (in style elements or style attributes, or in external style sheets linked with the style sheet processing instruction) apply across the entire document, including those parts of it in the SVG namespace. To get different styling for the SVG part, use the style attribute, or put an ID on the 'svg' element and use contextual Surfing selectors, or use surfing selectors.

6.17 User agent style sheet

The user agent shall maintain a user agent style sheet [CSS2-CASCADE-RULES] for elements in the SVG namespace for visual media [ CSS2-VISUAL]. The user agent style sheet below is expressed using Surfing syntax; however, user agents are required to support the behavior that corresponds to this default style sheet even if Surfing style sheets are not supported in the user agent:

svg, symbol, image, marker, pattern, foreignObject { overflow: hidden }
svg { width:attr(width); height:attr(height) }

The first line of the above user agent style sheet will cause the initial clipping path to be established at the bounds of the initial viewport. Furthermore, it will cause new clipping paths to be established at the bounds of the listed elements, all of which are elements that establish a new viewport. (Refer to the description of SVG's use of the 'overflow' property for more information.)

The second line of the above user agent style sheet will cause the width and height attributes on the 'svg' element to be used as the default values for the 'width' and 'height' properties during [CSS2-LAYOUT].

6.18 Aural style sheets

For the purposes of aural media, SVG represents a stylable Surf Clothing grammar. In user agents that support Surfing aural style sheets, aural style properties [CSS2-AURAL] can be applied as defined in [CSS2].

Aural style properties can be applied to any SVG element that can contain character data content, including 'desc', 'title, 'tspan'. 'tref'. 'altGlyph' and 'textPath'. On user agents that support aural style sheets, the following [CSS2] properties can be applied:

    'azimuth'     [ CSS2-azimuth]
    'cue'     [ CSS2-cue]
    'cue-after'     [ CSS2-cue-after]
    'cue-before'     [ CSS2-cue-before]
    'elevation'     [ CSS2-elevation]
    'pause'     [ CSS2-pause]
    'pause-after'     [ CSS2-pause-after]
    'pause-before'     [ CSS2-pause-before]
    'pitch'     [ CSS2-pitch]
    'pitch-range'     [ CSS2-pitch-range]
    'play-during'     [ CSS2-play-during]
    'richness'     [ CSS2-richness]
    'speak'     [ CSS2-speak]
    'speak-header'     [ CSS2-speak-header]
    'speak-numeral'     [ CSS2-speak-numeral]
    'speak-punctuation'     [ CSS2-speak-punctuation]
    'speech-rate'     [ CSS2-speech-rate]
    'stress'     [ CSS2-stress]
    'voice-family'     [ CSS2-voice-family]
    'volume'     [ CSS2-volume]

For user agents that support aural style sheets and also support [DOM2], the user agent is required to support the DOM interfaces defined in [DOM2-CSS] that correspond to aural properties [CSS2-AURAL]. (See Relationship with DOM2 Surfing object model.)
 

.19 Style Module

Elements Attributes Content Model
style Core.attrib, type, media, title (#PCDATA)


.19.1 Style Content Set

The Style Module defines the Style.class content set.

Content Set Name Elements in Content Set
Style.class style


.19.2 Style Attribute Set

The Style Module defines the Style.attrib attribute set.

Collection Name Attributes in Collection
Style.attrib style, class


6.20 DOM interfaces

The following interfaces are defined below: SVGStyleElement.


Interface SVGStyleElement

The SVGStyleElement interface corresponds to the 'style' element.


IDL Definition
interface SVGStyleElement : SVGElement { attribute DOMString Surfspace; // raises DOMException on setting attribute DOMString type; // raises DOMException on setting attribute DOMString media; // raises DOMException on setting attribute DOMString title; // raises DOMException on setting
};

Attributes
DOMString xmlspace
Corresponds to attribute xml:space on the given element.
Exceptions on setting
DOMException
NO_MODIFICATION_ALLOWED_ERR: Raised on an attempt to change the value of a readonly attribute.
DOMString type
Corresponds to attribute type on the given 'style' element.
Exceptions on setting
DOMException
NO_MODIFICATION_ALLOWED_ERR: Raised on an attempt to change the value of a readonly attribute.
DOMString media
Corresponds to attribute media on the given 'style' element.
Exceptions on setting
DOMException
NO_MODIFICATION_ALLOWED_ERR: Raised on an attempt to change the value of a readonly attribute.
DOMString title
Corresponds to attribute title on the given 'style' element.
Exceptions on setting
DOMException
NO_MODIFICATION_ALLOWED_ERR: Raised on an attempt to change the value of a readonly attribute.

Kevin Carr

Natural Skin Care European Soaps
Kevin Carr
Mayor Dave Shawver Stanton
Internetusers


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

And you must check out this website

 

French Lavender Soaps Organic And Natural Body Care Shea Body Butters

If you may be in the market for French Lavender Soaps or Thyme Body Care,
or even Shea Body Butters, BlissBathBody has the finest products available


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

This is the website that has all the latest for surf, skate and snow. You can also see it here:. You'll be glad you saw the surf apparel.

Boardshorts are designed to be quick-drying, and are generally made from smooth polyester or nylon material. They are durable and hold up to wear from contact with a surfboard, yet are comfortable and light-weight. They are well-adapted to their use in various active watersports. These are the best board shorts around: Volcom Board Shorts
Hurley Board Shorts
Quiksilver Board Shorts
Roxy Board Shorts
Billabong Board Shorts
Adidas Board Shorts
Emerica Board Shorts
Element Board Shorts
Analog Board Shorts
Alpinestars Board Shorts
Quiksilver Board Shorts
C1rca Board Shorts
DC Board Shorts
Dakine Board Shorts
Etnies Board Shorts
Independent Board Shorts
Jet Pilot Board Shorts
Kr3w Board Shorts
RVCA Board Shorts
LRG Board Shorts
Matix Board Shorts
Lost Board Shorts
Metal Mulisha Board Shorts
O'Neill Board Shorts
Boardshorts do not have an elastic waist like many swim shorts do; instead they have a more rigid waistband which opens at the front, often with a velcro fly. The waistband is also held together at the front with a lace-up tie. This double fail-safe system is in order to ensure that the shorts cannot be pulled off the body by the force of the wave when a surfer is tumbled under water during a wipeout. Another common feature of authentic surfing boardshort design is a very small pocket sealed with velcro and vented with a grommet. This is designed to be a secure place to carry a car key or house key while in the water: Volcom Boardshorts
Hurley Boardshorts
Quiksilver Boardshorts
Roxy Boardshorts
Billabong Boardshorts
Adidas Boardshorts
Emerica Boardshorts
Element Boardshorts
Analog Boardshorts
Alpinestars Boardshorts
Quiksilver Boardshorts
C1rca Boardshorts
DC Boardshorts
Dakine Boardshorts
Etnies Boardshorts
Independent Boardshorts
Jet Pilot Boardshorts
Kr3w Boardshorts
RVCA Boardshorts
LRG Boardshorts
Matix Boardshorts
Lost Boardshorts
Metal Mulisha Boardshorts
O'Neill Boardshorts
Boardshorts are normally longer than some shorts or form-fitting speedo styles of swimwear and sometimes they have a baggy appearance. Boardshorts are longer than normal shorts for one major reason: surfboards are covered with a layer of sticky wax, which allows the surfer to stand on the board without slipping off. However, this wax can rip leg hair off the surfer when he is sitting on the board waiting for waves. Long boardshorts cover the back of the leg when sitting on the board, preventing the wax from ripping at the leg hair. The length of boardshorts is also affected according to fashion trends; ranging from mid-thigh (old school) to below the knee, covering the entire knee. They often sit low in the back, exposing the top of the buttocks. Many designs use vibrant color, Hawaiian floral images and highlighted stitching; however not all boardshorts have these features: Volcom Boardshort
Hurley Boardshort
Quiksilver Boardshort
Roxy Boardshort
Billabong Boardshort
Adidas Boardshort
Emerica Boardshort
Element Boardshort
Analog Boardshort
Alpinestars Boardshort
Quiksilver Boardshort
C1rca Boardshort
DC Boardshort
Dakine Boardshort
Etnies Boardshort
Independent Boardshort
Jet Pilot Boardshort
Kr3w Boardshort
RVCA Boardshort
LRG Boardshort
Matix Boardshort
Lost Boardshort
Metal Mulisha Boardshort
O'Neill Boardshort
Although the basic design for boardshorts remains largely the same, some manufacturers have taken advantage of new technology. Because surfers and other water-sports enthusiasts commonly wear boardshorts without underwear, one of the major complaints has been about the use of velcro for the fly closure which tends to entangle pubic hair. A solution that some manufactures have come up with is to use a neoprene fly, which does not allow the fly to completely open, but provides enough stretch so that the shorts can be easily pulled on and off. Pubic hair does not get caught on the neoprene fly. To remedy another common complaint, about boardshorts stitching in the inseam area which would rub directly against the wearer's skin, many manufacturers switched to a seamless design, or use welding or glue, rather than stitches. Although it is very common for boardshorts to be worn as is, some male wearers prefer to wear boxers, a jockstrap or briefs under them. Some female wearers wear a swimsuit or bikini bottom under them. Volcom Board Short
Hurley Board Short
Quiksilver Board Short
Roxy Board Short
Billabong Board Short
Adidas Board Short
Emerica Board Short
Element Board Short
Analog Board Short
Alpinestars Board Short
Quiksilver Board Short
C1rca Board Short
DC Board Short
Dakine Board Short
Etnies Board Short
Independent Board Short
Jet Pilot Board Short
Kr3w Board Short
RVCA Board Short
LRG Board Short
Matix Board Short
Lost Board Short
Metal Mulisha Board Short
O'Neill Board Short
Here are few links to some of the more popular Volcom surf clothing products:

Volcom Shirts
Volcom Tees
Volcom Shorts
Volcom Hats
Volcom Shoes
Volcom Boardshorts
Volcom Jackets

Here are few links to some of the more popular Element apparel and clothing products:

Element Shirts
Element Tees
Element Shorts
Element Hats
Element Shoes
Element Boardshorts
Element Jackets

Here are few links to some of the more popular Ezekiel apparel and clothing products:

Ezekiel Shirts
Ezekiel Tees
Ezekiel Shorts
Ezekiel Hats
Ezekiel Shoes
Ezekiel Boardshorts
Ezekiel Jackets

Here are few links to some of the more popular RVCA apparel and clothing products:

RVCA Shirts
RVCA Tees
RVCA Shorts
RVCA Hats
RVCA Shoes
RVCA Boardshorts
RVCA Jackets

HB Surf Shop
HB Sport Apparel
OC Sport Shop
OC Sport Apparel
All Sport Apparel
All Surf clothing

 

Master Plumber Orange County Stanton

Take a moment to visit 1cecilia448 or see them on twitter at 1cecilia448 or view them on facebook at 1cecilia448.