使用javascript将纯文本转换为css值
我正在制作一个样式指南,我已经禁用了预标记中的css,我正试图将其作为有效的css应用到上面的示例框中 标记更容易理解(请不要介意奇怪的缩进,这样做是为了简化呈现。另外,“defaut”是法语中“default”的意思):使用javascript将纯文本转换为css值,javascript,jquery,html,css,regex,Javascript,Jquery,Html,Css,Regex,我正在制作一个样式指南,我已经禁用了预标记中的css,我正试图将其作为有效的css应用到上面的示例框中 标记更容易理解(请不要介意奇怪的缩进,这样做是为了简化呈现。另外,“defaut”是法语中“default”的意思): 除了确保目标divs不是空的或有一定高度外,您还需要: 替换前缀并修剪文本内容,以去除尾随空格/分隔符,同时去除最后一个: $this .next('pre') .children('code') .text().match(/@defaut:\s*(
除了确保目标
div
s不是空的或有一定高度外,您还需要:
替换前缀并修剪文本内容,以去除尾随空格/分隔符,同时去除最后一个代码>:
$this
.next('pre')
.children('code')
.text().match(/@defaut:\s*(#.+?);/)[1]
或在:
上拆分,并放置在结果数组的第二个元素上:
演示:
$('.colored')。每个(函数(){
变量$this=$(this),
prop=$this.next().find('code').text().replace('@defaut:','').trim().slice(0,-1)
;
$this.css({'background-color':prop});
});代码>
div.colored{height:16px;}
弗斯特
@德法特:#f00;
第二
@德法特:#0f0;
第三
@德法特:#00f;
除了确保您的目标
div
不是空的或有一定的高度外,您还需要:
替换前缀并修剪文本内容,以去除尾随空格/分隔符,同时去除最后一个代码>:
$this
.next('pre')
.children('code')
.text().match(/@defaut:\s*(#.+?);/)[1]
或在:
上拆分,并放置在结果数组的第二个元素上:
演示:
$('.colored')。每个(函数(){
变量$this=$(this),
prop=$this.next().find('code').text().replace('@defaut:','').trim().slice(0,-1)
;
$this.css({'background-color':prop});
});代码>
div.colored{height:16px;}
弗斯特
@德法特:#f00;
第二
@德法特:#0f0;
第三
@德法特:#00f;
您可以尝试使用冒号分割文本,并获取由此产生的第二个值,然后删除分号:
您可以尝试使用冒号拆分文本并获取由此产生的第二个值,然后删除分号:
正则表达式有两个问题:
标记和code
之间有一条换行符,@defaut
将不匹配该换行符。发件人: (小数点)匹配除换行符以外的任何单个字符 使用trim()
- 正则表达式不能用引号括起来,否则将被视为正则字符串。使用
replace(/^(.*\\\\\\\\\\\\\\)/)
此正则表达式将查找“@defaut:”后面可能跟有空格,然后跟有以分号结尾的颜色值,并提取颜色值。另一个好处是,如果您必须在
标记中添加更多数据或更改格式,则此解决方案不会轻易中断。正则表达式存在两个问题:
code
标记和@defaut
之间有一条换行符,
将不匹配该换行符。发件人:
(小数点)匹配除换行符以外的任何单个字符
使用trim()
- 正则表达式不能用引号括起来,否则将被视为正则字符串。使用
replace(/^(.*\\\\\\\\\\\\\\)/)
作为进一步说明,最好通过提取颜色值来获取颜色值,而不是删除周围的所有内容:
此正则表达式将查找“@defaut:”后面可能跟有空格,然后跟有以分号结尾的颜色值,并提取颜色值。一个附加的提示是,如果您必须在标记中添加更多数据或更改格式,此解决方案将不会轻易中断。您是否看到default
拼写错误?对不起,它实际上是法语中“default”的意思。因此,在本例中拼写正确,因为该语言是有意使用的。也许翻译是合适的,那好吧。为什么不把文本剪下来,在:
字符上拆分,这样你就知道[0]是属性(如果它以@开头,你很容易知道它是一个特殊的属性),并使用[1]作为值?所以$(this).css($(this.background'),$(this.next().children('code').text().split(':')[1].trim())
该方法也使以后的应用变得更容易,因为如果定义了[0]或其他东西,您可以使用[0]作为属性…@something谢谢,但它不起作用,jquery不会生成任何背景属性。这应该是因为分号仍然存在,我应该删除它,并且seeDid您看到的default
拼写错误?对不起,它实际上是法语中“default”的意思。因此,在本例中拼写正确,因为该语言是有意使用的。也许翻译是合适的,那好吧。为什么不把文本剪下来,在:
字符上拆分,这样你就知道[0]是属性(如果它以@开头,你很容易知道它是一个特殊的属性),并使用[1]作为值?所以$(this).css($(this).next().children('code').text().split(':')[1].trim())
该方法也使以后的应用更容易,因为如果定义了[0]或其他什么东西,您可以使用[0]作为属性…@something谢谢,但它不起作用,jquery不会生成任何正确的背景
$this.next().find('code').text().replace('@defaut: ', '').trim().slice(0, -1)
$this.next().find('code').text().split(':')[1].trim().slice(0, -1)
$(this).css(
'background',
$(this).next().text()
.split(':')[1]
.trim()
.replace(';','')
);
$this
.next('pre')
.children('code')
.text().match(/@defaut:\s*(#.+?);/)[1]