位置: 编程技术 - 正文

使用JavaScript创建新样式表和新样式规则(创建javascript函数)

编辑:rootadmin

推荐整理分享使用JavaScript创建新样式表和新样式规则(创建javascript函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript create,创建javascript函数,javascript用于搭建,javascript编写,javascript编写,javascript用于搭建,javascript创建对象及应用,javascript create,内容如对您有帮助,希望把文章链接给更多的朋友!

如今的这个年代,流行在Web页面上使用了大量的JavaScript,我们需要寻找各种方式来优化它们,使它们更快。我们使用事件委托来让事件监听器更有效率,使用降频技术来限定某些方法的使用次数,使用各种JavaScript加载器来动态加载我们需要的资源,等等。另外一种让页面更高效、更敏捷的方法是动态的添加或移除样式表里的样式,而不需要去查询DOM元素,对每个元素做样式调整。下面我们就来看看如何使用这种技术!

捕获样式表

你的页面上可能引用了不只一个的样式文件,你可以选择其中的一个。如果你指定了某个,你可以在HTML页面中的LINK 和 STYLE标签上加入ID来进行区别,获取CSSStyleSheet对象,它存放在document.styleSheets对象里。

一个重要的需要注意的事情是样式表的media属性——如果你不小心,当想往屏幕显示使用的样式表里做修改操作时,你也许会错误的修改了用于打印(print)时使用的样式表。CSSStyleSheet对象里有各种属性信息,需要时你可以从中获取。

有很多方法都可以让你捕获一个样式表,往里面添加新样式规则。

创建一个新的样式表

大多数时候,最好的方法是创建一个新的STYLE元素,动态的往里面添加规则。非常简单:

不幸的是,WebKit类型的浏览器需求做一点点小修改,才能让上面的代码正确的运行,但不管怎样,我们获得了想要的sheet。

添加样式规则 ? 标准的addRule方法

CSSStyleSheet对象里有一个addRule方法,它可以接受3个参数:选择器、样式规则的CSS代码和一个整数,这个整数用来指示样式表的位置(相对于同样的选择器):

使用JavaScript创建新样式表和新样式规则(创建javascript函数)

sheet.addRule("#myList li", "float: left; background: red !important;", 1);位置缺省值为-1,表示放在最后。为了进行额外的控制,或偷懒的写法,你可以在规则里添加!important来消除位置引起的问题。调用addRule会返回-1——它什么都不表示。

你会发现,这种技术的优势在于,它可以动态的往页面上添加样式规则,并应用它们;你不必对每个元素进行操作,浏览器会自动应用这些规则。高效吧!

新增样式规则

CSSStyleSheet对象里还有一个insertRule方法,但在早期的IE里是没有这个方法的。insertRule方法把addRule方法的前两个参数混合到了一起:

sheet.insertRule("header { float: left; opacity: 0.8; }", 1);这个方法看起来很丑陋,但无疑也是非常有用的。

安全的应用样式规则

因为并不是所有的浏览器都支持insertRule,最好我们做一些封装来确保代码的有效执行。下面就是一个很简单的封装方法:

这个方法可以应对各种情况。如果你想把这个方法里的代码单独拿出来使用,最好用try{}catch(e){}把它们包起来。

为媒体查询(Media Queries)增加样式规则

有两个方法可以为特定的媒体查询增加样式规则。第一种是通过标准的insertRule方法:

sheet.insertRule("@media only screen and (max-width : px) { header { display: none; } }");因为老式的IE不支持insertRule,我们可以使用另外一种方法,就是创建一个STYLE元素,赋予它正确的media属性,然后往里面添加新的样式规则。这种方式会增加额外的STYLE元素,但十分的简单。

我认为动态的往样式表里添加样式规则是一种十分高效而且简单的技术。记住在你的下一个应用里试一下这种技术,它会省了你很多功夫。

(英文:Add Rules to Stylesheets with JavaScript.)

标签: 创建javascript函数

本文链接地址:https://www.jiuchutong.com/biancheng/295630.html 转载请保留说明!

上一篇:PHP list() 将数组中的值赋给变量的简单实例(php数组实现)

下一篇:浅析PHP中的i++与++i的区别及效率(php is_a)

  • 什么情况借钱
  • 增值税专用发票丢失了要怎么处理
  • 背书行为有效的是指什么
  • 公帐的钱可以转给个人私帐可以吗
  • 其他收益科目在哪个科目前面填
  • 所得税不计提直接缴纳,年末一次性计提
  • 个税系统设置在哪里
  • 企业构建固定资产支付的现金应列示在现金流量表
  • 负债的账面价值减去未来期间计算应纳税所得额
  • 银行汇票转给第三方怎么操作
  • 小规模纳税人餐饮业税率是多少
  • 银行账户设置数大于纳税人向税务机关提供数
  • 无形资产租赁税率多少
  • 增值税先征后退属于政府补助吗
  • 暂停水电
  • 递延所得税年初数和期末数
  • 账面销项税额与申报表不一致怎么处理
  • 出口退免税资格备案
  • 初级会计实务的心得体会
  • 税盘没反应
  • 应交企业所得税和所得税费用区别
  • 会计实务加班费的账务处理
  • 已计提折旧怎么计算
  • 电脑每次开机都要选择系统怎么办
  • win10桌面图标怎么随意摆放
  • 查补以前年度税款账务处理
  • 公积金贷款所需手续
  • 毛地黄长什么样
  • 经销商会议流程安排
  • thinkphp6项目
  • 目标检测现状
  • 局部规划算法
  • 快速上手:华硕路由器的wireguard服务器
  • 注意力机制加在什么位置
  • 增值税抵扣要求一一对应
  • 进项税额转出在申报的时候怎么填
  • python有什么用
  • 应纳税所得额中国债利息收入
  • 怎么防止?
  • 积分兑换业务有风险吗
  • 工程类企业存货
  • 自产和外购用于赠送
  • sql2008强制还原数据库
  • 利润表是当月
  • 委托加工物资的消费税计入成本吗
  • 现金收支月报表
  • 回购股票不注销如何发可转债
  • 调研费用包括哪些项目
  • 一年内到期的非流动负债计算公式
  • 已使用的存货,计价方式不允许修改
  • 所得税汇算清缴需要调增的项目
  • 单位社保缴费收费标准
  • 原材料暂估差异调整
  • 固定资产为
  • 100%直接控制的母子公司之间,母公司向子公司
  • 当月发票未作废
  • 多交增值税不能抵扣
  • 固定资产处置当月还要折旧吗
  • 连接mysql服务命令
  • Windows 2003作中转VPN服务器多路由共享上网的方法
  • 手动GHOST安装系统方法教程图解
  • 在bois如何设置C盘启动
  • linux连接ssr
  • explorer.exe进程100%
  • windows怎么更改网络状态
  • win8.1拨号上网
  • windows7电脑无法正常运行
  • JavaScript中的方法名不区分大小写
  • jQuery ajaxForm()的应用
  • javascript总结笔记
  • 音频基础知识及训练
  • Python回调函数注册类型不匹配
  • jQuery 中ajax异步调用的四种方式
  • 深入理解计算机系统 电子书
  • 座机怎么查来电显示号码
  • 陕西省国家税务局刘峰
  • 税务局人工客服时间
  • 消费税是由消费者完全负担的税种
  • 我国国家治理体系是一整套什么的国家制度
  • 年税怎么扣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设