123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- import { defineMixin } from '../vue'
- import { addStyle, deepMerge, addUnit, trim } from '../function/index'
- export const style = defineMixin({
- props: {
- // flex排列方式
- flexDirection: {
- type: String,
- default: ''
- },
- // flex-direction的简写
- fd: {
- type: String,
- default: ''
- },
- // 展示类型
- display: {
- type: String,
- default: ''
- },
- // display简写
- d: {
- type: String,
- default: ''
- },
- // 主轴排列方式
- justifyContent: {
- type: String,
- default: ''
- },
- // justifyContent的简写
- jc: {
- type: String,
- default: ''
- },
- // 纵轴排列方式
- alignItems: {
- type: String,
- default: ''
- },
- // align-items的简写
- ai: {
- type: String,
- default: ''
- },
- color: {
- type: String,
- default: ''
- },
- // color简写
- c: {
- type: String,
- default: ''
- },
- // 字体大小
- fontSize: {
- type: [String, Number],
- default: 0
- },
- // font-size简写
- fs: {
- type: [String, Number],
- default: ''
- },
- margin: {
- type: [String, Number],
- default: 0
- },
- // margin简写
- m: {
- type: [String, Number],
- default: 0
- },
- // margin-top
- marginTop: {
- type: [String, Number],
- default: 0
- },
- // margin-top简写
- mt: {
- type: [String, Number],
- default: 0
- },
- // margin-right
- marginRight: {
- type: [String, Number],
- default: 0
- },
- // margin-right简写
- mr: {
- type: [String, Number],
- default: 0
- },
- // margin-bottom
- marginBottom: {
- type: [String, Number],
- default: 0
- },
- // margin-bottom简写
- mb: {
- type: [String, Number],
- default: 0
- },
- // margin-left
- marginLeft: {
- type: [String, Number],
- default: 0
- },
- // margin-left简写
- ml: {
- type: [String, Number],
- default: 0
- },
- // padding-left
- paddingLeft: {
- type: [String, Number],
- default: 0
- },
- // padding-left简写
- pl: {
- type: [String, Number],
- default: 0
- },
- // padding-top
- paddingTop: {
- type: [String, Number],
- default: 0
- },
- // padding-top简写
- pt: {
- type: [String, Number],
- default: 0
- },
- // padding-right
- paddingRight: {
- type: [String, Number],
- default: 0
- },
- // padding-right简写
- pr: {
- type: [String, Number],
- default: 0
- },
- // padding-bottom
- paddingBottom: {
- type: [String, Number],
- default: 0
- },
- // padding-bottom简写
- pb: {
- type: [String, Number],
- default: 0
- },
- // border-radius
- borderRadius: {
- type: [String, Number],
- default: 0
- },
- // border-radius简写
- radius: {
- type: [String, Number],
- default: 0
- },
- // transform
- transform: {
- type: String,
- default: ''
- },
- // 定位
- position: {
- type: String,
- default: ''
- },
- // position简写
- pos: {
- type: String,
- default: ''
- },
- // 宽度
- width: {
- type: [String, Number],
- default: null
- },
- // width简写
- w: {
- type: [String, Number],
- default: null
- },
- // 高度
- height: {
- type: [String, Number],
- default: null
- },
- // height简写
- h: {
- type: [String, Number],
- default: null
- },
- top: {
- type: [String, Number],
- default: 0
- },
- right: {
- type: [String, Number],
- default: 0
- },
- bottom: {
- type: [String, Number],
- default: 0
- },
- left: {
- type: [String, Number],
- default: 0
- }
- },
- computed: {
- viewStyle() {
- const style = {}
- const addStyleTmp = addStyle(this.width || this.w)
- && (style.width = addStyle(this.width || this.w))(this.height || this.h)
- && (style.height = addStyle(this.height || this.h))(this.margin || this.m)
- && (style.margin = addStyle(this.margin || this.m))(this.marginTop || this.mt)
- && (style.marginTop = addStyle(this.marginTop || this.mt))(this.marginRight || this.mr)
- && (style.marginRight = addStyle(this.marginRight || this.mr))(this.marginBottom || this.mb)
- && (style.marginBottom = addStyle(this.marginBottom || this.mb))(this.marginLeft || this.ml)
- && (style.marginLeft = addStyle(this.marginLeft || this.ml))(this.padding || this.p)
- && (style.padding = addStyle(this.padding || this.p))(this.paddingTop || this.pt)
- && (style.paddingTop = addStyle(this.paddingTop || this.pt))(this.paddingRight || this.pr)
- && (style.paddingRight = addStyle(this.paddingRight || this.pr))(this.paddingBottom || this.pb)
- && (style.paddingBottom = addStyle(this.paddingBottom || this.pb))(this.paddingLeft || this.pl)
- && (style.paddingLeft = addStyle(this.paddingLeft || this.pl))(this.color || this.c)
- && (style.color = this.color || this.c)(this.fontSize || this.fs)
- && (style.fontSize = this.fontSize || this.fs)(this.borderRadius || this.radius)
- && (style.borderRadius = this.borderRadius || this.radius)(this.position || this.pos)
- && (this.position = this.position || this.pos)(this.flexDirection || this.fd)
- && (this.flexDirection = this.flexDirection || this.fd)(this.justifyContent || jc)
- && (this.justifyContent = this.justifyContent || jc)(this.alignItems || ai)
- && (this.alignItems = this.alignItems || ai)
- return deepMerge(style, addStyleTmp(this.customStyle))
- }
- },
- methods: {
- // 获取margin或者padding的单位,比如padding: 0 20转为padding: 0 20px
- getUnit(unit = '') {
- // 取出两端空格,分隔成数组,再对数组的每个元素添加单位,最后再合并成字符串
- return trim(unit).split(' ').map((item) => addUnit(item)).join(' ')
- }
- }
- })
|