本地小说阅读网站打造

news2024/11/23 12:43:05

目录

一、本地小说网站总体组织框架

1、所需的VUE库和elementLib以及JQ库

 2、本地目录设计

3、整体代码样式

二、正文核心代码

1、引入element 样式,和自定义的样式

2、引入JS

3、自定义Header组件

1)vue 定义MyHeader组件

2)MyHeader组件使用

3)最终效果如下

4、自定义header-btns 颜色按钮、字体按钮组件

1)颜色按钮组件

2)颜色字体按钮组件使用

5、el-main  正文部分

三、VUE代码核心部分

1、字体部分 font.js

2、颜色数组

3、主要VUE定义

1)data定义

2) 核心方法定义

3、 mounted初始化

4、按键监听事件


如下示例,是使用VUE 打造的本地小说阅读网站

一、本地小说网站总体组织框架

1、所需的VUE库和elementLib以及JQ库

 2、本地目录设计

藏书库下,是HTML文件

 

3、整体代码样式

<html lang="zh-cn">

<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>总书目</title>
    <link rel="stylesheet" href="js/element_lib/theme-chalk/index.css">
    <link rel='stylesheet' href='http://gudianxiaoshuo.com/js/myCss/gudianxiaoshuo.css'>
</head>
<script src="js\vue.js" type="text/javascript" charset="utf-8"></script>
<script src="http://gudianxiaoshuo.com/js/myHeader.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" src="http://gudianxiaoshuo.com/js/comp/comp_headBtns.js" charset="utf-8"></script>
<style>
    p{text-indent:2em; color:#606266;line-height:200%;}
		  body {font-family: '宋体', Arial, Helvetica;font-size:20px;}		  .el-row{margin-bottom: 20px;}
		  .el-main .el-link{font-size:var(--linkFontSize);}
			.Btn1{
				background - color:rgb(250, 248, 238);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn1:hover{
					background - color:rgb(250, 238, 238);
				}
				.Btn2{
					background - color:rgb(242, 226, 216);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn2:hover{
					background - color:rgb(242, 226, 216);
				}
				.Btn3{
					background - color:rgb(216, 244, 196);
				width:20px;
				height:20px;
				border:12px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn3:hover{
					background - color:rgb(216, 244, 196);
				}
								
				.Btn4{
					background - color:rgb(79, 82, 84);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn4:hover{
					background - color:rgb(79, 82, 84);
				}
				.Btn5{
					background - color:rgb(61, 61, 61);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
								
				}
				.Btn5:hover{
					background - color:rgb(61, 61, 61);
				}
		    ::-webkit-scrollbar {
  				width: 16px;
			    display:var(--scrollbar);
			}
			::-webkit-scrollbar-thumb {
		    background:var(--scrollCorlor);
		    box-shadow: inset 0 0 4px green; 
			border-radius: 30px;
		   }
		  #mainContent:fullscreen {  
			background-color:var(--fullCorlor);
		  }
		  #mainContent{
				padding-left: 100px;
				padding-right:100px;
			}
		</style>

<body>
    <div id="app">
        <el-container>
            <my-header @handle-select="myHandleSelect"></my-header>
            <header-btns :color-arr='colorArr' :options-arr='options' :font-Size-Options-Arr='fontSizeOptions' :color-name='colorName' :text-color='textColor' :bg-color='bgColor' :font-name='fontName' :font-size='fontSize' @color-btn='colorBtn' @select-color-name='selectColorName' @el_color-pic_change='el_colorPic_change' @select-one='selectOne' @select-font-size='selectFontSize'></header-btns>
            <el-row>
                <el-col align="middle">
                    <p>
                        总书目</p>
                </el-col>
            </el-row>
            <el-main id='mainContent' :style="{'--fullCorlor': foolcolorVar,'--scrollCorlor': scrollcolorVar,'--scrollbar': scrollHiddenVar,'--linkFontSize':linkFontSizeVar}">
                <el-row :gutter="20">
                    <el-col :span="6">
                        <el-link type="info" href=".\藏书库\目录.html">藏书库</el-link>
                    </el-col>
                </el-row>
            </el-main>
            <el-footer id='youshengFooterMulu' style='height:160px;margin:160px 60px 20px;'> </el-footer>
        </el-container>
    </div>
</body>
<script src="js\element_lib/index.js" type="text/javascript" charset="utf-8"></script>
<script src="js\font.js" type="text/javascript" charset="utf-8"></script>
<script src="js\jquery-3.5.0.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js\dashang_local.js" type="text/javascript" charset="utf-8"></script>
<script src="http://gudianxiaoshuo.com/js/dashang.js" type="text/javascript" charset="utf-8"></script>
<script src="js\myVueCode.js" type="text/javascript" charset="utf-8"></script>

</html>

下面分别介绍说明下

二、正文核心代码

1、引入element 样式,和自定义的样式

<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>总书目</title>
    <link rel="stylesheet" href="js/element_lib/theme-chalk/index.css">
    <link rel='stylesheet' href='http://gudianxiaoshuo.com/js/myCss/gudianxiaoshuo.css'>
</head>

自定义的样式如下:

p {
    text-indent: 2em;
    color: #606266;
    line-height: 200%;
}

body {
    font-family: '宋体', Arial, Helvetica;
    font-size: 20px;
}

.el-row {
    margin-bottom: 20px;
}

.el-main .el-link {
    font-size: var(--linkFontSize);
}

.el-row {
    margin-bottom: 10px;
}

.el-row:last-child {
    margin-bottom: 0px;
}

.el-row:nth-last-child(2) {
    margin-bottom: 100px;
    margin-top: 40px;
}

.el-header {

    height: 160px !important;
}

.Btn1 {
    background-color: rgb(250, 248, 238);
    width: 20px;
    height: 20px;
    border: 0px;
    border-radius: 10px;
    margin: 10px;
}

.Btn1:hover {
    background - color: rgb(250, 238, 238);
}

.Btn2 {
    background-color: rgb(242, 226, 216);
    width: 20px;
    height: 20px;
    border: 0px;
    border-radius: 10px;
    margin: 10px;
}

.Btn2:hover {
    background-color: rgb(242, 226, 216);
}

.Btn3 {
    background-color: rgb(216, 244, 196);
    width: 20px;
    height: 20px;
    border: 12px;
    border-radius: 10px;
    margin: 10px;
}

.Btn3:hover {
    background-color: rgb(216, 244, 196);
}

.Btn4 {
    background-color: rgb(79, 82, 84);
    width: 20px;
    height: 20px;
    border: 0px;
    border-radius: 10px;
    margin: 10px;
}

.Btn4:hover {
    background-color: rgb(79, 82, 84);
}

.Btn5 {
    background-color: rgb(61, 61, 61);
    width: 20px;
    height: 20px;
    border: 0px;
    border-radius: 10px;
    margin: 10px;

}

.Btn5:hover {
    background-color: rgb(61, 61, 61);
}

::-webkit-scrollbar {
    width: 16px;
    display: var(--scrollbar);
}

::-webkit-scrollbar-thumb {
    background: var(--scrollCorlor);
    box-shadow: inset 0 0 4px green;
    border-radius: 30px;
}

#mainContent:fullscreen {
    background-color: var(--fullCorlor);
}

#mainContent {
    padding-left: 100px;
    padding-right: 100px;
}

*

这里之所以引用的我的网站http://gudianxiaoshuo.com/中文件,而没有放在本地,主要是考虑以后想改样式时,可以直接在网站上修改就可以了。

2、引入JS

<script src="js\vue.js" type="text/javascript" charset="utf-8"></script>
<script src="js/myHeader.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" src="js/comp/comp_headBtns.js" charset="utf-8"></script>

一个是VUE

一个是本地网站的head 组件

一个是颜色按钮组件

3、自定义Header组件

1)vue 定义MyHeader组件

