小程序中使用css var变量(使js可以动态设置css样式属性)


Posted in Javascript onMarch 31, 2020

使用sass,stylus可以很方便的使用变量来做样式设计,其实css也同样可以定义变量,在小程序中由于原生不支持动态css语法,so,可以使用css变量来使用开发工作变简单。

基本用法

基础用法

<!--web开发中顶层变量的key名是:root,小程序使用page-->
page { 
 --main-bg-color: brown;
}

.one {
 color: white;
 background-color: var(--main-bg-color);
 margin: 10px;
}

.two {
 color: white;
 background-color: black;
 margin: 10px;
}
.three {
 color: white;
 background-color: var(--main-bg-color);
}

提升用法

<div class="one">
 <div class="two">
  <div class="three">
  </div>
  <div class="four">
  </div>
 <div>
</div>
.two { --test: 10px; }
.three { --test: 2em; }

在这个例子中,var(--test)的结果是:

  • class="two" 对应的节点: 10px
  • class="three" 对应的节点: element: 2em
  • class="four" 对应的节点: 10px (继承自父级.two)
  • class="one" 对应的节点: 无效值, 即此属性值为未被自定义css变量覆盖的默认值

上述是一些基本概念,大致说明css变量的使用方法,注意在web开发中,我们使用:root来设置顶层变量,更多详细说明参考MDN的文档

妙用css变量

开发中经常遇到的问题是,css的数据是写死的,不能够和js变量直通,即有些数据使用动态变化的,但css用不了。对了,可以使用css变量试试呀

js

// 在js中设置css变量
let myStyle = `
--bg-color:red; 
--border-radius:50%;
--wid:200px;
--hgt:200px;
`

let chageStyle = `
--bg-color:red; 
--border-radius:50%;
--wid:300px;
--hgt:300px;
`
Page({
 data: {
  viewData: {
   style: myStyle
  }
 },
 onLoad(){
  setTimeout(() => {
   this.setData({'viewData.style': chageStyle})
  }, 2000);
 }
})

wxml

<!--将css变量(js中设置的那些)赋值给style-->
<view class="container">
 <view class="my-view" style="{{viewData.style}}">
  <image src="/images/abc.png" mode="widthFix"/>
 </view>
</view>

wxss

/* 使用var */
.my-view{
 width: var(--wid);
 height: var(--hgt);
 border-radius: var(--border-radius);
 padding: 10px;
 box-sizing: border-box;
 background-color: var(--bg-color);
 transition: all 0.3s ease-in;
}

.my-view image{
 width: 100%;
 height: 100%;
 border-radius: var(--border-radius);
}

通过css变量就可以动态设置css的属性值

代码片段

https://developers.weixin.qq.com/s/aWfUGCmG7Efe

github

小程序演示

小程序中使用css var变量(使js可以动态设置css样式属性)

到此这篇关于小程序中使用css var变量的文章就介绍到这了,更多相关小程序使用css var变量内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
提高代码性能技巧谈—以创建千行表格为例
Jul 01 Javascript
浅析jquery某一元素重复绑定的问题
Jan 03 Javascript
js点击事件链接的问题解决
Apr 25 Javascript
浅谈js中变量初始化
Feb 03 Javascript
javascript实现控制浏览器全屏
Mar 30 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
node+express制作爬虫教程
Nov 11 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
egg.js的基本使用和调用数据库的方法示例
May 18 Javascript
基于vue-draggable 实现三级拖动排序效果
Jan 10 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
May 08 Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 Javascript
功能完善的小程序日历组件的实现
Mar 31 #Javascript
小程序双头slider选择器的实现示例
Mar 31 #Javascript
JavaScript实现电灯开关小案例
Mar 30 #Javascript
javascript实现计算器功能
Mar 30 #Javascript
详解Webpack抽离第三方类库以及common解决方案
Mar 30 #Javascript
记一次react前端项目打包优化的方法
Mar 30 #Javascript
12 种使用Vue 的最佳做法
Mar 30 #Javascript
You might like
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Python中实现结构相似的函数调用方法
2015/03/10 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
金融事务专业求职信
2014/04/25 职场文书
地震慰问信
2015/02/14 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
怎样写家长意见
2015/06/04 职场文书
教师读书活动心得体会
2016/01/14 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers
python开发制作好看的时钟效果
2022/05/02 Python