JS:改变当前页面背景色
<style>#clBox { margin: 20px auto; padding: 16px 10px 6px 10px; width: fit-content; height: fit-content; border-radius: 10px; box-shadow: 3px 6px 20px #000; }
.cCode { padding: 10px; background: #eee; }
.txtRed { color: red; }
.txtBlue { color: blue; }
.txtGreen { color: green; }
.txtMagenta { color: magenta; }
</style>
<div id="clBox" title="操作台">
<output id="bodyMsg"></output>
<p>
<button id="btnChgBg" value="#ccc">改变页面背景颜色</button>
<button id="btnRecoverBg" value="color">恢复页面背景颜色</button>
</p>
</div>
<p>改变页面背景色要从页面的 body 标签入手。body是一个大元素,页面的所有内容都以它为舞台并在其上尽情展现自我。那么,既然body是一个元素,JS就可以找到它,就和找到一个 div 一样简单:</p>
<pre class="cCode">let <span class="txtBlue">_body</span> = <span class="txtRed">document</span>.<span class="txtBlue">querySelector</span>(<span class="txtMagenta">'body'</span>);<br><span class="txtGreen">/* console.log(_body); */</span></pre>
<p><span class="txtBlue">_body</span> 是我们命名的变量,用以代表页面的 body 标签,也就是body元素。接着,我们从 <span class="txtRed">document</span> 对象即文档对象通过 <span class="txtBlue">querySelector</span> 方法查询名为 <span class="txtMagenta">'body'</span> 的选择器(也就是标签名为 body 的元素),并将获得的值交给我们定义的变量 <span class="txtBlue">_body</span>。为了验证是否真的找到,可以使用 console.log(_body); 指令在控制台查看效果。需要注意的是,querySelector 方法获得的标签(元素)是同名标签(元素)中的第一个。</p>
<p>找到了操作对象,下一步就是操作它。我们的任务是改变当前页面的背景色,这需要用到元素的 <span class="txtRed">style</span> 属性,该属性的 <span class="txtRed">background-color</span> 属性就是背景颜色,JS写作 <span class="txtBlue">元素</span>.<span class="txtRed">style</span>.<span class="txtRed">backgroundColor</span> :</p>
<pre class="cCode"><span class="txtBlue">_body</span>.<span class="txtRed">style</span>.<span class="txtRed">backgroundColor</span> = <span class="txtMagenta">'#ccc'</span>;</pre>
<p>就酱简单!</p>
<p>当然,上方的控制台不仅可以设置当前页面的背景色,还能恢复初始背景色,如此可以确保我们的实验是无害的。这需要在改变背景色之前,先获得当前页面的背景色并保存下来,然后交由恢复按钮去操作。获得某一个元素的指定属性值,我们需要用到JS的一个 API :window.getComputedStyle(),这将会拿到元素的CSS属性的对象集合,再通过 getPropertyValue() 取其 background-color 属性值即可。详情请查看稍后公布的操作台源码。</p>
<script>
let _body = document.querySelector('body');
let _bgColor = window.getComputedStyle(_body,null).getPropertyValue('background-color');
bodyMsg.textContent = '当前页面背景色: ' + _bgColor;
btnChgBg.onclick = () => _body.style.backgroundColor = btnChgBg.value;
btnRecoverBg.onclick = () => _body.style.backgroundColor = _bgColor;
</script>
本帖最后由 马黑黑 于 2024-1-8 10:54 编辑
一楼操作台代码:
<style>
#clBox { margin: auto; padding: 16px 10px 6px 10px; width: fit-content; height: fit-content; border-radius: 10px; box-shadow: 3px 6px 20px #000; }
</style>
<div id="clBox" title="操作台">
<output id="bodyMsg"></output>
<p>
<button id="btnChgBg" value="#ccc">改变页面背景颜色</button>
<button id="btnRecoverBg" value="color">恢复页面背景颜色</button>
</p>
</div>
<script>
let _body = document.querySelector('body');
let _bgColor = window.getComputedStyle(_body,null).getPropertyValue('background-color');
bodyMsg.textContent = '当前页面背景色: ' + _bgColor;
btnChgBg.onclick = () => _body.style.backgroundColor = btnChgBg.value;
btnRecoverBg.onclick = () => _body.style.backgroundColor = _bgColor;
</script>
对学习研究js有意义,但对做帖子就是意义不大了,因为帖子都是包裹在其它的容器 tag 里的,帖子背景一般不会有影响。 吃瓜的来围观,看哪个乖徒儿先出效果图{:4_189:} 起个网名好难 发表于 2024-1-8 12:19
对学习研究js有意义,但对做帖子就是意义不大了,因为帖子都是包裹在其它的容器 tag 里的,帖子背景一般不 ...
这是拿到元素、操作元素的范例,不一定是要做帖子。况且,做交互性的帖子,是需要有这个能力的 樵歌 发表于 2024-1-8 12:38
吃瓜的来围观,看哪个乖徒儿先出效果图
{:4_190:} 点过,真的变了{:4_204:} 马黑黑 发表于 2024-1-8 13:28
这是拿到元素、操作元素的范例,不一定是要做帖子。况且,做交互性的帖子,是需要有这个能力的
是的,如果是做个项目要统一页面风格,在style节里设置一些body就好。 起个网名好难 发表于 2024-1-8 17:51
是的,如果是做个项目要统一页面风格,在style节里设置一些body就好。
这里只是呈现以下操作DOM的方法 侃大山 发表于 2024-1-8 14:13
点过,真的变了
{:4_181:} 马黑黑 发表于 2024-1-8 17:55
这里只是呈现以下操作DOM的方法
相对来说body太大了,以div为例就蛮好的如#papa{:5_106:} 起个网名好难 发表于 2024-1-8 17:57
相对来说body太大了,以div为例就蛮好的如#papa
从大的开始下手 这个body元素太厉害了,操作它就能操作整个页面啊{:4_204:} 马黑黑 发表于 2024-1-8 13:28
看到变色了{:4_174:} 樵歌 发表于 2024-1-8 19:41
看到变色了
{:4_190:} 红影 发表于 2024-1-8 19:31
这个body元素太厉害了,操作它就能操作整个页面啊
从结构看,body是页面众元素之父,一切都在它那里安排落脚点 俺飘过{:6_239:} 千羽 发表于 2024-1-8 20:18
俺飘过
喝水{:4_190:} 马黑黑 发表于 2024-1-8 19:56
从结构看,body是页面众元素之父,一切都在它那里安排落脚点
元素之父发令,其他的小字辈都必须遵守{:4_173:} 红影 发表于 2024-1-8 21:45
元素之父发令,其他的小字辈都必须遵守
它只是提供一个场景
页:
[1]
2