Vue.component("MyHeader",{
	data(){
		return{
            activeIndex: '1'
		}
	},
	template:`
	<div>
    <el-header height='160px' style="background-color: #13303e;">
    <el-menu :default-active="activeIndex"  mode="horizontal" @select="handleSelect" background-color="#13303e" text-color="#fff"   active-text-color="#ffd04b" >
        <el-menu-item index="http://www.gudianxiaoshuo.com/">首页</el-menu-item>
        <el-submenu index="2">
          <template slot="title">古典小说</template>

          <el-menu-item index="http://www.gudianxiaoshuo.com/%E8%97%8F%E4%B9%A6%E5%BA%93/%E5%8F%A4%E5%85%B8%E5%B0%8F%E8%AF%B4/%E4%BC%A0%E4%B8%96%E7%BB%8F%E5%85%B8/%E7%9B%AE%E5%BD%95.html">传世经典</el-menu-item>
          <el-menu-item index="http://www.gudianxiaoshuo.com/%E8%97%8F%E4%B9%A6%E5%BA%93/%E5%8F%A4%E5%85%B8%E5%B0%8F%E8%AF%B4/%E5%8F%A4%E4%B9%A6%E6%8B%BE%E9%81%97/%E7%9B%AE%E5%BD%95.html">古书拾遗</el-menu-item>
          <el-menu-item index="http://www.gudianxiaoshuo.com/%E8%97%8F%E4%B9%A6%E5%BA%93/%E5%8F%A4%E5%85%B8%E5%B0%8F%E8%AF%B4/%E5%8F%A4%E5%85%B8%E8%A8%80%E6%83%85/%E7%9B%AE%E5%BD%95.html">古典言情</el-menu-item>
          <el-menu-item index="http://www.gudianxiaoshuo.com/%E8%97%8F%E4%B9%A6%E5%BA%93/%E5%8F%A4%E5%85%B8%E5%B0%8F%E8%AF%B4/%E5%8F%B2%E4%B9%A6%E6%88%8F%E6%9B%B2/%E7%9B%AE%E5%BD%95.html">史书戏曲</el-menu-item>					  
        </el-submenu>
      </el-menu>

      <el-row style="line-height:20px;font-size:14px;margin-top:10px;margin-bottom:20px;">
          <el-col :span="3" style="text-align:left; color:rgb(18, 228, 18);">
            <div class="section-title">
                <p class="pInfo">头条号:古典小说</p>
                <p class="pInfo">公众号:古典小说网</p>
            </div>
          </el-col>	
          <el-col :span="21" style=" display: flex; font-size:16px; color:rgb(225, 237, 238); justify-content:flex-start;align-items:center;">
            <span>千年千本古典小说,本网站整理近六百本古典小说资源,并提供有声聆听方式,欢迎咨询下载 QQ群号:252380640</span>
          </el-col>				  
     </el-row>

</el-header>
	</div>
	
	`,
	props:["sonprop"],
	methods:{
		handleSelect(key, keyPath){
			this.$emit("handle-select",key)
		}
	}
})

