gpt4 book ai didi

css - 如何使用内联 <style> 标签在 Phoenix EEx 模板中包含 CSS

转载 作者:行者123 更新时间:2023-11-28 08:51:11 24 4
gpt4 key购买 nike

我正在尝试在 Phoenix 模板 (EEx) 中包含 CSS,以便我可以定义组件(在服务器上呈现),这些组件不仅包含 HTML,还包含它们自己的 CSS。为此,我想在该模板(组件)的 CSS 中包含一个标签,希望它能被注入(inject)到 <head> 中。但事实并非如此。我有一些经验,但无法实现(当我这样做时很奇怪,我的网页没有中断,我可以在 <head> 中看到 <style><body> 标签)。 sample templateXYZ.html.eex代码可以是:

<style>
.main {color: red;}
</style>

<div class="main">

<!-- Html code goes here -->

</div>

请注意,这样做的主要目标是允许我在一个模板中编写所有“组件”代码(Html、CSS 和 Javascript - 后者没有问题,所以我在示例/问题中省略了它)在某种程度上,我只需要将模板放在其他模板中的适当位置(在另一个模板中呈现模板也不是问题)并且什么都不做(就像当我有一个单独的 CSS 文件并需要导入时一样)它在 <head> 中)。

作为比较,我可以在客户端使用原始 Javascript 执行我想做的事情,将我的 <style>和 DOM 中的 HTML,如下所示:

function f_auxButton(imgpath,id){
if (document.getElementById('auxButtonId')){} // <style> is only created on first component instanciation to avoid duplication
else {
$('<style id="auxButtonId">\
.auxButton {\
width: 25px;\
height: 25px;\
margin: 10px;\
}\
<\style>').appendTo("head")}

return '<img src="'+imgpath+'" class="auxButton" id="'+id+'">'

然后我只需要调用<script>f_auxButton(arg1,arg2)</script>我想放置 HMTL 的位置并得到它(加上 <style> 中的 <head> 标签。

那么,有没有办法做到这一点?

最佳答案

app.html.eex

<!doctype html>
<html>
<head>
<title></title>
<%= render_existing view_module(@conn), "_styles.html", assigns %>
</head>
<body>
<div class="main">
<%= render_existing view_module(@conn), "_component.html", assigns %>
</div>
</body>
</html>

/web/templates/shared/_components.html.eex

<%= render MyApp.PageView, "_styles.html" %>
<img src="<%= static_path(MyApp.Endpoint, "/path/example.png")%>", class="auxButton">

/web/templates/page/_styles.html.eex

<style>
.auxButton {width: 25px;height: 25px;margin: 10px;}
</style>

最终结果

<!doctype html>
<html>
<head>
<title>My App</title>
<style>
.auxButton {width: 25px;height: 25px;margin: 10px;}
</style>
</head>
<body>
<div class="main">
<img src="/path/example.png" class="auxButton">
</div>
</body>
</html>

关于css - 如何使用内联 &lt;style&gt; 标签在 Phoenix EEx 模板中包含 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com