link和@import的区别

link标签和@import都是为了引入css样式

不同之处:

-- 从属关系:

link: 是html标签,能够支持rel等各种属性

@import: 是css提供的语法,只有导入样式表的作用

-- 兼容

link: 不存在兼容问题

@import: 不兼容IE5以下

-- 加载

link: 与页面同时加载

@import: 页面加载完毕后加载

-- 可控制性

link:是DOM结构,可以通过操作DOM来进行操作

@import:  无法直接操作

 

例子:

使用link便签来控制全局样式

 创建两个css文件
 // redBackground.css
 .home {
   background-color: red;
} // greenBackground.css .home { background-color: green; }

使用js控制全局样式

 1 function addCss(href) {
 2     const link = document.createElment(‘link’)
 3     // 添加link属性
 4     link.setAttribute('rel', 'stylesheet')
 5     link.setAttribute('type', 'text/css')
 6     link.setAttribute('href', href)
 7     // 在head标签中添加link标签
 8     document.getElementsByTagName('head')[0].appendChild(link)
 9 }
10 
11 // 如传入redBackground.css的路径
12 
13 addCss(http://xxx.xxx.xxx.xxx/css/redBackground.css)

重复执行该方法的话,会添加多个link标签,增加渲染,所以添加删除方法

 1 function removeCss (href) {
 2   // 获取所有的link标签   
 3   const links = document.getElementsByTagName('link')
 4   for (let i = links.length; i >= 0; i--) {
 5     const link = links[i]
 6     if (link && link.getAttribute('href') && link.getAttribute('href') === href) {
 7       link.parentNode.removeChild(link)
 8     }
 9   }
10 }

 

posted @ 2020-05-13 17:58  志在指尖  阅读(197)  评论(0编辑  收藏  举报