jstewmc / get-style
获取CSS内联样式
Requires
- php: ^7.0
Requires (Dev)
- jstewmc/test-case: ^1.0
This package is auto-updated.
Last update: 2024-08-29 04:18:14 UTC
README
从PHP数组中获取层叠样式表(CSS)内联样式。
use Jstewmc\GetStyle; // define your styles $styles = [ // the asterisk is a special name for global style declarations '*' => [ 'color' => 'red', 'font-size' => 'small' ], 'foo' => [ 'color' => 'blue', 'font-size' => 'medium' ], 'bar' => [ 'color' => 'green' ] ]; // instantiate the get-style service $css = new Get($styles); // get the styles $css(); // returns "color: red; font-size: small;" $css('foo'); // returns "color: blue; font-size: medium;" $css('bar'); // returns "color: green; font-size: small;" $css('foo bar'); // returns "color: green; font-size: medium;"
这个库是一个(非常)简单的PHP层叠样式表(CSS)读取器。它不声称是一个完整的CSS解析器!已经有一些了。这个库只是从样式数组快速简单地生成内联CSS的一种方式。
名称
这个库没有CSS选择器的概念!样式名称被视为数组键。可以是任何有效的字符串。例如,p
、a.foo
、.foo
和foo
都是有效的样式名称。
请注意,星号(*
)是一个特殊的样式名称,被视为全局默认样式。如果定义了星号样式,所有样式都将从其声明开始。
声明
这个库像CSS一样合并样式声明。给定一个由空格分隔的样式名称字符串(例如,"foo bar baz"
),它将合并声明,后面的声明优先于前面的声明(即"foo < bar < baz"
)。
请注意,这个库并不智能!它需要(非常)简单的样式声明。
使用有效的声明
这个库不会验证你的声明。请确保你的CSS声明是有效的。否则,你将遇到布局问题。
避免简写声明
简写CSS声明如"margin" => "0 0 10px"
无法与其他声明智能合并。
例如
use Jstewmc\GetStyle; // this will not work! $styles1 = [ '*' => [ 'margin' => '0 0 10px' ], 'foo' => [ 'margin-top' => '15px' ] ]; // this will work! $styles2 = [ '*' => [ 'margin-top' => '0', 'margin-left' => '0', 'margin-right' => '0', 'margin-bottom' => '10px' ], 'foo' => [ 'margin-top' => '15px' ] ]; // create two css services $css1 = new Get($styles1); $css2 = new Get($styles2); $css1('foo'); // returns "margin: 0 0 10px; margin-top: 15px;" $css2('foo'); // returns "margin-top: 15px; margin-left: 0; ... "
注意引号
这个库不会引用空格分隔的样式。请确保你在声明中引用任何空格分隔的样式,如"Courier New"
。
use Jstewmc\GetStyle; // this will not work! $styles1 = [ '*' => [ 'font-family' => 'Courier New' ] ]; // this will work! $styles2 = [ '*' => [ 'font-family' => '\'Courier New\'' ] ]; // create two css services $css1 = new Get($styles1); $css2 = new Get($styles2); $css1(); // returns "font-family: Courier New;" $css2(); // returns "font-family: 'Courier New';"
请注意,如果你将CSS输出为内联样式,请确保你的CSS引号不会与HTML源代码中的引号冲突。
例如
use Jstewmc\GetStyle; $styles = [ '*' => [ 'font-family' => '"Courier New"' ] ]; $css = new Get($styles); echo '<p style="'. $css() .'">Hello world!</p>'
上面的例子将产生以下损坏的HTML
<p style="font-family: "Courier New"">Hello world!</p>
避免空格分隔的声明
即使你正确地引用了空格分隔的声明,你也可能遇到问题。
某些电子邮件客户端会强制将电子邮件的HTML正文行宽限制在80个字符或更少。源代码中的换行符被替换为空格,并在需要的位置插入换行符字符。
如果在声明名称中的空格处插入换行符,声明将损坏,相应的元素将未加样式。至少,这种行为在OSX 10上运行Apple Mail 8时得到了确认。
作者
许可
版本
1.0.0,2016年8月16日
- 主要版本
- 更新
composer.json
- 更新注释
0.1.0,2016年8月7日
- 首次发布