We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本以为快应用样式这一块会跟普通 H5 开发一样,没想到遇到的问题还蛮多的,而且还有些挺常用的属性、使用方式等都没有支持,有点难搞。
H5
以下稍微整理了些需要注意的地方,开发需谨慎,沉住气,不然挺废键盘的 🤣
快应用只支持 border-box, 也就是 IE 盒模型,开发时不需要设置也不需要改动也不能改动
border-box
IE
不支持 box-shadow、text-shadow 等阴影属性。请看:快应用论坛
box-shadow
text-shadow
目前只有 canvas 支持 shadow 属性,文档地址:官方文档
canvas
shadow
暂时就不要考虑使用阴影属性了,官方也没有给出什么时间支持。替代方案可以考虑一下用背景图,不过这么一来的话,容器 div 的宽高就比较难搞了,挺麻烦的
div
/* 不支持 */ .unSupport { box-shadow: 0 0 0 #ccc; }
在 H5 上,我们一般习惯合并写 background 属性,一方面可以减少代码量,另一方面也可以让代码看起来更简洁一些。
background
但在快应用,background 是不支持合并写法的,只能拆分开来一个一个写,比如写一个背景图样式,如下:
(又多了几行代码,工资 up up up 🤣 )
.unSupport { /* 异常 */ background: #fff; /* 编辑器异常:属性`background` 的值 `#fff` 存在问题: 背景类型 `#fff`暂不支持 */ background: url("../../../assets/img/test.png") no-repeat; /* 以下正常写法 */ background-color: #fff; background-image: url("../../../assets/img/test.png"); background-repeat: no-repeat; background-position: center; background-size: cover; }
常规设置圆角值如:border-radius: 8px 没什么问题,但如果想要设置四个边角不同的圆角值时,并且使用常规的合并写法时,编辑器会报错,但实际上真机预览却可以正常显示
border-radius: 8px
.unSupport { /* 编辑器报异常,但真机可以预览 */ border-radius: 8px 8px 0 0; /* 属性 `border-radius` 不支持单位 `px 8px 0 0`, 目前仅支持 `["px","%","dp"]*/ /* 正常 */ border-radius: 8px; /* 正常 */ border-top-left-radius: 8px; border-top-right-radius: 8px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; }
如果有使用 css 预处理器 scss,可以考虑封装为 mixin (看不得编辑器报错强迫症首选),方便快捷~
css
scss
mixin
@mixin borderRadius($tl, $tr, $br, $bl) { border-top-left-radius: $tl; border-top-right-radius: $tr; border-bottom-right-radius: $br; border-bottom-left-radius: $bl; }
一般我们实现文本超出隐藏都会用到 white-space 这个属性,但在快应用中没有这个属性,而是用另外一个属性代替,相对来说,快应用的使用会更简单方便一些
示例如下:
/* before */ .textOverflow { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* after */ .textOverFlow { text-overflow: ellipsis; lines: 1; }
注意,text-overflow 在快应用中只有两个值:ellipsis 和 clip 并且仅用于 text 标签
text-overflow
ellipsis
clip
text
word-spacing 用于调整单词之间的间距(空格隔开就会被影响到)在快应用中暂不支持;
letter-spacing 用于调整文本字符之间的间距,在编辑器上会提示报错,但在真机预览上可以正常使用
.unSupport { /* 编辑器报错,但真机正常使用 */ letter-spacing: 10px; /* 编辑器报错,真机也不能正常使用 */ word-spacing: 10px; }
快应用选择器已经不支持子孙类选择器(直接子类还是支持的)以及伪类选择器
遇到那种 list 每一项都有 border,最后一项需要干掉 border 的时候比较蛋疼
list
border
.unSupport { &:first-child, &:nth-child(2), &:nth-of-type() { } &:before, &:after { } }
测试发现,目前快应用仅 text 标签支持 text-indent 属性,在 div、input 上使用 text-indent 时编辑器会报异常,同时真机上也显示异常
text-indent
input
.unSupport { /* 编辑器报异常,真机预览无效 */ div { text-indent: 10px; } /* 正常 */ text { text-indent: 10px; } }
目前快应用仅支持 display: flex | none 且默认是以 flex 方式布局。
display: flex | none
flex
为了方便使用,可以考虑封装为 mixin,避免每次 flex 布局都需要写横向、纵向排列方式
@mixin flexBox($column, $justify, $align) { display: flex; flex-direction: $column; justify-content: $justify; align-items: $align; } .flexChild { flex-shink: 0; flex-grow: 0; flex-basis: 1; }
动画属性跟 css3 的使用方式基本相同,但需要有一些需要注意的点,快应用中动画支持的 css 属性有些不同,具体如下:
css3
animation 支持的 @keyframes 属性有:
animation
@keyframes
transition 支持的属性有:
animation 允许使用的属性有: transition 允许使用的属性有:
很蛋疼,样式文件居然无法全局引入...
快应用不像 vue 有一个统一的程序入口,且父组件的样式影响不到子组件的样式,也没有深度选择器 deep,也不能直接在 app.ux 上写全局样式,写了也不生效
vue
deep
app.ux
目前好像就只能在每一个文件 import 诸如 vars.scss、common.scss 等这些全局文件
import
vars.scss
common.scss
以上是自己在快应用开发过程中遇到的样式相关的问题
如果有新的内容,会继续更新在本文档,欢迎关注
如果对以上内容有问题,欢迎指教
我是枸哥,可以叫我杞爷
The text was updated successfully, but these errors were encountered:
No branches or pull requests
快应用 - 样式采坑指南
前言
本以为快应用样式这一块会跟普通
H5
开发一样,没想到遇到的问题还蛮多的,而且还有些挺常用的属性、使用方式等都没有支持,有点难搞。以下稍微整理了些需要注意的地方,开发需谨慎,沉住气,不然挺废键盘的 🤣
样式 css
盒模型 box-sizing
快应用只支持
border-box
, 也就是IE
盒模型,开发时不需要设置也不需要改动也不能改动阴影 box-shadow
不支持
box-shadow
、text-shadow
等阴影属性。请看:快应用论坛目前只有
canvas
支持shadow
属性,文档地址:官方文档暂时就不要考虑使用阴影属性了,官方也没有给出什么时间支持。替代方案可以考虑一下用背景图,不过这么一来的话,容器
div
的宽高就比较难搞了,挺麻烦的背景 background
在
H5
上,我们一般习惯合并写background
属性,一方面可以减少代码量,另一方面也可以让代码看起来更简洁一些。但在快应用,
background
是不支持合并写法的,只能拆分开来一个一个写,比如写一个背景图样式,如下:(又多了几行代码,工资 up up up 🤣 )
圆角 border-radius
常规设置圆角值如:
border-radius: 8px
没什么问题,但如果想要设置四个边角不同的圆角值时,并且使用常规的合并写法时,编辑器会报错,但实际上真机预览却可以正常显示如果有使用
css
预处理器scss
,可以考虑封装为mixin
(看不得编辑器报错强迫症首选),方便快捷~文本超出隐藏 text-overflow
一般我们实现文本超出隐藏都会用到 white-space 这个属性,但在快应用中没有这个属性,而是用另外一个属性代替,相对来说,快应用的使用会更简单方便一些
示例如下:
注意,
text-overflow
在快应用中只有两个值:ellipsis
和clip
并且仅用于text
标签行间距与字间距 letter-spacing & word-spacing
word-spacing 用于调整单词之间的间距(空格隔开就会被影响到)在快应用中暂不支持;
letter-spacing 用于调整文本字符之间的间距,在编辑器上会提示报错,但在真机预览上可以正常使用
css 子类/伪类选择器
快应用选择器已经不支持子孙类选择器(直接子类还是支持的)以及伪类选择器
遇到那种
list
每一项都有border
,最后一项需要干掉border
的时候比较蛋疼缩进 text-indent
测试发现,目前快应用仅
text
标签支持text-indent
属性,在div
、input
上使用text-indent
时编辑器会报异常,同时真机上也显示异常布局类型 display
目前快应用仅支持
display: flex | none
且默认是以flex
方式布局。为了方便使用,可以考虑封装为
mixin
,避免每次flex
布局都需要写横向、纵向排列方式动画 animation & transition
动画属性跟
css3
的使用方式基本相同,但需要有一些需要注意的点,快应用中动画支持的css
属性有些不同,具体如下:animation
支持的@keyframes
属性有:transition 支持的属性有:
animation 允许使用的属性有:
transition 允许使用的属性有:
其他
全局引入样式文件
很蛋疼,样式文件居然无法全局引入...
快应用不像
vue
有一个统一的程序入口,且父组件的样式影响不到子组件的样式,也没有深度选择器deep
,也不能直接在app.ux
上写全局样式,写了也不生效目前好像就只能在每一个文件
import
诸如vars.scss
、common.scss
等这些全局文件写在最后
以上是自己在快应用开发过程中遇到的样式相关的问题
如果有新的内容,会继续更新在本文档,欢迎关注
如果对以上内容有问题,欢迎指教
我是枸哥,可以叫我杞爷
The text was updated successfully, but these errors were encountered: