前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >前端编程-拷贝css样式到内联样式

前端编程-拷贝css样式到内联样式

原创
作者头像
MiaoGIS
修改2021-12-03 14:41:03
修改2021-12-03 14:41:03
1.3K00
代码可运行
举报
文章被收录于专栏:Python in AI-IOTPython in AI-IOT
运行总次数:0
代码可运行

网页中,文档结构是由HTML定义的,文档外观是由css(样式文件)定义的。通常css样式可以写在外部单独的css文件中,然后通过<link>元素引入,也可以写在<head>标签的子节点<style>元素中,也可以直接写在DOM元素style属性里(内联样式)。

1.使用css文件的样式定义

2.使用<style>来定义

3.使用内联样式

对于重用的样式最好写在单独的css文件中,比如前端框架,无论是bootstrap还是layui,都用自己单独的css文件来定义通用的元素样式。

对于单独本页面个性化的样式,如果较多也可以定义在单独的css文件中,较少可以写在本页面的<style>元素中,如果需要定义的样式属性不多,也可以写在DOM元素的style属性中。

我们有时在页面中会遇到将table导出为Excel表,或者页面某区域导出为word文档。具体实现可以由前端js库实现,或者后台实现。如果使用外部css文件,或者<style>元素定义,可能会出现导出时丢失样式的情况。这种情况下,我们最好使用内联样式。

但是为需要样式的每个DOM元素定义内联样式有些麻烦。这时候我们可以使用js将外部css文件或<style>元素里的样式拷贝到对应的DOM元素的style属性里。思路为用正则表达式处理css文件或<style>元素里的文本,根据样式选择器选择页面中对应的DOM元素,然后把对应文本区域里的样式属性赋值给对应DOM元素的style属性。

下面简单演示实现原理(只支持class选择器,并且css样式定义时没有使用“,”逗号来同时定义多个选择器的样式)

代码语言:javascript
代码运行次数:0
运行
复制
 
            $('body').find('[class]').each((i, x) => {

                var classes = $(x).attr('class').trim().split(' ');
            
                classes.forEach(class0 => {
                   
                    var styleText=$('style').html();//每次都定义,定义到全局会报错
                       var matches = styleText.match(RegExp('\\.' + class0.trim() + '\\s*{([^}]*)}'))
                    if (!!matches) {
                        var styleText = matches[1].replaceAll('\n', '');
                        var oldStyle = $(x).attr('style');
                        if (!oldStyle) {
                            oldStyle = '';
                        }
                        $(x).attr('style', oldStyle + styleText);
                    }  
                    
                   
                })
          })
            

效果如下:

执行拷贝css到内联样式js前,DOM元素没有style属性。

执行拷贝css到内联样式js后,DOM元素拷贝了对应的样式到style属性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档