媒体查询动态修改less变量

背景

有个网站需要兼容手机和pc,对字体做了变量处理,考虑的是在媒体查询时,修改less的变量值,从而兼容,不需要去逐个修改元素的字体了。

解决方案

实现代码如下,原理是在媒体查询中动态修改css变量

less 复制代码
:root {
  --font-color: #363636;
  --font-size-medium: 16px;
  --font-size-small: 14px;
  --font-size-x-small: 12px;
  --font-size-large: 24px;
}

@font-color: var(--font-color);
@font-size-medium: var(--font-size-medium);
@font-size-small: var(--font-size-small);
@font-size-x-small: var(--font-size-x-small);
@font-size-large: var(--font-size-large);

// 手机端适配
@media screen and (max-width: 768px) {
  :root {
    --font-size-large: 16px;
    --font-size-medium:14px
  }
}

思考过程

初始代码如下,最初想直接修改less变量

less 复制代码
@font-color: #333333;
@font-size-medium: 16px;


@media screen and (max-width: 768px) {
  @font-color: #666666;
  @font-size-medium: 14px;
}

结果媒体查询less变量更改不生效,查了一些资料,有的说使用modifyVars 方法来修改,如下所示,同样不生效

js 复制代码
import less from 'less'

const modifyVars = () => {
  less.modifyVars({
    '@font-color': 'red'
  })
}

猜测是less的变量在编译成css之后,已经是具体的值,不具有动态变化的情况

less编译成css,直接用less变量,编译后如下

使用css变量,后面在媒体查询里修改 --font-color,会刷新css样式。

相关推荐
2401_8784545324 分钟前
Themeleaf复用功能
前端·学习
葡萄城技术团队2 小时前
基于前端技术的QR码API开发实战:从原理到部署
前端
八了个戒3 小时前
「数据可视化 D3系列」入门第三章:深入理解 Update-Enter-Exit 模式
开发语言·前端·javascript·数据可视化
noravinsc4 小时前
html页面打开后中文乱码
前端·html
小满zs4 小时前
React-router v7 第四章(路由传参)
前端·react.js
小陈同学呦5 小时前
聊聊双列瀑布流
前端·javascript·面试
键指江湖5 小时前
React 在组件间共享状态
前端·javascript·react.js
诸葛亮的芭蕉扇5 小时前
D3路网图技术文档
前端·javascript·vue.js·microsoft
小离a_a6 小时前
小程序css实现容器内 数据滚动 无缝衔接 点击暂停
前端·css·小程序
徐小夕6 小时前
花了2个月时间研究了市面上的4款开源表格组件,崩溃了,决定自己写一款
前端·javascript·react.js