Blacksmtih is designed to supplement your designs, allowing you to create custom stylesheets that take your site above and beyond.
Blacksmith is not a replacement for Foundry's normal modualr tools. Nor does it change how you build your site. The stylesheets you create will give you access to work on elements of your site that might be corner cases – things that some users might not have need of, or may not need often.
We highly encourage you to watch the Blacksmith Basics video to get an idea of what Blacksmith is all about and what you can do with it – and how.
NOTE. Most of the heavy lifting, and settings for Blacksmith are handled in its Stylesheet child item.
Allows you to add a custom label to the top title bar of the tool. This lets you quickly identify what purpose you're using that tool for in your layout. This title is also visible when you've collapsed or hidden the contents of the tool in Edit Mode.
If you find yourself making a lot of Blacksmith Stylesheets you'll find, because of the pure nature of Edit Mode, that they can take up a good deal of space. This feature allows you to collapse the Edit Mode view to save space when you're not actively working on your Stylesheets.
Enabling this feature adds an HTML comment to the exported code to indicate the name of the tool being used here. This is helpful to both yourself and others when troubleshooting, or inspecting the code. This is enabled by default.
This field allows you to replace the default HTML Comment with your own text.
The Stylesheet child item is where you'll build your individual styling items. It contains all of the various settings that you can a adjust to obtain the styling and functionality you need.
This label is for organization within Edit Mode. It allows you to label each stylesheet for reference. We highly encourage you to use this to keep track of what each Stylesheet is and does.
This drop down lets us choose how we'll be applying our styles to the page. The most common one is Class
which is why we've defaulted the Selector setting to it. Below you'll find a list of the available selectors.
The styles you configure in this stylesheet will be assigned to a class
name. This class name can be used within any Foundry tool by adding it to the Classes field in that tool's settings. You can add a class
to multiple items on your page, which makes classes very versatile. When enabled you'll be given a Class Name field where you can add your custom class name.
Your style settings from this stylesheet will be applied directly to the body
tag of this page. This is the overarching wrapper for the entire page's content.
We offer two image selectors for your stylesheet here. One if the Standard <img>
tag selector which will apply your stylesheet to all <img>
tags on the page. The other is the Foundry Images selector. This selector applies youe stylesheet specifically to Foundry Image tools which contain a preset class of their own.
Using this selector will apply your stylesheet settings to Foundry-based buttons that contain the .btn
class. This selector will not affect buttons that are created using a <button></button>
tag pair. If you're in need of styling a <button></button>
tag pair you can use the Custom Selector setting.
Here we offer 6 different selectors for you to choose from for Headings 1 through 6. These selectors will apply the stylesheet to your heading tags on the page. Each heading selector lists the associated heading tag next to it (h1
, h2
, h3
, etc).
This selector will apply your stylesheet settings to all paragraph <p></p>
tag pairs on the page.
When selected you'll be able to provide a Custom selector to which your Blacksmith stylehseet will be applied to. It is less common that you'll need this option, but to be thorough we've added it for those rare circumstances. When enabled you'll be given a field to enter your custom selector.
The Parent Class allows us to specific more granularly how we select an element on our page to apply the Blacksmith Stylesheet to.
For example, let's say we're using the Paragraphs option as our selector. Normally doing so would select every <p></p>
tag pair on the page. But we could narrow this down a bit by using a Parent Class.
If we put all of the Paragraphs we want to affect within say a Container tool, and add a class to its Classes setting, then we can enter that class name here in the Parent Class field. The means, that in our example, only Paragraph tags in that Container with our Parent Class would affected by our stylesheet.
Much like the Parent Class the Child Class also allows us to be more specific in how we select an element on our page to apply the Blacksmith Stylesheet to by adding a child to our selector. The essentially makes our Selector into a parent of this Child Class.
For example, let's say we're using the Class option as our selector and we've applied this Class Name to a Container. This would cause our Stvlesheet to be applied directlv to the Container. But if we provide a Child Class then our stvlesheet would then onlv be appleid to elements within that container that have been assigned our Child Class name.
A Pseudo Class is a keyword that is added to a selector that specifies a special state of the selected element. This is often used for targeting elements that have been hovered over, or selecting the first child of a matching selector, etc. Below is a list of the available pseudo classes that we can add to our selector to refine our targeting of page elements as well as defining interactions like hovers, etc.
No Pesudo Class is applied to our Selector when None is selected. This is the default option.
Applies our stylesheet settings to our selector only when that element is hovered over by the visitor.
Applys our stylesheet settings to our selector only when that element is being activated by the visitor. An example of this would be a visitor actively clicking on a link.
This Pseudo Class is used to apply our stylesheet settings to a link that has been previously visited by our visitor.
This Pseudo Class is used to apply our stylesheet settings to a link that has not yet been visited.
The Before Pseudo Class generates an element on our page that directly proceeds our Selector. This is most commonly used with the Content Stylesheet settings.
After generates an element on our page that directly follows our Selector. This too is most commonly used with the Content Stylesheet settings.
The Focus Within Pseudo Class applies your styling to an element if another element within is currently focused.
This Pseudo Class applys the stylesheet to an element that is the first of its siblings, within a parent element.
For example if you had several Cards within a Container that all shared the same Class Name as their selector, but you only want to target the first one, you could use the First Child Pseudo Class to target it.
This Pseudo Class applies the stylesheet to an element that is the first of its siblings, within a parent element that also matches the selector type.
This Pseudo Class applies the stylesheet to an element that is the last of its siblings, within a parent element.
For example if you had several Cards within a Container that all shared the same Class Name as their selector, but you only want to target the last one, you could use the Last Child Pseudo Class to target it.
This Pseudo Class applies the stylesheet to an element that is the last of its siblings, within a parent element that also matches the selector type.
This Pseudo Class applies the stylesheet to an element within a parent element that is the even numbered sibling.
This Pseudo Class applies the stylesheet to an element within a parent element that is the odd numbered sibling.
First Letter applies the Blacksmith Stylesheet to the first letter of the first line of a block-level element, but only when not preceded by other content.
A good example would be applying a drop cap on a paragraph <p></p>
tag pair.
First Line applies the Stylesheet to the first line of a block-level element.
Applies the stylesheet to ALL elements within the a parent item of this selector.
This Pseudo Class applies the stylesheet settings to an element of this selector that has been highlighted by the user (such as clicking and dragging the mouse across text).
This option gives you the ability to provide a Pseudo Class that is not predefined in this drop down.
The Media Query gives you a way to apply the Blacksmith Stylesheet only when the browser and / or device environment matches a preset rule. We use this drop down to select a Media Query that matches our needs. Media queries are a key part of responsive web design and more recently can detect environments such as whether the visitor has Dark Mode enabled or not.
This drop down allows you to apply a stylesheet via a selector to a page element only if it matches the selected Media Query.
For example if we'd like to apply a specific Background Color for instance to a selected element, but only if the visitor is using Dark Mode, then we can use the Prefers Dark Mode Media Query.
When enabled this feature will add a CSS !important
override to your stylesheet. This will tell the stylesheet to ignore previously definied CSS for this selector and use our stylesheet instead.
Some Foundry tools already use !important
overrides in their code for some styling options, so to override those with your own custom Blacksmith Stylesheets you might find you need to use this option. We want to make sure we do not over use this feature, only applying it when necessary, so try all stylesheets without this feature first.
Blacksmith's Stylesheet child item contains a large array of settings. We've broken them up into sections and given each a toggle to turn those styles on or off, in addition to the style settings themselves. We won't document the toggle for turning each item on and off but be aware that the toggle to enable each section must be on to apply those settings to your stylehseet.
For the documentation of these we've organized each of the styleheet setting groups into like groups below.
These two fields allow you to provide an aspect ratio for an element, which will maintain proportional dimensions where the height and width of a box are calculated automatically.
This aspect ratio will be used in the responsive auto sizing.
This style is used to apply filter effects to the background of an element. Here you'll find 8 different buttons to enable these various effects. You can choose any number of these filters to apply to the backdrop.
When each is enabled you'll be provided controls for adjusting to intensity or amount of filter to be applied, allowing you a great deal of control over customizing the effect.
The available backdrop filters are as follows:
Allows you to use one of Foundry's presets from the color palette or extended color palette, as well as the grey, white and dark preset values for styling the Background Color of an element. You're also provided an option to choose a custom one-off color as well.
Allows you to select from 3 different gradient modes for styling the Background Gradient of an element. You can choose from the more commong Linear gradient, or opt for a Radial or Conic gradient instead.
When Linear mode is in use you can set the angle for the gradient here. You can choose an anlge anywhere from 0° to 360°. Additionally you can use negative values, in that same range, as well.
Radial Mode offers you the ability to place the center point of the gradient in various locations. By default the gradient begins in the center of the the element and is a circular shape. You can also opt for an elipse instead of a circle. Each shape allows you a variety of positions to choose from.
When using Conic mode you can set the angle for the gradient's start point here. You can choose an anlge anywhere from 0° to 360°.
Gradients need at least two colors. In the Background Gradient style settings the two required colors are our Start & End colors. Here you'll use color pickers to set these color choices. Additionally tou can set the endstops for these colors as well.
The Start and End positions can be set at 0% to 100%, allowing you to move the color to different locations within the gradient.
In addition to the Start and End colors we offer three more optional color stops for your gradients, allowing you to build Background Gradient srtyling that uses up to 5 different color options. You can enable any number of these optional colors.
Much like the Start and End colors each of these additional colors have a color picker for selecting the color as well as a position setting for adjusting the location of that color along the gradient.
This color picker allows you to pick a solid fallback color that will be used if for some reason the visitor's browser does not support gradients. Normally this is set to match the Start or End color, depending on your design and colors.
This drop zone is where you'll provide the main, required image for your background image style. You can use the following file formats in this drop zone, as well as the Retina Image drop zone, below.
Here you can optionally add a Retina Image, in addition to the required normal Image above, for high DPI displays.
A Retina image is an image that is created specifically for Retina display, or high DPI displays, such as those found on most Mac computers and iPhones. In Retina Displays, you get double the pixels in the same amount of space as you would with a traditional display.
This lets us set the origin of the background image. You can force the image to "start" at a specific area of the background using these settings. The most common combination is Center for both settings. This is most often used when the Background Image Sizing setting is set to tile.
The Tile options allow you to choose if you'd like to have the background image repeat, and if so, in what direction(s) you'd like to to repeat.
Here you decide the mehtod that will be used when having the image cover the background of the element. You can choose from the following options.
The Cover sizing mode will adjust your image's sizing crop to make sure that it always covers your background area fully. This is the most popular and often used of these modes.
Contain mode scales the image as large as possible within its container without cropping or stretching the image.
Percantage mode scales the image using the value you provide, forcing the image to cover that amount of the background. You'll be given a Percentage value field when this option is selected.
Here you choose how you wish to apply a border to a page element. You can apply a width value uniformly to all sides, or choose detailed, allowing you to set a different width value for each side independently. We also offer an Inherit mode which keeps this style setting from overriding the width values of the element.
When using Uniform or Detailed modes you'll be provided the appropriate fields for setting the width value(s) for your borders. These values are measured in Pixels (px).
Here you choose how you wish to style the border of your page element. You can apply a border style uniformly to all sides, or choose detailed, allowing you to set a different border style for each side independently. We also offer an Inherit mode which keeps this style setting from overriding the border style of the element.
When using Uniform or Detailed modes you'll be provided the appropriate drop down menus for selecting the border style(s). The available border style modes are listed below:
You can choose how you wish to style the color of the border for your page element. You can apply a color style uniformly to all sides, or choose detailed, allowing you to set a different color style for each side independently. Both of these use color pickers for styling the border color. We also offer a Presets mode, which allows you to use one of Foundry's Preset Colors to style all four sides' color settings. We also offer an Inherit mode which keeps this style setting from overriding the border style of the element.
Allows you to choose whether you'd like to apply rounded corner settings to all four corners uniformly, or whether you wish to customize each of the four corners independently. Depending on which mode you choose you'll be provided the necessary fields to set the values for the corner radii. These values are measured in Pixels (px).
Allows you to add a drop shadow to a page element. You can create a unique shadow style, by setting its vertical and horizontal positioning, its size, spread and color. The positioning, size and spread values are measured in Pixels (px) and a color picker is used for selecting the shadow color.
You can optionally add 2 more drop shadows to your element. Additionaly shadows can often be used to creating more realistic effects or more complex styling. Each can be optionally enabled and are both styled in the same manner as the main drop shadow above by setting their vertical and horizontal positioning, size, spread and color.
The color setting allows you to adjust text color. This drop down allows you to use one of Foundry's presets from the color palette or extended color palette, as well as the grey, white and dark preset values for styling the Text Color of an element. You're also provided an option to choose a custom one-off color as well.
This property setting breaks an element's content into the specified number of columns. Use this field to set the number of wrapping columns. A good use case for this style is to apply it to a Paragraph for example.
This property replaces an element with a generated value, provided in this field. It can only be used with the pseudo-elements ::after and ::before.
Allows you to apply a specific mouse cursor style to an element. The cursor will be styled to your selection when over the selected element. Here are the available cursor options:
The CSS display property sets whether this element is treated as a block or an inline element and can also define how its child elements are treated. Display can also be used to hide elements as well.
Below is a list of the most common available Display options. Below that we will link to a site where you can research the remaining, less commonly used options for the Display property.
Turns off the display of an element so that it is both hidden and so that it has no effect on the layout.
Forces the element to be a block element, generating line breaks both before and after the element when in the normal flow of content. This is one of the most common Display properties.
This option causes the element to be an inline element that does not generate line breaks before or after itself. In normal flow, the next element will be on the same line if there is available space.
This option causes an element to act as a block element that will flow with surrounding content as if it were a single inline item.
The Fill property is geared toward shapes and text – especially SVGs – to allow you to alter the fill color of elements. This drop down allows you to use one of Foundry's presets from the color palette or extended color palette, as well as the grey, white and dark preset values for styling the Fill Color of an element. You're also provided an option to choose a custom one-off color as well.
This style is used to apply filter effects to an element drectly. Here you'll find 8 different buttons to enable these various effects. You can choose any number of these filters to apply to your element.
When each is enabled you'll be provided controls for adjusting to intensity or amount of filter to be applied, allowing you a great deal of control over customizing the effect.
The available filters are as follows:
Allows you to apply a font size to an element. This can include the child elements as well if they have not been assigned a specific font size themselves.
This drop down lets you pick the unit of measure for your font size value, above.
Provides you the ability adjust the distance between lines of text within an element. This can include the child elements as well if they have not been assigned a specific line height themselves.
Provides you the ability adjust the distance between letters within the text of an element. This can include the child elements as well if they have not been assigned a specific letter spacing themselves.
Provides you the ability adjust the distance between word within the text of an element. This can include the child elements as well if they have not been assigned a specific word spacing themselves.
Provides you the ability adjust the weight, or boldness, of text within an element. This can include the child elements as well if they have not been assigned a specific line height themselves. This setting goes from 100 to 900 in increments of 100. Standard Normal font weight is 400 and Bold font weight is generally 700.
Let's you apply a specific height to an element.
Here you can specify the unit of measure you'd like to use in defining the height of your element, above.
Here you can provide a value for adding margin to an element. As the label of this setting suggests, this is a uniform value that will be applie to all sides of the element. You can click the small + icon above this field to open the Detailed settings, allowing you to adjust the margin independently on each of the four sides of your element.
Here you will specify the unit of measure you'd like to use in defining the margin that is applied to your element, above, whether it is Uniform or Detailed.
Use this slider to adjust an element's opacity. The value can be set from 0% to 100%. This is applied to the element and all child elements contained within it.
This setting is used to set the desired behavior for an element's overflow. This affects how content within that element is treated when it would exceed the containing elements bounds. Below are the available options:
Content within this element is not clipped and may be overflow the bounds of the element.
Content within the element is clipped if necessary if it would overflow the bounds of the containing element. No scrollbars are provided, and no support for allowing the user to scroll is allowed.
Similar to the Hidden setting content within the element is clipped if necessary if it would overflow the bounds of the containing element. No scrollbars are provided, and no support for allowing the user to scroll is allowed. The difference between clip and hidden is that clip forbids all scrolling, including programmatic scrolling.
Content within the element is clipped if necessary if it would overflow the bounds of the containing element. Scrollbars are provided, and the visitor may scroll within the parent element if possible.
Content within the element is clipped if necessary if it would overflow the bounds of the containing element. Desktop browsers provide scrollbars if content overflows, and the visitor may scroll within the parent element if possible.
Acts like auto, but instead the scrollbars are drawn on top of content instead of taking up space within the element.
Here you can provide a value for adding padding to inside of the element. As the label of this setting suggests, this is a uniform value that will be applied to all sides of the element. You can click the small + icon above this field to open the Detailed settings, allowing you to adjust the padding independently on each of the four sides of your element.
Here you will specify the unit of measure you'd like to use in defining the padding that is applied to your element, above, whether it is Uniform or Detailed.
Here you are able to set how an element is positioned in a page. Some positioning modes interact with others as well. As an example, an Absolute positioned item can be contained by another element that has a Relative position applied to it. Below are the available positioning modes:
The element is positioned according to the normal flow of the document. The top, right, bottom, left, and z-index properties have no effect on this element.
The element is positioned according to the normal flow of the document. The element then has an offset applied to it relative to itself based on the values of top, right, bottom, and left settings. The offset does not affect the position of any other elements; thus, the space given for the element in the page layout is the same as if position were static.
The element is removed from the normal document flow, and no space is created for the element in the page layout. It is positioned relative to its closest positioned ancestor, if any (like a parent element with a position of Relative). Its final position is determined by the values of top, right, bottom, and left settings.
The element is removed from the normal document flow, and no space is created for the element in the page layout. It is positioned relative to the initial containing block established by the viewport, which is most often the browser window. Its final position is determined by the values of top, right, bottom, and left setting.
Here you can choose which of the positioning properties to use. You can adjust the top, bottom, left and right position values. These are applied to all but the Static mode. When one is enabled you'll be given a field to set the value for this positioning distance.
Allows you to choose the unit of measure for the top, bottom, left and right positioning values.
This setting allows you to align the text of an element to the left, center or right. We've also provided the option of justified text as well. We find this does not normally look good for websites, but have added it to allow more versatility. This can include text within the child elements as well if they have not been assigned a specific alignment themselves.
Determines where the decorative element will be applied. You can choose from Underline, Overline, Underline & Overline together, Line Through and none.
Allows you to adjust the styling of the text decoration. You can choose from one of the following: Solid line, Double line, Dotted line, Dashed line or Wavy line.
Provides the ability to adjust the thickness of the text deocration. The thickness is measured in pixels (px).
The color setting allows you to adjust text deocration color. This drop down allows you to use one of Foundry's presets from the color palette or extended color palette, as well as the grey, white and dark preset values for styling the Text Decoration of an element. You're also provided an option to choose a custom one-off color as well, which can be set using a color picker.
When enabled you're given the ability to adjust the offset distance of the Underline deocration from the text. You're also able to choose a unit of measure for this adjustment. Note that this offset is onkly applied to Underlines. Overlines and Line Throughs are not affected by this offset value as CSS does not have an adjustment for offsetting their placement.
Allows you to add a drop shadow to a page element's text. You can create a unique shadow style, by setting its vertical and horizontal positioning, its size and color. The positioning and size values are measured in Pixels (px) and a color picker is used for selecting the shadow color.
You can optionally add 2 more drop shadows to your element's text. Additionaly shadows can often be used to creating more realistic effects or more complex styling. Each can be optionally enabled and are both styled in the same manner as the main drop shadow above by setting their vertical and horizontal positioning, size and color.
This property setting specifies how to capitalize an element's text. Below are the available text transform options:
Text within this element is un-affected.
This option converts the first letter of each word to be uppercase. Other characters remain unchanged from their original capitalization.
This option converts all characters within this element to uppercase.
This option converts all characters within this element to lowercase.
The element takes on the text transform value property from its parent element.
Applies the initial (or default) value of a property to an element.
Reverts the element from its current value to the value the property would have had if no changes had been made by the current style origin.
Resets the property to its inherited value if the property that is naturally inherited from its parent element, and to its initial value if not set by parent element.
Here you'll find three possible scale settings. These allow you to scale an element relative to its natural state on the page. You can apply your scale in a uniform way, along both the x- and y-axis, or use one of the specific settings targeting one, or the other.
The scale value defaults to 1.0 which is 100% of the element's nartural size. Any thing above 1.0 will make the element larger, and anything below 1.0 will make it smaller. The lowest you can go is 0 (zero). A value of 1.20 would scale your element to be 120%, or 20% larger than its natural size. A scale value of 0.9 for example would make the element 90% of its original size, or 10% smaller.
You can use any number of these three settings in combination.
This setting allows you to reposition an element along the x-axis and / or y-axis.
Allows you to choose the unit of measure that will be applied to the distance values above.
This setting defines a transformation that rotates an element around a fixed point, without deforming it. You're able to rotate the element normally, or to single out specific axiis to rotate around. The values for these roatations can be either negative or positive and may exceed 360° or -360°.
This setting allows you to define a distance between the visitor and the plane, the perspective from which the viewer would be if the 2-dimensional interface were actually 3-dimensional. The interacts with the other transform property settings.
Controls the length of your transition. You can also think of the Duration setting as a sort of Speed setting. The larger the value here the longer the transition takes to complete, which also translates to a slower transition. A shorter value will result in a quicker transition.
Used to delay the transition. The delay period begins when the transition would normally be triggered. This setting is often used to stagger the transitions of several items.
In real life most objects don’t just start and stop instantly, and rarely move at a constant speed. The Easing setting allows us to apply some of this real world feel to transitions. We've provided several styles to help you get the feeling you are after.
Here we can specify which properties of our element that this transition will be applied to. By default the transition will be applied to all properties on our element than can have a transition applied to them. Below is a list of the available properties that we can apply tranistions to:
The Whitespace property helps control how whitespace and line breaks within an element’s text are handled.
Multiple whitespaces are collapsed into one. The text wraps to the next line when needed.
Multiple whitespaces are collapsed into one, but the text doesn’t wrap to the next line.
All the whitespaces will be kept as is and the text only wraps when line breaks are in the text content itself.
Similar to Pre option, but the text also wraps when needed.
Multiple whitespaces are collapsed into one, the text breaks to the next line when needed or with line breaks in the content.
Almost identical to Pre Wrap option with the exception that:
The element takes on the whitespace property from its parent element.
Applies the initial (or default) value of a property to an element.
Reverts the element from its current value to the value the property would have had if no changes had been made by the current style origin.
Resets the property to its inherited value if the property that is naturally inherited from its parent element, and to its initial value if not set by parent element.
Let's you apply a specific, width to an element.
Here you can specify the unit of measure you'd like to use in defining the height of your element, above.
Allows you to adjust the layering of elements using a custom z-index value. An element with z-index value is placed in front, or on top) of an element with a lower value.
This is a simple text field that allows you to leave notes to yourself for reference at a later time. This can be helpful as a reminder of why or how you did something. Do not overlook note taking with complex tasks.
These two color pickers allow you to adjust the styling of the Edit Mode view of the Stylesheet to set it apart. You can group similar stylesheets in this way, or use the Group tool to do so as well.
Hides the contents of this Stylesheet to tidy up Edit Mode. This only hides the contents on this singular Stylesheet. The Blacksmith Parent tool offers an option to hide all Stylesheets at once.