1 个不稳定版本

0.2.0 2023年6月22日
0.1.0 2023年5月26日

#3 in #stylist

MIT 许可证

5KB

use_css

除了使用 use_css! 宏,还可以直接使用 stylist 包。但你会遇到的问题是VSCode将无法提供完整的CSS代码功能集。因此,最好的解决方案是使用CSS文件。现在唯一的问题就是:如何在你的Yew项目中使用CSS代码?嗯,你需要基于这些文件生成Rust代码。为此,你可以使用这个宏。

示例

假设这是你的项目结构

│
├── frontend
│  ├── src
│  │  ├── title_bar
│  │  │  ├── mod.rs
│  │  │  └── style.css // This file has to be call like this
│  │  └── main.rs
│  ├── Cargo.toml
│  ├── Cargo.lock
│  └── index.html

其中 style.css 看起来像这样

/* The name of titlebar should be unique to this file */
titlebar {
    display: flex;

    height: 10px;
    width: 10px;
}

/* This macro also accepts `.` and `#` before the name */
/* And even type errors like shown below */

.global{
    --background-color: #000000;
    --font-color: #FFFFFF;
}
/* And we can use nested styles */
#global_document     {
    html, body {
        background-color: var(--background-color);
        color: var(--font-color);
    }
}

要在 mod.rs 中使用此样式,你可以写如下

use yew::prelude::*;
use use_css::use_css;

// The string given should be the path, starting from `scr/`, to the
// folder where the desired `style.css` can be found.
use_css!("title_bar");

// here we first apply our global styles
// and then we apply styles for actual elements
#[function_component]
pub fn TitleBar() -> Html {
    html! {
        <>
            <Global css={style::global()}/>
            <Global css={style::global_document()}/>

            <div class={style::titlebar()}>
                <span>{"Hello world"}</span>
            </div>
        </>
    }
}

依赖

~11–15MB
~274K SLoC