本文概述
- 1.将关联数组转换为css字符串的函数
- 2.用法
在本文中, 我们将向你展示如何轻松地从关联数组生成CSS字符串。
1.将关联数组转换为css字符串的函数【如何将嵌套的PHP数组转换为CSS,SASS,LESS规则(字符串)】要将数组转换为PHP中的CSS字符串(在SASS或LESS情况下, 使用规则或简单变量), 我们将使用以下函数:
<
?php/** * Recursive function that generates from a a multidimensional array of CSS rules, a valid CSS string. * * @param array $rules *An array of CSS rules in the form of: *array('selector'=>
array('property' =>
'value')). Also supports selector *nesting, e.g., *array('selector' =>
array('selector'=>
array('property' =>
'value'))). * * @return string A CSS string of rules. This is not wrapped in <
style>
tags. * @source http://matthewgrasmick.com/article/convert-nested-php-array-css-string */function css_array_to_css($rules, $indent = 0) {$css = '';
$prefix = str_repeat('', $indent);
foreach ($rules as $key =>
$value) {if (is_array($value)) {$selector = $key;
$properties = $value;
$css .= $prefix . "$selector {\n";
$css .= $prefix . css_array_to_css($properties, $indent + 1);
$css .= $prefix . "}\n";
} else {$property = $key;
$css .= $prefix . "$property: $value;
\n";
}}return $css;
}
该函数基本上期望将包含规则或CSS简单属性的数组作为第一个参数, 其中每个非数组的key => value将表示为key:value; (如果key的值是一个数组) , 假设该函数包含更多css属性, 则将引入css规则, 以此类推, 因为该函数是递归的。
此功能不属于Our Code World, 而是属于Grasmash的原始文章(Matthew Grasmick)。
2.用法如功能说明中所述, 它从具有指定规则的数组中返回CSS字符串。只要数组的结构有效, 该函数就可以对普通CSS规则, 媒体查询, SASS和LESS正常工作。例如:
的CSS
要生成基本的CSS规则, 只需声明一个数组, 其中每个键是一个类选择器, 并且其值是包含规则的数组:
<
?php $stylesheet = array("body" =>
array("margin" =>
"0", "font-size" =>
"1rem", "font-weight" =>
400, "line-height" =>
1.5, "color" =>
"#212529", "text-align" =>
"left", "background-color" =>
"#fff"), ".form-control" =>
array("display" =>
"block", "width" =>
"100%!important", "font-size" =>
"1em", "background-color" =>
"#fff", "border-radius" =>
".25rem"));
echo css_array_to_css($stylesheet);
上一个代码片段将输出以下CSS规则:
body {margin: 0;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}.form-control {display: block;
width: 100%!important;
font-size: 1em;
background-color: #fff;
border-radius: .25rem;
}
SASS / SCSS
由于采用了递归实现, 你将能够在一个规则内嵌套多个规则, 这也使你能够为SASS生成有效的语法:
<
?php $sass = array("nav" =>
array("ul" =>
array("margin" =>
0, "padding" =>
0, "list-style" =>
"none"), "li" =>
array("display" =>
"inline-block"), "a" =>
array("display" =>
"block", "padding" =>
"6px 12px", "text-decoration" =>
"none")));
echo css_array_to_css($sass);
上一个代码片段将输出以下SASS代码:
nav {ul {margin: 0;
padding: 0;
list-style: none;
}li {display: inline-block;
}a {display: block;
padding: 6px 12px;
text-decoration: none;
}}
减
以与SASS相同的方式, 你还可以使用LESS编写甚至复杂的规则:
<
?php $less = array("@nice-blue" =>
"#5B83AD", "@light-blue" =>
"@nice-blue + #111", "#header" =>
array("color" =>
"@light-blue"), ".component" =>
array("width" =>
"300px", "@media (min-width: 768px)" =>
array("width" =>
"600px", "@media (min-resolution: 192dpi)" =>
array("background-image" =>
"url(/img/retina2x.png)")), "@media (min-width: 1280px)" =>
array("width" =>
"800px")));
echo css_array_to_css($less);
上一个代码片段将输出以下LESS代码:
@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;
#header {color: @light-blue;
}.component {width: 300px;
@media (min-width: 768px) {width: 600px;
@media (min-resolution: 192dpi) {background-image: url(/img/retina2x.png);
}}@media (min-width: 1280px) {width: 800px;
}}
编码愉快!
推荐阅读
- 如何通过PHP中的十六进制代码检索颜色的人名
- 如何在PHP中将日期时间四舍五入到最接近的10或5分钟
- 使用PHP将字节转换为人类可读的值(KB,MB,GB,TB,PB,EB,ZB,YB)
- 如何在Linux中获取和显示目录大小
- php|PHP对数据库的增删改查
- Android蓝牙BLE我可以修改哪些连接的配置参数
- Android bluetoothSocket连接错误
- 使用android-beacon-library检测蓝牙设备
- 目前连接的蓝牙设备android