使用v-model绑定属性改变RGB颜色,使用计算属性生成颜色值,演示颜色的变化

最近学习Vue的 计算属性,用到颜色值,经过改造后,发现特别适合用来演示颜色的变化。效果如图所示,只需要拖动滑块,就可以实时看到颜色的变化及其颜色值。

第一种 rgb(0~255,0~255,0~255)格式

在这里插入图片描述在这里插入图片描述代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>使用计算属性生成颜色值</title>
  <style>
    .box {
    
    
      width: 200px;
      height: 200px;
      border: 1px solid #ccc;
    }
  </style>
</head>
<body>
  <div id="app">
    <div>
      <span>R:</span> <input type="range" min='0' max='255' v-model.number="r">
    </div>
    <div>
      <span>G:</span> <input type="range" min='0' max='255' v-model.number="g">
    </div>
    <div>
      <span>B:</span> <input type="range" min='0' max='255' v-model.number="b">
    </div>
    <hr>
    <h2> 颜色值:{
    
    {
    
     rgb }}</h2>
    <div class="box" :style="{ backgroundColor: rgb }">
    </div>
  </div>
	<script src="./lib/vue.js"></script>
  <script>
    var vm = new Vue({
    
    
      el: '#app',
      data: {
    
    
        r: 0, 
        g: 0, 
        b: 0
      },
      computed: {
    
    
        rgb() {
    
    
          return `rgb(${
      
      this.r}, ${
      
      this.g}, ${
      
      this.b})`
        }
      },
    });
  </script>
</body>
</html>

第二种:6位十六进制#RRGGBB格式

在这里插入图片描述
代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<title>使用计算属性得到颜色值</title>
		<style>
			.box {
    
    
				width: 200px;
				height: 200px;
				border: 1px solid #ccc;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div>
				<span>R:</span> <input type="range" min='0' max='255' v-model.number="r">
			</div>
			<div>
				<span>G:</span> <input type="range" min='0' max='255' v-model.number="g">
			</div>
			<div>
				<span>B:</span> <input type="range" min='0' max='255' v-model.number="b">
			</div>
			<hr>
			<h2> 颜色值:{
    
    {
    
     rgb }}</h2>
			<div class="box" :style="{ backgroundColor: rgb }">
			</div>
		</div>
		<script src="./lib/vue.js"></script>
		<script>
			var vm = new Vue({
    
    
				el: '#app',
				data: {
    
    
					r: 0,
					g: 0,
					b: 0
				},
				computed: {
    
    
					rgb() {
    
    
						RR = this.r.toString(16)
						RR = this.r < 16 ? '0' + RR : RR
						GG = this.g.toString(16)
						GG = this.g < 16 ? '0' + GG : GG
						BB = this.b.toString(16)
						BB = this.b < 16 ? '0' + BB : BB
						return '#' + RR + GG + BB
					}
				},
			});
		</script>
	</body>
</html>

上面代码的计算属性中,toString(16)是把十进制转换为十六进制,如果数值小于16,需要补足两位。
input的类型是range,直接滑动改变颜色值,通过v-model双向绑定,改变data中的r,g,b数值,从而使颜色跟随变化。这样可以直观的看到红绿蓝数值对颜色的影响。

猜你喜欢

转载自blog.csdn.net/wangyining070205/article/details/127043573