【发布时间】:2017-03-06 16:12:15
【问题描述】:
众所周知,内联样式不是好的做法,它们与例如不兼容。 Content Security Policy。
这是我想要在没有内联样式的情况下实现的目标:
<?php
$spacer_height = 390; // this is a dynamic value from user input could be any integer
?>
<div class="spacer" style="height:<?php echo $spacer_height; ?>"></div>
这就是我想要的:
HTML:
<?php
$spacer_height = 390; // this is a dynamic value from user input
?>
<div class="spacer spacerheight-<?php echo $spacer_height; ?>" data-height="<?php echo $spacer_height; ?>"></div>
外部样式表:
.spacer {
height: spacer_height + "px"; // this line is dummy code
}
这是一种仅使用 CSS 实现此目的的方法。没有 JavaScript。没有 Polyfill。
我已经找到的是这个 5 年前的问题:CSS values using HTML5 data attribute
但是同时有解决方案还是有不使用属性的 CSS 解决方案?至少有整数的解决方案吗?
编辑:如果没有其他解决方案,即使是有效的 polyfill 也可能是一个受欢迎的答案。
【问题讨论】:
-
也许
<?php echo "<style>". ".spacer {". "height: $spacer_height". "}". "</style>";? -
不,这是一种解决方法,以便不直接定义为内联样式,但它并不能真正解决问题;-)
-
如果你把它放在
body的末尾,它会起作用 -
这就是我提到内容安全策略的原因,它要求您在外部样式表中定义样式。 Ofc 我可以收集所有可能的间隔高度并生成一个外部样式表,但这并不是我真正想要的。我想以某种方式动态选择和应用。
-
您为什么不直接使用您已经提出的 CSS 解决方案?这就是我会做的,除了我不会打扰
data-height属性 - 在你的例子中没有做任何事情而且似乎没有必要。
标签: html css attributes