Styling
In the following article, we are demostrating different scenarios for setting CSS styles via classes, selectors, IDs and use cases for setting CSS via code-behind files.
Basics
The following example demonstrates, how to set up CSS
class
, id
and state selector while
using component behind via code-behind.
/* Using component Class name (e.g. stlye will be applied on all Buttons) */
Button {
background-color: red;
}
/* Using CSS class */
.testClass {
color: blue;
}
/* Using ID */
#myButton {
color: yellow;
}
/* Using pseudo-selector :pressed */
.testClass:pressed {
color: green;
}
function onPageLoaded(args) {
const page = args.object;
page.css = "Button { background-color: red; color: white; } .testClass { color: blue; } #myButton { color: yellow; } .testClass:pressed { color: green; }";
// Using the globaly defined style e.g. Button { background-color: red; }
const btn = new Button();
btn.text = "Sample button";
// Atttaching CSS class to a component
const btnWithClass = new Button();
btnWithClass.text = "Button with class";
btnWithClass.className = "testClass";
// Using component's ID to apply CSS styling
const btnStyledViaID = new Button();
btnStyledViaID.text = "Button with ID";
btnStyledViaID.id = "myButton";
}
export function onPageLoaded(args) {
const page: Page = <Page>args.object;
page.css = "Button { background-color: red; color: white; } .testClass { color: blue; } #myButton { color: yellow; } .testClass:pressed { color: green; }";
// Using the globaly defined style e.g. Button { background-color: red; }
const btn = new Button();
btn.text = "Sample button";
// Atttaching CSS class to a component
const btnWithClass = new Button();
btnWithClass.text = "Button with class";
btnWithClass.className = "testClass";
// Using component's ID to apply CSS styling
const btnStyledViaID = new Button();
btnStyledViaID.text = "Button with ID";
btnStyledViaID.id = "myButton";
}
<!-- Using nativescript-theme plugin predefined CSS classes -->
<!-- More at https://docs.nativescript.org/ui/theme -->
<Label text="Sample label" class="h2 text-left m-16" textWrap="true" />
Border Basics
CSS Property | JavaScript | Property Description |
---|---|---|
border-color | borderColor |
Sets a border color to the matched view’s. Accepts hex
color value or Color instance.
|
border-width | borderWidth | Sets a border width to the matched view’s. Accepts number value as a DIP (Device independent pixels). |
border-radius | borderRadius | Sets a border radius to the matched view’s. Accepts number value as a DIP (Device independent pixels). |
Setting border properties thought CSS class.
.border-props {
border-width: 3;
border-color: orangered;
border-radius: 20;
}
Border Code Behind
Borders can be set dynamically via code-behind implementation.
label.borderWidth = 2;
label.borderColor = new Color("orangered");
label.borderRadius = 10;
label.borderWidth = 2;
label.borderColor = new Color("orangered");
label.borderRadius = 10;
Border Radius
The border-radius
property allows us to create
rounded corners for NativeScript elements. This property can
have from one, two or four values.
Rules about applying border-radius
values:
-
Four values -
border-radius: 15 50 30 5
; First value applies to the top-left corner, second value applies to the top-right corner, third value applies to bottom-right corner, and fourth value applies to the bottom-left corner. -
Two values -
border-radius: 5 10;
First value applies to top-left and bottom-right corners, and the second value applies to top-right and bottom-left corners. -
One value -
border-radius: 10;
The value applies to all four corners, which are rounded equally.
.no-top-left {
border-radius: 0 20 20 20;
}
.no-top-left-right {
border-radius: 0 0 20 20;
}
.no-bottom-left {
border-radius: 20 20 20 0;
}
.no-bottom-left-right {
border-radius: 20 20 0 0;
}
.radius-all-corners {
border-radius: 20;
}
.no-radius-at-all {
border-radius: 0;
}
.diagonal {
border-radius: 20 0;
}
.reverse-diagonal {
border-radius: 0 20;
}
Gradients
NativeScript supports creating linear gradients via the property
linear-gradient
which can be applied to CSS
properties background-image
and
background
.
/* Setting linear gradients */
Label {
padding: 8;
color:white;
}
.bottom-gradient {
background: linear-gradient(to bottom, orangered, green, lightblue);
}
.left-gradient {
background: linear-gradient(to left, orangered, green, lightblue);
}
.right-gradient {
background: linear-gradient(to right, orangered, green, lightblue);
}
.degree-gradient {
background: linear-gradient(45deg, orangered, green, lightblue);
}
.two-color-gradient {
background: linear-gradient(-45deg, orangered, lightblue);
}
.background-image {
background-image:linear-gradient(to bottom, orangered, green, lightblue);
}