电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

uni-app低成本封裝一個(gè)取色器組件的簡單方法

瀏覽:167日期:2022-06-01 10:48:10

在uni-ui中找不到對應(yīng)的工具

后面想想也是 移動端取色干什么?

沒辦法 也掛不住特殊需求

因?yàn)槿?yīng)用市場下載 這總東西 又不是很有必要

那么 下面這個(gè)組件或許能解決您的煩惱

<template>	<view>		<view>			<view id="colorBg" @touchstart="startTouch" @touchmove="moveIng"				@touchend="endTouch">				<view :catchtouchmove="true" @c.stop="()=>{}" :style=""transform:rotate(" +degrees +"deg)""></view>				<view :style=""color:"+getColorByDeg(this.degrees)">拖轉(zhuǎn)輪播取色</view>			</view>			<view>				<button @click.stop = "close" type="default">取消</button>				<button @click.stop = "readColor" type="default">確認(rèn)</button>			</view>		</view>	</view></template><script>	export default {		data() {			return {				pointerShow: true,				colorPanWidth: 20,				colorPanRadius: 0,				pointerBox: {},				degrees: 0			}		},		mounted() {			uni.getSystemInfo({				success: (res) => {					uni.createSelectorQuery().select("#colorBg").boundingClientRect((rect) => {						this.pointerBox = rect					}).exec()					this.colorPanRadius = res.screenWidth * 0.4				}			})		},		methods: {			close(){this.$emit("close");			},			readColor(){				let colro = this.getColorByDeg(this.degrees);				this.$emit("change",colro);			},    rbg2Hex(r, g, b) {return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);    },    calculationScheme(deg) {      deg = 360- deg + 120		      const r = Math.round(Math.sin((deg * 2 * Math.PI) / 360) * 255)		      const g = Math.round(Math.sin(((deg + 120) * 2 * Math.PI) / 360) * 255)		      const b = Math.round(Math.sin(((deg + 240) * 2 * Math.PI) / 360) * 255)      return this.colorRgbToHex(`rgb(${r},${g},${b})`);    },			startTouch(e) {				const {					pageX,					pageY				} = e.touches[0]				this.rotatePointer(pageX, pageY)			},			endTouch(e) {				const {					pageX,					pageY				} = e.changedTouches[0]				this.rotatePointer(pageX, pageY)			},			moveIng(e) {				const {					pageX,					pageY				} = e.touches[0]				this.rotatePointer(pageX, pageY)			},			rotatePointer(pageX = 0, pageY = 0) {				const {					pointerBox,					colorPanWidth				} = this				const mouseX = pageX - colorPanWidth				const mouseY = pageY - colorPanWidth				var centerY = pointerBox.top + (pointerBox.height / 2) - 0,					centerX = pointerBox.left + (pointerBox.height / 2) - 0,					radians = Math.atan2(mouseX - centerX, mouseY - centerY)				this.degrees = (radians * (180 / Math.PI) * -1) + 180;			},		     getColorByDeg(deg) {		      deg = 360- deg + 120		      const r = Math.round(Math.sin((deg * 2 * Math.PI) / 360) * 255)		      const g = Math.round(Math.sin(((deg + 120) * 2 * Math.PI) / 360) * 255)		      const b = Math.round(Math.sin(((deg + 240) * 2 * Math.PI) / 360) * 255)		      return `rgb(${r},${g},${b})`		    },			colorRgbToHex(rgbStr) {				const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8}|[0-9a-fA-f]{6}[0-9]{2})$/;				if (reg.test(rgbStr)) {					return rgbStr				} else {					const rgbArray = rgbStr.replace(/(?:\(|\)|rgba|rgb|RGBA|RGB)*/g, "").split(",");					let strHex = "#";					for (let i = 0; i < rgbArray.length; i++) {					if (i !== 3) {						if (rgbArray[i] == "0") {						    strHex += "00"						} else {						    let newItem =Number(rgbArray[i]).toString(16)						if (newItem.length < 2){							newItem = "0" + newItem						}						    strHex += newItem						}							} else {						strHex += rgbArray[i] == "0" ? "" : Number(rgbArray[i]) * 100					}					}					return strHex;				}			}		}	}</script><style>	.dialog {		display: block;		border-radius: 30rpx;		background-color: #303030;		margin: 20rpx;		padding: 30rpx;	}	.flex {		display: flex;		justify-content: space-between;	}	.colorBg {		width: 80vw;		height: 80vw;		margin: 5vw;		background: conic-gradient(red,				yellow,				lime,				aqua,				blue,				fuchsia,				red);		border-radius: 50%;		position: relative;		display: flex;		justify-content: center;		align-items: center;	}	.roundBuff {		width: 55vw;		height: 55vw;		-webkit-transform-origin: center 50%;		transform-origin: center 50%;		background: #303030;		border-radius: 50%;	}	.roundBuff::before {      content: "";      width: 15px;      height: 15px;	  background: #303030;      border: solid #303030;      border-width: 10px 10px 0 0;      transform: translate(-50%, -50%) rotate(-45deg);      position: absolute;      left: 50%;      top: 2%;}	.lee_btn {		background: #00000000;		color: #FFFFFF;		width: 36%;		height: 80rpx;		line-height: 70rpx;		text-align: center;		justify-content: center;		font-size: 30rpx;		border-radius: 50rpx;		border: 5rpx #FFFFFF solid;		font-weight: bold;		padding: 1px 20px;	}	.colorPan {		position: absolute;		color: #FFFFFF;	}</style>

直接將整個(gè)組件復(fù)制過去 接口使用

組件有兩個(gè)方法

  • change 當(dāng)你點(diǎn)擊確定時(shí)觸發(fā) 返回 RGB 色碼
  • close 當(dāng)你點(diǎn)擊取消時(shí)觸發(fā)

總結(jié)

到此這篇關(guān)于uni-app低成本封裝一個(gè)取色器組件的文章就介紹到這了,更多相關(guān)uni-app封裝取色器組件內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: JavaScript
主站蜘蛛池模板: 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 深圳市超时尚职业培训学校,培训:月嫂,育婴,养老,家政;化妆,美容,美发,美甲. | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 智能终端_RTU_dcm_北斗星空自动化科技 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 北京燃气公司 用户服务中心 | 衬氟旋塞阀-卡套旋塞阀-中升阀门首页 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 杭州ROHS检测仪-XRF测试仪价格-百科 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 合肥展厅设计-安徽展台设计-合肥展览公司-安徽奥美展览工程有限公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 温州富欧金属封头-不锈钢封头厂家 |