2)MyHeader组件使用

   <my-header @handle-select="myHandleSelect"></my-header>

这里涉及到一个知识点,子组件向父组件发送信息

子组件使用 $emit(eventName,data) 发送,

this.$emit("handle-select",key)

第一个参数handle-select为事件名称,需要跟父组件中 v-on 监听的事件名称  @handle-select 一致;第二个参数为要传递的数据。

然后,子组件传来信息后,最终通过主组件的监听事件myHandleSelect 最终处理。

					myHandleSelect(key) {
               
				        location.href=key;
	  		        }

3)最终效果如下

4、自定义header-btns 颜色按钮、字体按钮组件

1)颜色按钮组件

Vue.component("header-btns",{
template:`
	<div>
        <el-row>
           <button   class="Btn1" v-on:click="colorBtn('btn1')"></button>
           <button   class="Btn2" v-on:click="colorBtn('btn2')"></button>
           <button   class="Btn3" v-on:click="colorBtn('btn3')"></button>
           <button   class="Btn4" v-on:click="colorBtn('btn4')"></button>
           <button   class="Btn5" v-on:click="colorBtn('btn5')"></button>
          <template>
            <el-select style='width:100' v-model='colorNameTmp' placeholder='配色方案'  @change='selectColorName'>
              <el-option
                v-for='(item,index) in colorArr'
                :key='index'
                :label='item.name'
                :value='index'>
              </el-option>
            </el-select>
          </template>
           <el-divider direction='vertical'></el-divider>
          <el-color-picker v-model='textColor' @change='elColorPicChange'></el-color-picker>
          <el-color-picker v-model='bgColor' @change='elColorPicChange'></el-color-picker>
          <el-button size='mini' round  v-on:click="colorBtn('rand')">随机配色</el-button>
          <el-divider direction='vertical'></el-divider>
          <el-button icon='el-icon-full-screen' circle v-on:click="colorBtn('full')"></el-button>
          <el-button icon='el-icon-star-off' circle v-on:click="colorBtn('fav')"></el-button>
         </el-row>
      <el-divider></el-divider>
      <el-row>
        <template>
          <el-select v-model="fontNameTmp" placeholder="请选择字体"  @change="selectOne">
              <el-option
              v-for="item in optionsArr"
              :key="item.value"
              :label="item.value"
              :value="item.value">
            </el-option>
          </el-select>
        </template>
          <template>
            <el-select v-model='fontSizeTmp' placeholder='请选择字体大小' >
              <el-option
                v-for='item in fontSizeOptionsArr'
                :key='item.value'
                :label='item.value'
                :value='item.value'>
              </el-option>
            </el-select>
          </template>
      </el-row>
	</div>
	
	`,
	props:["colorArr","optionsArr","fontSizeOptionsArr","colorName","textColor","bgColor","fontName","fontSize"],
  data(){
    return{
      fontSizeTmp:this.fontSize,
      colorNameTmp:this.colorName,
      fontNameTmp:this.fontName
    }
  },
	methods:{

    colorBtn(key)
    {
      this.$emit("color-btn",key)
    },

    selectColorName(key)
    {
      console.log(key)
      this.$emit("select-color-name",key)
    },
    elColorPicChange(){
      this.$emit("el_color-pic_change")
    }
    ,
    selectOne(fontName)
    {
       this.$emit("select-one",fontName)
    }
    // ,
    // selectFontSize(fontSize)    @change='selectFontSize'
    // {
    //     this.$emit("select-font-size",fontSize)
    // }

	},
    watch: {
      fontSizeTmp(newVar,oldVar){
        console.log(newVar)
    //    this.fontSize=newVar;
        this.$emit("select-font-size",newVar)
      }

    },

})

