本篇将实现vue2在css中使用js变量。
下图是el-tab组件,由上面的tab头和下面的内容区构成,当内容区过长的时候,外层固定高度的盒子会出现滚动条(设置了overflow: auto;),tab头部会向上滚动而消失:
滚动前:
滚动后:
现在的需求是,tab头部需要固定在最上方,不随滚动条滚动而消失。
首先尝试将tab头用固定定位,加上背景色和z-index层级,已经实现悬浮固定,但是长度不够,只能盖住“特殊指示”旁边一点,空出来一大截。加上width: 100%又超长,由于组件的一层层嵌套以及element ui组件,样式改了半天,无法实现宽度百分百覆盖。。。(可能跟我css功底太浅有关)
另辟蹊径,将外层盒子的overflow: auto改为overflow: hidden(关闭最外层的滚动条),内容区类名:.el-tabs__content,在这里面更改内容区的样式:
>>>.el-tabs__content{ height: 500px; overflow: auto!important; //使用内容区的滚动条,从而保证tab头部保持不动 }
这样tab头部保持不动,下面的内容区出现高度为500px的滚动条,初步实现内容区滚动,头部不动。问题来了:该页面是自适应页面,高度是动态变化的,这里写500px显然不太合适,因此在这里css就需要用到变量了,该变量会随着页面高度变化而变化。下面实现在css中使用变量:
>>>.el-tabs__content{ /*自定义的变量 --color*/ --color: red; height: 500px; overflow: auto!important; /*用var(变量)使用已经定义的变量*/ color: var(--color); }
效果:
自定义的变量--color已经生效!但此时的--color还是静态的,无法给其赋上js的变量,为了将js动态生成的样式的值传给css属性,可以借助vue中的computed。
computed:{ cssVar(){ return { '--height': document.documentElement.clientHeight-300 + 'px' } }, }
这里利用计算属性,将动态的--height添加到最外层的盒子上,这样在内层的.el-tabs__content可以使用--height这个变量,用这样的方式,模拟了el-tab表头“固定定位”的效果!
脚踏实地行,海阔天空飞
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!