一个使用 CSS 属性的 Datasette 输出插件,极具实验性,灵感来自 Chris Coyier 的文章 Custom Properties as State。
关于此项目的更多信息:无需 JavaScript 的 CSS API:datasette-css-properties 插件
在 Datasette 所在的同一环境中安装此插件。
$ datasette install datasette-css-properties
安装后,此插件会为每个查询结果添加 .css 输出格式。这将把查询结果的第一行作为有效的 CSS 文件返回,将每一列定义为一个自定义属性。
示例:https://latest-with-plugins.datasette.io/fixtures/roadside_attractions.css 生成以下内容
:root {
  --pk: '1';
  --name: 'The Mystery Spot';
  --address: '465 Mystery Spot Road, Santa Cruz, CA 95065';
  --latitude: '37.0167';
  --longitude: '-122.0024';
}如果您将此样式表链接到您的页面,就可以执行以下操作:
景点名称
"><link rel="stylesheet" href="https://latest-with-plugins.datasette.io/fixtures/roadside_attractions.css">
<style>
.attraction-name:after { content: var(--name); }
style>
<p class="attraction-name">Attraction name: p>默认情况下,值将作为 CSS 字符串被引用。如果您想返回一个不带引号的“原始”值——例如,用于设置数值或颜色等 CSS 属性,您可以使用 ?_raw=column-name 参数指定该列名。此参数可以多次传递。
请看此示例查询
select
  '#' || substr(sha, 0, 6) as [custom-bg]
from
  commits
order by
  author_date desc
limit
  1;此查询返回最新提交的前 6 个字符,并带有 # 前缀。.css 输出渲染版本如下所示
:root {
  --custom-bg: '#97fb1';
}将 ?_raw=custom-bg 添加到 URL 会生成此内容
:root {
  --custom-bg: #97fb1;
}然后可以将其用作颜色值,如下所示
h1 {
    background-color: var(--custom-bg);
}要在本地设置此插件,首先检出代码。然后创建一个新的虚拟环境
cd datasette-css-properties
python3 -mvenv venv
source venv/bin/activate
如果您使用 pipenv,则:
pipenv shell
现在安装依赖项和测试
pip install -e '.[test]'
运行测试
pytest