代码:
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>颜色表title>
- <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
- <script src="https://cdn.jsdelivr.net/npm/vue@2.7.10">script>
- <script src="https://www.itxst.com/package/clipboardjs/clipboard.min.js">script>
- <script src="https://unpkg.com/element-ui/lib/index.js">script>
- <style>
- body {
- font: 16px/24px "宋体" #5a5a5a;
- }
-
- a {
- /* text-decoration: none; */
- color: white;
- }
-
- .title,
- .bgbox {
- width: 100%;
- min-height: 100px;
- color: white;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- .bgbox {
- background-repeat: no-repeat;
- padding: 12px 0;
- /* 图片的位置,居中,靠左对齐 */
- background-position: center 0;
-
- }
-
- .sctBox {
- width: 100%;
- height: 100%;
- display: flex;
- flex-flow: row wrap;
- text-align: center;
- align-items: center;
- }
-
- .sctBox .colorBox {
- flex: 1 0 auto;
- min-width: 90px;
- height: 36px;
- cursor: pointer;
- margin: 20px 30px;
- }
-
- /* 检测background机制 */
- .box {
- /* 无效属性值 */
- background-color: "hhh";
- line-height: 24px;
- height: 100%;
- }
-
- .btn {
- background-color: transparent;
- border-color: transparent;
- color: #e6e6e6;
- }
-
- .btn:hover,
- .btn:focus {
- background-color: transparent;
- border-color: transparent;
- color: #fa6f57;
- cursor: pointer;
- }
- style>
- head>
-
- <body>
- <div id="app">
- <div class="title" :style="colorValue === '' ? 'background:'+colorList[1] : 'background:'+colorValue">
- <h1>心仪颜色表h1>
- div>
- <section class="sctBox">
- <div class="colorBox color-read" :style="'background:'+item"
- v-for="(item,i) in colorList.filter((item) => item)" :key="item+i" @click="copy(item)"
- :data-clipboard-text="item" :title="'当前颜色值:'+item">div>
- section>
- <el-form :inline="true" style="text-align:center;">
- <el-form-item prop="color" label="颜色值">
- <el-input v-model="colorValue" type="text" placeholder="请输入你喜欢的颜色" style="width:240px">el-input>
- el-form-item>
- <el-form-item prop="trans" label="透明度">
- <el-input v-model="transValue" type="number" placeholder="请输入0-1,支持小数点后两位" style="width:240px"
- :precision="2" :step="0.1" :min="0" :max="1">el-input>
- el-form-item>
- <el-form-item prop="color" label="图片">
- <el-input v-model="imgValue" type="text" placeholder="请输入图片地址,支持网页图片" style="width:240px">el-input>
- el-form-item>
- <el-form-item prop="color" label="图片高度">
- <el-input v-model="imgHeight" type="number" placeholder="请输入200-400px" style="width:240px" :step="100"
- :min="100" :max="400">el-input>
- el-form-item>
- el-form>
- <div class="bgbox" :style="{backgroundSize: sizeValue, backgroundColor: colorValue === '' ? colorList[1] : colorValue,
- opacity: transValue === '' ? '1' : transValue, backgroundImage: imgValue=== '' ? 'url()' : 'url('+imgValue+')',
- minHeight: imgHeight === '' ? '200px' : imgHeight+'px'}">
- <span class="box" :style="{}" v-html="spanContent" @click="addComment($event)">span>
- div>
- div>
-
- <script>
- new Vue({
- el: '#app',
- data() {
- return {
- colorValue: '',
- transValue: '',
- imgValue: '',
- sizeValue: 'cover',
- btnColor: 'white',
- imgHeight: '',
- isReplace: true,
- colorList: [
- '#252525', '#008080', '#e79111', '#606060', '#5a5a5a', '',
- 'teal', '#1091d2', '#333333', '#dcdcdc', '#dedede',
- '#cfe9f6', '#767676', '#67C23A', '#f2f2f2', '#fa6f57',
- '#7C7C7C', '#919191', '#1f1f1f', '#b2b2b2', '#a4a4a4',
- '#009944', '#666666', '#81a849', '#999999', '#cccccc',
- '#e6e6e6', '#a2bf78', '#f0f0f0', '#dddddd', '#f5f7fa',
- '#f6faff', '#d9d9d9', '#97a8be', '#329c6b', 'red',
- 'orange', 'skyblue', 'pink', 'purple', 'green',
- ],
- spanContent: '发现一个问题:当我输入非颜色值时,主题的背景颜色不会发生变化;按理来说读取正确应该报错background里面的内容无法识别才对呀!
测试发现:css会自动检测属性值是否无效,无效则默认没有该样式为什么还能保持原来的颜色?css接收有效属性会自动更新,接收无效属性没有触发更新,所以原有样式没有重新被渲染
有效图片链接:https://img.dpm.org.cn/Uploads/Picture/2022/08/31/s630ec2c831366.jpg 暂时找不到合适尺寸的图片哈推荐网址
无效图片链接:https://gd-hbimg.huaban.com/6b14c9ef6c766b5b7aa168cc6273de2ad7417782287e48-ZeSi4l
为什么部分网页图片链接css中的background: url(网页图像链接)会无法识别?部分图片网站启用了图片防盗链
如何判定背景图片和背景颜色同时存在?理论上背景图片整体小于背景颜色时可以查看效果 不信 点击这里 缩小图片尺寸吧!' - }
- },
- methods: {
- copy(title) {
- let clipboard = new ClipboardJS('.color-read')
- clipboard.on('success', e => {
- console.log('复制成功,当前复制内容为: ' + title)
- this.$message.success("复制成功")
- // 释放内存
- clipboard.destroy()
- })
- clipboard.on('error', e => {
- // 不支持复制
- console.log('该浏览器不支持自动复制')
- // 释放内存
- clipboard.destroy()
- })
- },
- addComment: function (event) {
- if (event.target.nodeName === 'EL-BUTTON') {
- // 获取触发事件对象的属性
- this.changeImgSize();
- }
- },
- changeImgSize() {
- if (this.imgValue != '') {
- if (this.isReplace) {
- this.sizeValue = '50%'
- this.isReplace = false
- } else {
- this.sizeValue = 'cover'
- this.isReplace = true
- }
- } else {
- this.$message.warning("还没有添加图片背景呢?");
- }
- }
- }
- })
- script>
- body>
-
- html>
效果:
项目地址:利用学习的vue知识来做一个简单的颜色仪表盘 - Gitee.com
项目总结
总的来说没啥用,但就是玩
功能实现
使用教程
方式1: 直接下载color.html里面的代码在浏览器中运行,需要有网条件
方式2:下载color文件夹里面的文件本地直接运行,速度更快,支持无网条件
在线引用:vue在线引入地址:https://v2.cn.vuejs.org/v2/guide/installation.html clipboard.min.js在线引入地址:https://www.itxst.com/package/clipboardjs/clipboard.min.js
学习心得