如何通过按钮更改 Django 模板使用的 CSS?

Posted

技术标签:

【中文标题】如何通过按钮更改 Django 模板使用的 CSS?【英文标题】:How to change CSS that Django template uses with a button? 【发布时间】:2021-06-23 17:33:53 【问题描述】:

我正在尝试在我的页面上实现可访问性选项,该选项会在单击可访问性按钮时将 CSS 更改为不同的文件。

目前,我的所有模板都扩展了 base_generic.html,其中 style.css 已加载。单击可访问性按钮时,我希望它更改为对该用户使用 style_access.css。我怎样才能做到这一点?

【问题讨论】:

您想为授权/非授权用户应用不同的样式吗?请描述导致您产生此解决方案概念的原始任务/意图。 【参考方案1】:

我认为一种方法可以是,在 HTML 模板中引用这两个 CSS 文件,并使用带有 javascript 和 jquery 的 onclick 函数来更改模板特定元素的 id 或类。

例如,

假设我想通过 onclick 更改元素的 CSS,我可以创建一个计数器并在我将在我的 CSS 文件中引用的两个 id 之间切换。

<body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
</script>
<button>This is a div</button>
<h1 class="potatoe" id="hello">HELLO THIS IS TEXT</h1>


<style>
  #hello  color: red; 
  #bye  color: blue; 
</style> 

<script>


var clickCount = 0;

$("button").on("click", function() 
    clickCount++;
    $(".potatoe").attr("id", clickCount % 2 === 0 ? "bye" : "hello");
);


</script>


</body>

您会看到每次单击按钮时元素的 CSS 都会发生变化

这不会在 CSS 文件之间完全改变,但它最终会改变您要选择的元素的 CSS。

【讨论】:

【参考方案2】:

您可以使用 JavaScript 更轻松地实现:

const toggleButton = document.getElementById('button');
const workContainer = document.getElementById('work');
 
toggleButton.addEventListener('click', () => 
    document.body.classList.toggle('blue'); 
    toggleButton.classList.toggle('active');
    workContainer.classList.toggle('blue');
 
    if(document.body.classList.contains('blue')) 
        localStorage.setItem('blue', 'enabled');
    else
        localStorage.setItem('blue', 'disabled'); 
    
);
 
if(localStorage.getItem('blue') == 'enabled')
    document.body.classList.toggle('blue');
    toggleButton.classList.toggle('active');
    workContainer.classList.toggle('blue');

【讨论】:

以上是关于如何通过按钮更改 Django 模板使用的 CSS?的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 django 中使用“静态”模板导入 css 文件

如何在 javascript 代码中更改 django 模板变量值?

css中的django变量-我可以使用模板吗

Django 模板 - 更改“包含”模板的上下文

如何更改移动视图菜单中最后一个按钮的文本颜色?

Django 模板中的动态分页