功能: - 网站收藏管理(添加/编辑/删除/收藏) - 分类管理(支持自定义图标和颜色) - 搜索功能 - 点击统计 - 现代暗色主题 UI 技术栈: - 后端: Python Flask + MySQL - 前端: React + Vite + Tailwind CSS - 数据库: MySQL (192.168.8.160) - 端口: 后端 5003, 前端 5173
35 lines
1020 B
JavaScript
35 lines
1020 B
JavaScript
import { length, percentage } from './dataTypes'
|
|
import { splitAtTopLevelOnly } from './splitAtTopLevelOnly'
|
|
|
|
/**
|
|
*
|
|
* https://developer.mozilla.org/en-US/docs/Web/CSS/background-size#formal_syntax
|
|
*
|
|
* background-size =
|
|
* <bg-size>#
|
|
*
|
|
* <bg-size> =
|
|
* [ <length-percentage [0,∞]> | auto ]{1,2} |
|
|
* cover |
|
|
* contain
|
|
*
|
|
* <length-percentage> =
|
|
* <length> |
|
|
* <percentage>
|
|
*
|
|
* @param {string} value
|
|
*/
|
|
export function backgroundSize(value) {
|
|
let keywordValues = ['cover', 'contain']
|
|
// the <length-percentage> type will probably be a css function
|
|
// so we have to use `splitAtTopLevelOnly`
|
|
return splitAtTopLevelOnly(value, ',').every((part) => {
|
|
let sizes = splitAtTopLevelOnly(part, '_').filter(Boolean)
|
|
if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true
|
|
|
|
if (sizes.length !== 1 && sizes.length !== 2) return false
|
|
|
|
return sizes.every((size) => length(size) || percentage(size) || size === 'auto')
|
|
})
|
|
}
|