2)颜色字体按钮组件使用

            <header-btns :color-arr='colorArr' :options-arr='options' :font-Size-Options-Arr='fontSizeOptions' :color-name='colorName' :text-color='textColor' :bg-color='bgColor' :font-name='fontName' :font-size='fontSize' @color-btn='colorBtn' @select-color-name='selectColorName' @el_color-pic_change='el_colorPic_change' @select-one='selectOne' @select-font-size='selectFontSize'></header-btns>

这里需要注意的是:

父组件通过props传递数据: 颜色数组、字体数组等

子组件通过emit 向父组件传递数据

5、el-main  正文部分

            <el-main id='mainContent' :style="{'--fullCorlor': foolcolorVar,'--scrollCorlor': scrollcolorVar,'--scrollbar': scrollHiddenVar,'--linkFontSize':linkFontSizeVar}">
                <el-row :gutter="20">
                    <el-col :span="6">
                        <el-link type="info" href=".\藏书库\目录.html">藏书库</el-link>
                    </el-col>
                </el-row>
            </el-main>

这里需要注意的是:这里涉及到样式参数这个知识点

看一下这部分样式

<style>
    p{text-indent:2em; color:#606266;line-height:200%;}
		  body {font-family: '宋体', Arial, Helvetica;font-size:20px;}		  .el-row{margin-bottom: 20px;}
		  .el-main .el-link{font-size:var(--linkFontSize);}
			.Btn1{
				background - color:rgb(250, 248, 238);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn1:hover{
					background - color:rgb(250, 238, 238);
				}
				.Btn2{
					background - color:rgb(242, 226, 216);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn2:hover{
					background - color:rgb(242, 226, 216);
				}
				.Btn3{
					background - color:rgb(216, 244, 196);
				width:20px;
				height:20px;
				border:12px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn3:hover{
					background - color:rgb(216, 244, 196);
				}
								
				.Btn4{
					background - color:rgb(79, 82, 84);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
				}
				.Btn4:hover{
					background - color:rgb(79, 82, 84);
				}
				.Btn5{
					background - color:rgb(61, 61, 61);
				width:20px;
				height:20px;
				border:0px;
					border - radius:10px;
				margin: 10px;
								
				}
				.Btn5:hover{
					background - color:rgb(61, 61, 61);
				}
		    ::-webkit-scrollbar {
  				width: 16px;
			    display:var(--scrollbar);
			}
			::-webkit-scrollbar-thumb {
		    background:var(--scrollCorlor);
		    box-shadow: inset 0 0 4px green; 
			border-radius: 30px;
		   }
		  #mainContent:fullscreen {  
			background-color:var(--fullCorlor);
		  }
		  #mainContent{
				padding-left: 100px;
				padding-right:100px;
			}
		</style>

如上,样式参数 用 var(--name); 来定义

background-color:var(--fullCorlor);

怎么给它赋值呢?

:style="{'--fullCorlor': foolcolorVar,'--scrollCorlor': scrollcolorVar,'--scrollbar': scrollHiddenVar,'--linkFontSize':linkFontSizeVar}"

通过如上写法,就可以把VUE中的具体值,传给样式参数了。

三、VUE代码核心部分

1、字体部分 font.js

function getAllFont() {
    var fontArr = [
        "微软雅黑",
        "微软雅黑 Light",
        "宋体",
        "新宋体",
        "等线",
        "等线 Light",
        "仿宋",
        "楷体",
        "黑体",
        "方正舒体",
        "方正姚体",
        "隶书",
        "幼圆",
        "华文彩云",
        "华文仿宋",
        "华文琥珀",
        "华文楷体",
        "华文隶书",
        "华文宋体",
        "华文细黑",
        "华文行楷",
        "华文新魏",
        "华文中宋",
        "方正等线",
        "站酷小薇LOGO体",
        "文鼎粗钢笔行楷",
    ]
    return fontArr;
}

这个文件是通过我编写的C++客户端有声小说软件 枚举生成的,所以单独列出来,因为每个机子安装的字体都不一样

2、颜色数组

function getAllColor() {
    var colorArr = [{
            name: '浅白',
            bg: 'rgb(255,255,255)',
            textcolor: 'rgb(89,89,89)'
        },
        {
            name: '淡黄',
            bg: 'rgb(244,236,216)',
            textcolor: 'rgb(91,70,54)'
        },
        {
            name: '明黄',
            bg: 'rgb(255,250,233)',
            textcolor: 'rgb(44,39,36)'
        },
        {
            name: '绿意',
            bg: 'rgb(238,250,238)',
            textcolor: 'rgb(44,39,36)'
        },
        {
            name: '浅绿',
            bg: 'rgb(206,234,186)',
            textcolor: 'rgb(51,51,51)'
        },
        {
            name: '草绿',
            bg: 'rgb(134,202,190)',
            textcolor: 'rgb(81,81,81)'
        },
        {
            name: '粉红',
            bg: 'rgb(255,239,252)',
            textcolor: 'rgb(44,39,36)'
        },
        {
            name: '淡蓝1',
            bg: 'rgb(220,245,245)',
            textcolor: 'rgb(44,39,36)'
        },
        {
            name: '淡蓝2',
            bg: 'rgb(237,255,255)',
            textcolor: 'rgb(44,39,36)'
        },
        {
            name: '深蓝',
            bg: 'rgb(61,122,168)',
            textcolor: 'rgb(178,204,159)'
        },
        {
            name: '灰色',
            bg: 'rgb(239,239,239)',
            textcolor: 'rgb(44,39,36)'
        },
        {
            name: '深灰',
            bg: 'rgb(69,72,74)',
            textcolor: 'rgb(157,159,163)'
        },
        {
            name: '深黑',
            bg: 'rgb(51,51,51)',
            textcolor: 'rgb(181,172,162)'
        }
    ]

    return colorArr;
}

3、主要VUE定义

1)data定义


new Vue({
    el: '#app',

    data: function() {
        return {
            fit: "contain",
            imgUrl: 'http://gudianxiaoshuo.com/js/logo.gif',
            gongzhonghaoUrl: 'http://gudianxiaoshuo.com/js/gongzhonghao.jpg',
            toutiaohaoUrl: 'http://gudianxiaoshuo.com/js/toutiaohao.png',
            options: [],
            colorArr: [],
            colorName: '默认',
            fontName: "宋体",
            fontSizeOptions: [],
            fontSize: 20,
            textColor: null,
            bgColor: null,
            showTip: true,
            foolcolorVar: 'rgb(255,255,255)',
            scrollcolorVar: 'rgb(255,255,255)',
            scrollHiddenVar: 'none',
            zanshangUrl: "http://gudianxiaoshuo.com/assets/img/zan.png"
        }
    },

2) 核心方法定义

   methods: {
        open() {
            this.$message('右键,选择大声朗读即可');
        },
        closeTip() {
            localStorage.setItem('tipClosed', '1');
        },
        selectOne(fontName) {
            var fontFamily = "font-family:" + fontName;
            document.querySelector('#app').style.setProperty('font-family', fontName)
            localStorage.setItem('font', fontFamily);
            localStorage.setItem('fontName', fontName);
        },
        selectFontSize(fontSize) {

            // document.body.requestFullscreen();   

            document.querySelector('#app').style.setProperty('font-size', fontSize)
            localStorage.setItem('fontSize', fontSize);
        },
        selectColorName(colorIndex) {
            console.log(colorIndex);
            console.log(this.colorArr[colorIndex]);
            this.setTBColor(this.colorArr[colorIndex].textcolor, this.colorArr[colorIndex].bg);
            localStorage.setItem('corlorIndex', colorIndex);
        },
        setTBColor(textColor, bgColor) {
            document.querySelector('body').style.setProperty('background', bgColor)
            var x = document.querySelectorAll("p");
            var i;
            for (i = 0; i < x.length; i++) {
                x[i].style.color = textColor;
            }
            localStorage.setItem('bg', bgColor);
            localStorage.setItem('pColor', textColor);
            this.textColor = textColor;
            this.bgColor = bgColor;
        },
        el_colorPic_change() {
            this.setTBColor(this.textColor, this.bgColor);
            this.saveRand(this.textColor, this.bgColor);
            console.log(this.textColor)
        },
        saveRand(textColor, bgColor) {
            var lastElemName = this.colorArr[this.colorArr.length - 1].name;
            if (lastElemName == '随机色') {
                this.colorArr[this.colorArr.length - 1].bg = bgColor;
                this.colorArr[this.colorArr.length - 1].textcolor = textColor;
            } else {

                var fontElem = {};
                fontElem.name = '随机色';
                fontElem.bg = bgColor;
                fontElem.textcolor = textColor;
                this.colorArr.push(fontElem);
            }
            localStorage.setItem('Randbg', bgColor);
            localStorage.setItem('RandTColor', textColor);
        },
        rdmRgbColor() {
            const arr = [];
            for (let i = 0; i < 3; i++) {
                arr.push(Math.floor(Math.random() * 256));
            }
            const [r, g, b] = arr;
            var color = `rgb(${r},${g},${b})`;
            return color;
        },


        colorBtn: function(name) {
            console.log(name);
            if (name == "btn1") {
                this.setTBColor('rgb(89,89,89)', 'rgb(255,255,255)');
            } else if (name == "btn2") {
                this.setTBColor('rgb(91,70,54)', 'rgb(242,236,216)');
            } else if (name == "btn3") {
                this.setTBColor('rgb(51,51,51)', 'rgb(206,234,186)');
            } else if (name == "btn4") {
                this.setTBColor('rgb(157,159,163)', 'rgb(69,72,74)');
            } else if (name == "btn5") {
                this.setTBColor('rgb(181,172,162)', 'rgb(51,51,51)');
            } else if (name == 'rand') {
                let bgColor = this.rdmRgbColor();
                let textColor = this.rdmRgbColor();
                this.setTBColor(textColor, bgColor);
                this.saveRand(textColor, bgColor);

            } else if (name == 'full') {

                var bgColor = localStorage.getItem('bg');
                this.foolcolorVar = bgColor;
                this.scrollcolorVar = bgColor;
                document.getElementById('mainContent').requestFullscreen();
            } else if (name == 'fav') {

                var url = decodeURI(location.href);
                NimCefWebInstance.call('CEF_SendToCppEdgeListen', { url }, (error, result) => {

                });


                // this.$message({
                // dangerouslyUseHTMLString: true,
                // message:'浏览器不支持自动添加收藏夹标签。请您使用快捷键   <strong style="color:red"><i> Ctrl+D</i> </strong>进行添加'}
                // );
            } else if (name == 'reg') {

                NimCefWebInstance.call('CEF_SendToCppButtonInfo', { name }, (error, result) => {

                });

            }
        },



        myEventFunc(event) {
            let x = event.pageX;
            let rect = document.getElementById('mainContent').getBoundingClientRect();
            if (x > rect.right - 50)
                this.scrollHiddenVar = 'inline';
            else
                this.scrollHiddenVar = 'none';


        },
        myHandleSelect(key) {

            location.href = key;
        }


    },

3、 mounted初始化

    mounted() {

        var tip = localStorage.getItem('tipClosed');
        if (tip)
            this.showTip = false;
        var bgColor = localStorage.getItem('bg');
        var pColor = localStorage.getItem('pColor');
        if (bgColor && pColor) {
            this.textColor = pColor;
            this.bgColor = bgColor;
            document.querySelector('body').style.setProperty('background', bgColor);
            var x = document.querySelectorAll("p");
            var i;
            for (i = 0; i < x.length; i++)
                x[i].style.color = pColor;
        }
        var fontArr = getAllFont();
        for (i = 0; i < fontArr.length; i++) {
            var fontElem = {};
            fontElem.value = fontArr[i];
            fontElem.label = fontArr[i];
            this.options.push(fontElem);
        }
        let fontName = localStorage.getItem('fontName');
        if (fontName) {
            document.querySelector('#app').style.setProperty('font-family', fontName);
            this.fontName = fontName;
        }

        for (i = 20; i < 100; i++) {
            var fontElem = {};
            fontElem.value = i;
            fontElem.label = i;
            this.fontSizeOptions.push(fontElem);
        }

        let fontSize = localStorage.getItem('fontSize');
        if (fontSize) {
            document.querySelector('#app').style.setProperty('font-size', fontSize)
            this.fontSize = fontSize
        }

        window.addEventListener('mousemove', this.myEventFunc);

        this.colorArr = getAllColor();

        var Randbg = localStorage.getItem('Randbg');
        var RandTColor = localStorage.getItem('RandTColor');
        if (Randbg) {
            var fontElem = {};
            fontElem.name = '随机色';
            fontElem.bg = Randbg;
            fontElem.textcolor = RandTColor;
            this.colorArr.push(fontElem);
        }

        let colorIndex = localStorage.getItem('corlorIndex');
        console.log(colorIndex)
        console.log(this.colorArr)
        if (colorIndex && colorIndex < this.colorArr.length)
            this.colorName = this.colorArr[colorIndex].name;

    }
})

