我有一個通過jinja2/flask呈現(xiàn)的簡單HTML頁面(main.html)。
main.html
{% extends 'layout.html' %}
{% include 'content1.html' %}
{% include 'widget1.html' %}
{% include 'widget2.html' %}
layout.html包括一些CSS(引導(dǎo)),JS和一些HTML(標題/菜單)的所有頁面。
我希望在這個html頁面中簡單地包含一些內(nèi)容模板和一些“小部件”。小部件更復(fù)雜,因為它們包含自己的JS和CSS(引導(dǎo))...這造成了麻煩,因為widget1.html的CSS覆蓋了main.html的CSS(考慮到包含在內(nèi),這并不意外)。
有沒有什么方法可以“包含”widget1.html,而不需要CSS/JS返回到父頁面(main.html)?
我寧愿不必重構(gòu)widget1.html,因為它是一個外部應(yīng)用程序。這里有簡單的解決方法嗎?
提前感謝!
看這個回答:如何將一個div從公共CSS樣式中隔離出來?
您可以創(chuàng)建一個包裝類。隔離,并按如下方式使用它:
p {
color: blue;
}
.isolate * {
all: unset;
}
.example {
border: 1px solid;
padding: 1em;
}
<p>By default all text is blue.</p>
<div class="isolate example">
<p>Within the "isolate" div, that CSS is removed</p>
</div>
<p>Outside of the div, default rules apply once again.</p>
我在這里也有同樣的問題。甚至改變了。css,沒有重新加載,因為瀏覽器正在緩存信息。我發(fā)現(xiàn)了一個非常簡單的方法。
我解決這個問題的方法是從時間模塊中導(dǎo)入ctime,如下所示:
從時間導(dǎo)入ctime
然后,我將ctime()函數(shù)歸因于我的flask路徑中的時間。像這樣:
#
#@app.route('/home')
## def homepage():
## return render_template('home.html' , time = ctime())
然后,在我的html href中,我這樣做了:
## <link rel="stylesheet" href="{{ url_for('static', filename='css/base.css')}}?{{time}}">
在引用路徑的末尾添加?{{time}}這樣,時間信息將 每秒更新一次,瀏覽器不會識別css并緩存它,因為瀏覽器會將新信息與以前的信息進行比較。
有了這個,你就成了你的實時css。
希望這有所幫助。
干杯!
內(nèi)利奧
我知道這是一個老話題,但是我在尋找解決一個類似問題的過程中反復(fù)遇到這個問題。最后,我使用srcdoc屬性將內(nèi)容包裝在iframe中??雌饋硎沁@樣的:
<tr class="collapse" id="emailHTMLBody-{{ index }}">
<td colspan="7">
<div class="email-body-container">
<iframe srcdoc="{{ email.body_content }}"></iframe>
</div>
</td>
</tr>
我希望這能幫助下一個偶然發(fā)現(xiàn)這個問題的人。