JavaScript给网页元素加上边框不改变原来的布局

1.这里我以百度首页为例:

加边框的操作很简单,比如我想将<ul>元素下面的<li>元素都加上3px的虚线红色边框,首先通过getElementsByClassName找到<ul>元素,遍历子元素,给border赋值就可以了。

1 function drawborder() {
2     var element_ul= document.getElementsByClassName("s-hotsearch-content")[0];
3         var element_lis = element_ul.childNodes;
4         for (i = 0; i < element_lis.length; i++) {
5             element_lis[i].style.border = "3px dotted red";
6         }
7     }
8 drawborder();

执行看一下效果:

但是意外发生了,我们可以看到网页的布局发生了变化,分析网页可以看到原因:是由于没有改变<li>元素的margin值导致的。

2.很简单,我们同步修改一下加边框之后的margin值;将li元素的marginRight /marginLeft /marginTop/marginBottom 都相应的减3px;

复制代码
 1 function drawborder() {
 2     var element_ul= document.getElementsByClassName("s-hotsearch-content")[0];
 3         var element_lis = element_ul.childNodes;
 4         for (i = 0; i < element_lis.length; i++) {
 5             var s1 = window.getComputedStyle(element_lis[i]);
 6             element_lis[i].style.marginRight = (parseInt(s1.marginRight) - 3) + "px";
 7             element_lis[i].style.marginLeft = (parseInt(s1.marginLeft) - 3) + "px";
 8             element_lis[i].style.marginTop = (parseInt(s1.marginTop) - 3) + "px";
 9             element_lis[i].style.marginBottom = (parseInt(s1.marginBottom) - 3) + "px";
10             element_lis[i].style.border = "3px dotted red";
11         }
12     }
13 drawborder();
复制代码

好了,我们再来看一下效果:

 

可以看到页面的布局丝毫没有受到影响。

 

posted @   新*  阅读(509)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示