| Crates.io | css-style |
| lib.rs | css-style |
| version | 0.14.1 |
| created_at | 2021-04-08 01:48:16.874231+00 |
| updated_at | 2022-06-15 18:13:47.277264+00 |
| description | Typed CSS Style |
| homepage | https://gitlab.com/MAlrusayni/css-style |
| repository | https://gitlab.com/MAlrusayni/css-style |
| max_upload_size | |
| id | 380615 |
| size | 125,203 |
This crate provides you a typed CSS style with builder-style methods. See API Docs (master)
NOTE: css-style is not (yet) production ready but is good for use in side projects and internal tools.
Length,
Px, BorderStyle::None ..etc)The goal for this crate is to provide a Style object with builder-pattern
methods to build up a CSS inline-style value, thus can be used with/by other
crates that works with styling HTML tags (such as dioxus, yew,
tinytemplate..etc).
The Style object is not intended for parsing or retrieving typed values out of
it. Consider using other crate for parsing purpose.
use css_style::{prelude::*, color, unit::{ms, px}};
let style = style()
.and_transition(|conf| {
conf
.insert("opacity", |conf| conf.duration(ms(150.)).ease())
.insert("transform", |conf| conf.duration(ms(150.)).ease())
.insert("visibility", |conf| conf.duration(ms(150.)).ease())
})
.and_position(|conf| conf.absolute())
.and_background(|conf| conf.color(color::named::WHITE))
.and_border(|conf| {
conf.none()
.width(px(0))
.radius(px(4))
})
.and_padding(|conf| conf.x(px(4)).y(px(2)))
.and_margin(|conf| conf.top(px(2)))
.insert("box-shadow", "0 2px 8px rgba(0, 35, 11, 0.15)");
println!("{}", style);
this would print:
transition: opacity 150ms ease, transform 150ms ease, visibility 150ms ease;
position: absolute;
background-color: white;
border-left-width: 0px;
border-left-style: none;
border-top-width: 0px;
border-top-style: none;
border-right-width: 0px;
border-right-style: none;
border-bottom-width: 0px;
border-bottom-style: none;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
padding-top: 2px;
padding-right: 4px;
padding-bottom: 2px;
padding-left: 4px;
margin-top: 2px;
box-shadow: 0 2px 8px rgba(0, 35, 11, 0.15);