4、按键监听事件

window.onkeydown = function(ev) {

    console.log(ev);
    if (ev.ctrlKey && ev.shiftKey && event.keyCode === 58) { //89  is  y


        var mainContent = document.getElementById("mainContent");
        var preBrother = mainContent.previousElementSibling;
        while (preBrother) {
            preBrother.style.visibility = "hidden"; //visible
            preBrother = preBrother.previousElementSibling;
        }


        setTimeout(function() {

            var mainContent = document.getElementById("mainContent");
            var preBrother = mainContent.previousElementSibling;
            while (preBrother) {
                preBrother.style.visibility = "visible"; //visible
                preBrother = preBrother.previousElementSibling;
            }

        }, 500)
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mapstruct的具体介绍与使用

我是 ABin-阿斌&#xff1a;写一生代码&#xff0c;创一世佳话&#xff0c;筑一览芳华。 如果小伙伴们觉得我的文章不错&#xff0c;记得一键三连哦 文章目录一、mapstruct简介二、mapstruct与其他映射对比三、mapstruct底层原理解析1、Java动态编译四、具体使用1、依赖导入2、…

Linux开发工具的使用(三)

文章目录Linux开发工具的使用&#xff08;三&#xff09;1. 缓冲区1.1 理解\r和\n1.2 缓冲区的初步理解1.3 倒计时小程序实现1.4 进度条小程序实现2. 分布式版本控制系统-git使用2.1 git历史2.2 git版本控制理解2.3 git使用2.3.1 gitee搭建远程仓库2.3.2 开始配置3. Linux调试器…

Revit教程:创建“幕墙竖梃族”的方法步骤

幕墙竖梃族分为两个组成部分&#xff1a;“幕墙竖梃”和“公制轮廓-竖梃”&#xff0c;前者是基于后者轮廓的一个实体拉伸&#xff0c;两者的关系类似于实体与草图。轮廓族及门窗族 (公制门-幕墙&#xff0c;公制窗-幕墙而非公制门与公制窗)可以嵌套入CAD详图或Revit详图&#…

93、【树与二叉树】leetcode ——222. 完全二叉树的节点个数:普通二叉树求法+完全二叉树性质求法(C++版本)

题目描述 原题链接&#xff1a;222. 完全二叉树的节点个数 解题思路 1、普通二叉树节点个数求法 &#xff08;1&#xff09;迭代&#xff1a;层序遍历BFS 遍历一层获取一层结点 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode …

【九】Netty HTTP+XML协议栈开发

HTTP协议介绍业务场景流程图技术栈设计流程图的分析:Step 1Step2Step3Step4Step5分析结果开发开发流程图代码jar 依赖代码结构如图pojo 包request包response 包client 包server包编码解码基类代码说明测试服务端打印结果客户端打印结果总结介绍 由于HTTP协议的通用性&#xff…

使用js实现一个可以【放烟花】的小游戏

放烟花游戏需求&#x1f447;核心玩法&#x1f447;&#x1f447;界面原型&#x1f447;&#x1f447;成品演示&#x1f447;游戏开发1.游戏素材准备2.代码实现1.创建index.html页面2.首页-开始3.加载烟花音效4.重玩儿放烟花的小游戏。点击页面放烟花。兼容移动端。 游戏需求 …

作为普通网民,这些“实用电脑神器”,值得你知道

国内软件夹缝里求生存&#xff0c;由于某些不良软件&#xff0c;许多人对于国产软件认识多为“流氓、捆绑、多广告”&#xff0c;其实并非如此&#xff0c;下面几款让你刮目相看&#xff0c;扭转观念。 1、图片视频画质增强器 这是一款功能极其强大的图片与视频画质增强器&…

阿里云数据湖3.0解决方案两度登上InfoQ 2022年度榜单

经过一个多月的层层竞选&#xff0c;【阿里云数据湖 3.0 解决方案】从 130 多个方案中脱颖而出&#xff0c;荣获 InfoQ 2022 年度中国技术力量年度榜单《十大云原生创新技术方案》&《云原生十大场景化落地方案》双料大奖&#xff0c;这是头部技术媒体对阿里云存储的再一次认…

低代码是什么?有什么优势?一文看懂LowCode

低代码到底是什么&#xff1f;用最简单的方式告诉我&#xff1f;低代码是近两年来一个很热门的概念&#xff0c;尤其是疫情的影响&#xff0c;市场对低代码的需求不断增加&#xff0c;但到底什么是低代码&#xff1f;它到底有什么好处&#xff1f;这篇就为大家解答这个问题&…

vue2.0 插槽不是响应性的

请注意插槽不是响应性的。如果你需要一个组件可以在被传入的数据发生变化时重渲染&#xff0c;我们建议改变策略&#xff0c;依赖诸如 props 或 data 等响应性实例选项。-- vm.$slots 问题描述 项目中自定了组件 widget&#xff0c;作为容器&#xff0c;其中 header 部分做了预…

SCI投稿:MDPI旗下期刊Mathematics投稿经历

最近写了篇论文&#xff0c;由于国内期刊现状&#xff08;懂的都懂&#xff09;&#xff0c;打算投国外的期刊&#xff0c;看来看去选择投MDPI旗下的Mathematics。手稿经过一轮大修之后顺利收到了Accepted&#xff0c;过程还是比较顺利的&#xff0c;记录一下投稿过程。 论文撰…

Matlab实现的FEMIC的说明书

FEMIC程序是用来反演小回路频域电磁感应数据的。要启动代码,在Matlab命令窗口中输入start,然后点击“Enter”或“返回”按钮。然后会出现FEMIC的主界面,见图1。 它由几个输入区域组成,这几个区分别实现了:加载数据,反演过程控制和最终显示。 图1 主界面 下面对这些输入…

[oeasy]python0045_四种进制_binary_octal_decimal_hexadecimal

四种进制 回忆上次内容 上次研究了 通过 八进制数值 转义 \ooo把(ooo)8进制对应的ascii字符输出 转义序列 \n、\t 是 转义序列\xhh 也是 转义序列\ooo 还是 转义序列 现在 总共有 几种进制 了呢&#xff1f;&#x1f914; 先数一下 树 数树 树 就是这么多棵树 用八进制的…

Redis持久化Redis主从

Redis持久化 RDB持久化 RDB: Redis数据备份文件。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后&#xff0c;从磁盘读取快照文件&#xff0c;恢复数据。 主要流程 bgsave开始时会fork主进程得到子进程&#xff0c;子进程共享主进程的内存数据。完成f…

误删的文件不在回收站如何找回?分享一些恢复数据的教程

电脑清理的文件数据&#xff0c;一般都会经过回收站。如果想要恢复回来&#xff0c;可以直接打开电脑的回收站来寻找。可凡事都有万一&#xff0c;我们删除的文件不在回收站里面。这是什么原因&#xff1f;误删的文件不在回收站如何找回&#xff1f;今天就来分享如何恢复不在回…

git快速学习笔记

1.目标 了解Git基本概念能够概述git工作流程能够使用Git常用命令熟悉Git代码托管服务能够使用idea操作git 2.概述 2.1开发中的实际场景 场景一&#xff1a;备份 小明负责的模块就要完成了&#xff0c;就在即将Release之前的一瞬间&#xff0c;电脑突然蓝屏&#xff0c;硬盘光…

C语言进阶(6)——结构体

文章目录1.结构体的基础知识2.结构体的声明3.特殊的声明4.结构体的自引用6. 结构体的内存对齐7.修改默认对齐数8.结构体传参位段1、位段定义2. 位段的内存分配3.位段的跨平台问题4.位段的运用场景1.结构体的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的…

51单片机——LED基础

从小就对电器元件比较感兴趣吧&#xff0c;经常拿坏的电器里面的芯片拆下来玩&#xff0c;甚至那些没坏的电器&#xff0c;比如我家的电视&#xff0c;也会希望它能坏掉&#xff0c;我好去看看里面是什么样子的&#xff0c;为什么能播放节目……&#xff0c;所以我第一眼看到51…

阿里云-解决EDAS创建应用文件过大无法上传部署问题

文章目录1、背景2、问题具体描述3、解决方案3.1、 2种方案3.2 、OSS 简介3.3、 OSS 功能特性4、 OSS 实操4.1、 上传程序文件4.2、 创建应用1、背景 在一次使用阿里云-EDAS发布应用服务过程中出现EDAS 上传应用包过大无法上传现象。 2、问题具体描述 最近在使用阿里云-EDAS发…

1.1.2续 特殊二极管部分选型

目录 1.稳压管 2.发光二极管 4.光电二极管 5.整流二极管 1.稳压管 利用二极管的反向击穿特性制成的&#xff0c;在电路中其两端的电压保持基本不变&#xff0c;起到稳定电压的作用 Vz 稳定电压&#xff1a;反向击穿后稳定工作的电压 Iz 稳定电流&#xff1a;工作电压等于…