小程序中使用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 相关文章推荐
初识JQuery 实例一(first)
Mar 16 Javascript
javascript中数组的concat()方法使用介绍
Dec 18 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
Sep 03 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
js继承实现方法详解
Dec 16 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
js数字滑动时钟的简单实现(示例讲解)
Aug 14 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
vue2组件之select2调用的示例代码
Oct 12 Javascript
JavaScript基于面向对象实现的猜拳游戏
Jan 03 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 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中设置session用memcache来存储的方法总结
2016/01/14 PHP
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python使用cookielib库示例分享
2014/03/03 Python
浅谈python中set使用
2016/06/30 Python
Python实现完整的事务操作示例
2017/06/20 Python
详解django.contirb.auth-认证
2018/07/16 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
Keras实现DenseNet结构操作
2020/07/06 Python
简单了解如何封装自己的Python包
2020/07/08 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
Linux常见面试题
2013/03/18 面试题
实习自我评价怎么写
2013/12/02 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
质量保证书格式模板
2015/02/27 职场文书
2015年国庆节寄语
2015/08/17 职场文书
小学科学课教学反思
2016/02/23 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
对讲机知识
2022/04/07 无线电
Java界面编程实现界面跳转
2022/06/16 Java/Android
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL
基于Redission的分布式锁实战
2022/08/14 Redis