首页

Vue.js 常用系统指令

seo达人

1.v-on :可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码



(1)v-on:click绑定点击事件



<!DOCTYPE html>

<html>

   <head>

      <meta charset="utf-8" />

      <title>v-on:click</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

   <body>

      <div id="app">

         {{message}}  

         <button v-on:click="fun1('test')">vue的onclick</button>

      </div>

   </body>

   <script>

      //view model

      new Vue({

         el:'#app',

         data:{

             message:'hello vue'

         },

         methods:{

             fun1:function (msg) {

               this.message=msg;

                }

         }

      });

      

   </script>

</html> 









(2)v-on:keydown事件会在用户按下一个键盘按键时发生



<!DOCTYPE html>

<html>

 

   <head>

      <meta charset="utf-8" />

      <title>v-on:keydown</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

 

   <body>

      <div id="app">

         Vue:<input type="text" v-on:keydown="fun($event)">

         <hr/>

         传统JS:<input type="text"  οnkeydοwn="showKeyCode()"/>

      </div>

   </body>

   <script>

      //view model

      new Vue({

         el:"#app",

         methods:{

             / $event 它是vue中的事件对象  和我们传统js的event对象是一样的  /

             fun:function(event){

                    var keyCode = event.keyCode;

                    if(keyCode < 48  || keyCode > 57){

                        //不让键盘的按键起作用

                        event.preventDefault();

                    }

            }

         }

      });

 

 

      //传统js的键盘按下事件

      function showKeyCode(){

         //event对象和我们的document对象以及window对象是一样的,可以不用定义直接使用

         var keyCode = event.keyCode;

         if(keyCode < 48  || keyCode > 57){

            //不让键盘的按键起作用

            event.preventDefault();

         }

         // alert(keyCode);

         // if(event.keyCode == 13){

         //     alert("你按的是回车");

         // }

      }

   </script>

 

</html>





(3)v-on:mouseover  当鼠标指针位于元素上方时,会发生 mouseover 事件



<!DOCTYPE html>

<html>

 

   <head>

      <meta charset="utf-8" />

      <title>v-on:mouseover</title>

      <style>

         #div {

            background-color: red;

            width:300px;

            height:300px;

         }

      </style>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

 

   <body>

      <div id="app">

         <div @mouseover="fun1" id="div">

            <textarea @mouseover="fun2($event)">这是一个文件域</textarea>

         </div>

 

         <!--<div οnmοuseοver="divmouseover()" id="div">

            <textarea οnmοuseοver="textareamouseover()">这是一个文件域</textarea>

         </div>-->

      </div>

   </body>

   <script>

      //view model

        /*

       
@事件名称  就是  v-on:事件名称的简写方式

        @mouseover它就等同于v-on:mouseover

         
/

      new Vue({

         el:"#app",

         methods:{

            fun1:function(){

                alert("鼠标悬停在div上了");

            },

            fun2:function(event){

                alert("鼠标悬停在textarea上了");

                    event.stopPropagation();

            }

         }

      });

 

 

      //传统的js方式

      function divmouseover(){

          alert("鼠标移动到了div上了");

      }

 

      function textareamouseover(){

          alert("鼠标移动到了textarea上了");

          event.stopPropagation();

      }

   </script>

 

</html>





(4).Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation()。注意:该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)



Vue.js通过由点(.)表示的指令后缀来调用修饰符。

.stop

.prevent

.capture

.self

.once

<!DOCTYPE html>

<html>

 

   <head>

      <meta charset="utf-8" />

      <title>v-on:事件修饰符</title>

      <style>

         #div {

            background-color: red;

            width:300px;

            height:300px;

         }

      </style>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

 

   <body>

      <div id="app">

         <form @submit.prevent action="http://www.itheima.com" method="post" >

            <input type="submit" value="提交">

         </form>

         <!--<form action="http://www.itheima.com" method="post" οnsubmit="return checkForm()">

            <input type="submit" value="提交">

         </form>-->

         <hr/>

         <div @mouseover="fun1" id="div">

            <textarea @mouseover.stop="fun2($event)">这是一个文件域</textarea>

         </div>

      </div>

   </body>

   <script>

      //view model

      new Vue({

         el:"#app",

         methods:{

                fun1:function(){

                    alert("鼠标悬停在div上了");

                },

                fun2:function(event){

                    alert("鼠标悬停在textarea上了");

                }

         }

      });

      

      

      //传统js方式

      function checkForm(){

          alert(1);

          //表单验证必须有一个明确的boolean类型返回值

         //在应用验证方法时必须加上 return  方法名称

         return false;

      }

   </script>

 

</html>

 







 



2.v-text与v-html



<!DOCTYPE html>

<html>

   <head>

      <meta charset="utf-8" />

      <title>v-text与v-html</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

   <body>

      <div id="app">

         <div v-text="message"></div>

         <div v-html="message"></div>

         <!--<div id="div1"></div>

         <div id="div2"></div>-->

      </div>

   </body>

   <script>

      //view model

      new Vue({

         el:"#app",

         data:{

             message:"<h1>Hello Vue</h1>"

         }

      });



      //传统js的innerText和innerHTML

      window.onload = function(){

          document.getElementById("div1").innerHTML="<h1>Hello</h1>";

            document.getElementById("div2").innerText="<h1>Hello</h1>";

      }

   </script>

</html>





 



(2)v-bind 插值语法不能作用在 HTML 特性上,遇到这种情况应该使用 v-bind指令



<!DOCTYPE html>

<html>



   <head>

      <meta charset="utf-8" />

      <title>v-bind的使用</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>



   <body>

      <div id="app">

         <font size="5" v-bind:color="ys1">传智播客</font>

         <font size="5" :color="ys2">黑马程序员</font>

      </div>

   </body>

   <script>

      //view model

      //插值表达式不能用于html标签的属性取值

      //要想给html标签的属性设置变量的值,需要使用v-bind

      //v-bind也可以简化写法   直接使用:

      new Vue({

         el:"#app",

         data:{

             ys1:"red",

            ys2:"green"

         }

      })

   </script>



</html>





(3)v-model



<!DOCTYPE html>

<html>

   <head>

      <meta charset="utf-8" />

      <title>v-model</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

   <body>

      <div id="app">

         <form action="" method="post">

            用户名:<input type="text" name="username" v-model="user.username"><br/>

            密码:<input type="text" name="password" v-model="user.password"><br/>

            <!-- v-model替换原来的value属性的值,用value获取不到-->

         </form>

      </div>

   </body>

   <script>

      //view model

      new Vue({

         el:"#app",

         data:{

            user:{

                username:"test",

               password:"1234"

            }

         }

      })

   </script>

</html>





(4)v-for



 



<!DOCTYPE html>

<html>

   <head>

      <meta charset="utf-8" />

      <title>v-for遍历数组</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

   <body>

      <div id="app">

         <ul>

            <li v-for="(item,index) in arr ">{{item}}={{index}} </li>

            <!--index是索引的意思,用插值表达式输出 -->

         </ul>

      </div>

   </body>

   <script>

      //view model

      new Vue({

         el:"#app",

         data:{

             arr:[1,2,3,4,5]

         }

      })

   </script>

</html>





 



<!DOCTYPE html>

<html>

   <head>

      <meta charset="utf-8" />

      <title>v-for遍历对象</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

   <body>

      <div id="app">

         <ul>

            <li v-for="(key,value) in product ">{{value}}===={{key}} </li>

         </ul>

      </div>

   </body>

   <script>

      //view model

        new Vue({

            el:"#app",

            data:{

               product:{

                   id:1,

               name:"笔记本电脑",

               price:5000

            }

            }

        })

   </script>

</html>





<!DOCTYPE html>

<html>



   <head>

      <meta charset="utf-8" />

      <title>v-for遍历对象</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>



   <body>

      <div id="app">

         <table border="1">

            <tr>

               <td>序号</td>

               <td>编号</td>

               <td>名称</td>

               <td>价格</td>

            </tr>

            <tr v-for="(product,index) in products ">

               <td>{{index}}</td>

               <td>{{product.id}}</td>

               <td>{{product.name}}</td>

               <td>{{product.price}}</td>

            </tr>

         </table>

      </div>

   </body>

   <script>

      //view model

        new Vue({

            el:"#app",

            data:{

                products:[

                   { id:1,name:"笔记本电脑",price:5000 },

                    { id:2,name:"手机",price:3000 },

                    { id:3,name:"电视",price:4000 }

                ]

            }

        })

   </script>



</html>





3.v-if与v-show



v-if是根据表达式的值来决定是否渲染元素

v-show是根据表达式的值来切换元素的display css属性

 

<!DOCTYPE html>

<html>

   <head>

      <meta charset="utf-8" />

      <title>v-if与v-show</title>

      <script src="js/vuejs-2.5.16.js"></script>

   </head>

   <body>

      <div id="app">

         <span v-if="flag">传智播客</span>

         <span v-show="flag">itcast</span>

         <button @click="toggle">切换</button>

      </div>

   </body>

   <script>

      //view model

      new Vue({

         el:"#app",

         data:{

             flag:false

         },

         methods:{

             toggle:function(){

                 this.flag = !this.flag;

            }

         }

      })

   </script>

</html>


vue框架渐进性的理解和mvvm模式的理解

seo达人

引言

现在市场很多前端开发的招聘岗位都或多或少的要求你要掌握vue,可以说vue在国内是非常的火爆的,下面我给大家介绍一下vue框架吧!

vue是渐进式框架



vue的核心是一个视图模板引擎,但是这并不能说明vue不是一个框架,如上图所示在声明式渲染(视图模板)基础上,vue可以添加组件系统component,vue-router客户端路由,vuex的状态管理,vue-cli构建工具来构建一个完整的框架,更重要的是这些功能相互独立,你可以任意选用你项目需要的部件,不一定非要全部整合在一起(就像是vuex它是一个很好的可以管理组件之间共享状态的部件,但非必须在你的每一个项目中使用它,如果说你的项目相对简单,组件之间的通信相对简单你完全可以不使用它),可以看到渐进式,其实就是vue的使用方式,同时也能看到vue的设计理念

vue是mvvm模式

为什么说vue是mvvm模式呢?这个大家首先要知道mvvm是什么。mvvm是Model-View-ViewModel的简写,即模型视图视图模型。模型是指后端传过来的数据,视图是指我们看到的页面,视图模型是mvvm框架的核心,他是连接view和model的桥梁,它有两个方向,第一将后端传来的数据转换成页面可以看到的视图,第二,将用户在页面上的交互转化成为后端数据,我们称之为双向绑定。

总结mvvm模式的视图和模型是不能直接通信的,它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信

vue框架可以理解为是ViewModel,它可以实现dom监听和数据绑定

vue的数据绑定原理



当你把JavaScript对象传入vue实例作为data选项,vue会遍历此对象的所以属性,并使用Object.defineProperty把这些属性转换为getter和setter,每一个组件都有一个watcher实例,它会在组件渲染过程中,把接触过的数据记录为依赖,当依赖的setter被触发是,他会通知watcher,重而使关联的数据重新渲染,以下是代码展示。



<div id = "box"></div>

var obox = document.getElementById('box')

var obj = {}

object.defineProperty(obj,'myname',{

get () {

// obj设置了一个myname属性,当访问obj.myname属性会执行get方法

},

set (data) {

// 当修改myname属性会执行set方法

// data会得到你修改的值

obox.innerHTML = data

}

})



object.definePeoperty有一下缺点: {

1:无法监听es6的set,map变化

2:无法监听class类型的数据

3:属性的新增和删除也无法监听

4:数组元素的新整和删除也无法监听

}




JS循环结构有哪些?循环结构概述

seo达人

所谓循环,就是重复执行一段代码,计算机的判断能力和人相比差的很远,计算机更擅长一件事情——不停的重复。而我们在JavaScript中把这叫做循环。下面让我们来了解了解JavaScript里的循环。



js循环结构有哪些

js循环结构有三种



for循环 ==> 用来多次遍历代码块

while循环 ==> 当指定条件为true时,循环代码块

do while ==> 当指定条件伪true时,循环代码块

1、for循环

for是由两个部分组成,条件控制和循环体

语法:



for(初始化表达式;循环条件表达式;循环后的操作表达式){

需要重复的代码块;

}



for语句结构如图:



for循环的执行顺序



1.初始化表达式

  1. 循环条件表达式
  2. 需要重复的代码块
  3. 循环后的操作表达式



    简单的for循环,循环执行一次会改变一个变量的值

    举例:输出1到100的值



    for(var i=1; i <= 100; i++){

    //在循环开始时设置一个变量i;//定义运行循环的条件i<=100;//每个循环执行后,变量增加1

    console.log(i);

    }



    2、while循环

    while循环会重复执行一段代码,直到某个条件不再满足。

    语法:



    while(条件表达式语句){

    执行的代码块;

    }



    while循环结构如图:



    while执行顺序

    当我们的使用条件条件返回值是true,就会执行大括号里面的代码块,执行完大括号的语句之后,会重复大括号里的语句,直到判定条件返回值为false,才会结束循环。



    案例:



    var i = 0;

    while (i < 10){

    console.log(i);

    i++;

    }

    //while循环会先判定条件,再根据条件是否成立达成决定是否进入循环

    //如果条件一开始就是false ,则不会进入循环



    缺点:



    使用while语句的时候,一定要写大括号

    如果没有条件的话,会无限的运行下去,造成死循环。

    3、do while循环的结构

    do while 结构的基本原理和while结构是基本相同的,但是它保证循环体至少被执行一次。因为它是先执行代码,后判断条件

    语法:



    do {

    执行语句块;

    }

    while(条件表达式语句);



    do while 执行顺序:

    先执行一次code,再做判断。与while循环不同,do while无论条件如何 都会执行一次代码

    案例:



    var i = 0;

    do{

    console.log(i);

    i++;

    }while(i<10);



    while 和 do while的不同

    while: 先判断 再执行 条件不成立 循环体 一遍都不执行

    do…while: 先执行 再判断 条件不成立 循环体 至少执行一遍


H5之外部浏览器唤起微信分享

seo达人

最近在做一个手机站,要求点击分享可以直接打开微信分享出去。而不是jiathis,share分享这种的点击出来二维码。在网上看了很多,都说APP能唤起微信,手机网页实现不了。也找了很多都不能直接唤起微信。

总结出来一个可以直接唤起微信的。适应手机qq浏览器和uc浏览器。

下面上代码,把这些直接放到要转发的页面里就可以了:

html部分:


  1. <script src="mshare.js"></script>//引进mshare.js
  2. <button data-mshare="0">点击弹出原生分享面板</button>
  3. <button data-mshare="1">点击触发朋友圈分享</button>
  4. <button data-mshare="2">点击触发发送给微信朋友</button>

js部分:


  1. <script>
  2. var mshare = new mShare({
  3. title: 'Lorem ipsum dolor sit.',
  4. url: 'http://m.ly.com',
  5. desc: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quaerat inventore minima voluptates.',
  6. img: 'http://placehold.it/150x150'
  7. });
  8. $('button').click(function () {
  9. // 1 ==> 朋友圈 2 ==> 朋友 0 ==> 直接弹出原生
  10. mshare.init(+$(this).data('mshare'));
  11. });
  12. </script>

下面是mshare.js的代码分享,把这些代码新建一个js文件放进去,然后在页面中引进就ok了。


  1. /**
  2. * 此插件主要作用是在UC和QQ两个主流浏览器
  3. * 上面触发微信分享到朋友圈或发送给朋友的功能
  4. */
  5. 'use strict';
  6. var UA = navigator.appVersion;
  7. /**
  8. * 是否是 UC 浏览器
  9. */
  10. var uc = UA.split('UCBrowser/').length > 1 ? 1 : 0;
  11. /**
  12. * 判断 qq 浏览器
  13. * 然而qq浏览器分高低版本
  14. * 2 代表高版本
  15. * 1 代表低版本
  16. */
  17. var qq = UA.split('MQQBrowser/').length > 1 ? 2 : 0;
  18. /**
  19. * 是否是微信
  20. */
  21. var wx = /micromessenger/i.test(UA);
  22. /**
  23. * 浏览器版本
  24. */
  25. var qqVs = qq ? parseFloat(UA.split('MQQBrowser/')[1]) : 0;
  26. var ucVs = uc ? parseFloat(UA.split('UCBrowser/')[1]) : 0;
  27. /**
  28. * 获取操作系统信息 iPhone(1) Android(2)
  29. */
  30. var os = (function () {
  31. var ua = navigator.userAgent;
  32. if (/iphone|ipod/i.test(ua)) {
  33. return 1;
  34. } else if (/android/i.test(ua)) {
  35. return 2;
  36. } else {
  37. return 0;
  38. }
  39. }());
  40. /**
  41. * qq浏览器下面 是否加载好了相应的api文件
  42. */
  43. var qqBridgeLoaded = false;
  44. // 进一步细化版本和平台判断
  45. if ((qq && qqVs < 5.4 && os == 1) || (qq && qqVs < 5.3 && os == 1)) {
  46. qq = 0;
  47. } else {
  48. if (qq && qqVs < 5.4 && os == 2) {
  49. qq = 1;
  50. } else {
  51. if (uc && ((ucVs < 10.2 && os == 1) || (ucVs < 9.7 && os == 2))) {
  52. uc = 0;
  53. }
  54. }
  55. }
  56. /**
  57. * qq浏览器下面 根据不同版本 加载对应的bridge
  58. * @method loadqqApi
  59. * @param {Function} cb 回调函数
  60. */
  61. function loadqqApi(cb) {
  62. // qq == 0
  63. if (!qq) {
  64. return cb && cb();
  65. }
  66. var script = document.createElement('script');
  67. script.src = (+qq === 1) ? '//3gimg.qq.com/html5/js/qb.js' : '//jsapi.qq.com/get?api=app.share';
  68. /**
  69. * 需要等加载过 qq 的 bridge 脚本之后
  70. * 再去初始化分享组件
  71. */
  72. script.onload = function () {
  73. cb && cb();
  74. };
  75. document.body.appendChild(script);
  76. }
  77. /**
  78. * UC浏览器分享
  79. * @method ucShare
  80. */
  81. function ucShare(config) {
  82. // ['title', 'content', 'url', 'platform', 'disablePlatform', 'source', 'htmlID']
  83. // 关于platform
  84. // ios: kWeixin || kWeixinFriend;
  85. // android: WechatFriends || WechatTimeline
  86. // uc 分享会直接使用截图
  87. var platform = '';
  88. var shareInfo = null;
  89. // 指定了分享类型
  90. if (config.type) {
  91. if (os == 2) {
  92. platform = config.type == 1 ? 'WechatTimeline' : 'WechatFriends';
  93. } else if (os == 1) {
  94. platform = config.type == 1 ? 'kWeixinFriend' : 'kWeixin';
  95. }
  96. }
  97. shareInfo = [config.title, config.desc, config.url, platform, '', '', ''];
  98. // android
  99. if (window.ucweb) {
  100. ucweb.startRequest && ucweb.startRequest('shell.page_share', shareInfo);
  101. return;
  102. }
  103. if (window.ucbrowser) {
  104. ucbrowser.web_share && ucbrowser.web_share.apply(null, shareInfo);
  105. return;
  106. }
  107. }
  108. /**
  109. * qq 浏览器分享函数
  110. * @method qqShare
  111. */
  112. function qqShare(config) {
  113. var type = config.type;
  114. //微信好友 1, 微信朋友圈 8
  115. type = type ? ((type == 1) ? 8 : 1) : '';
  116. var share = function () {
  117. var shareInfo = {
  118. 'url': config.url,
  119. 'title': config.title,
  120. 'description': config.desc,
  121. 'img_url': config.img,
  122. 'img_title': config.title,
  123. 'to_app': type,
  124. 'cus_txt': ''
  125. };
  126. if (window.browser) {
  127. browser.app && browser.app.share(shareInfo);
  128. } else if (window.qb) {
  129. qb.share && qb.share(shareInfo);
  130. }
  131. };
  132. if (qqBridgeLoaded) {
  133. share();
  134. } else {
  135. loadqqApi(share);
  136. }
  137. }
  138. /**
  139. * 对外暴露的接口函数
  140. * @method mShare
  141. * @param {Object} config 配置对象
  142. */
  143. function mShare(config) {
  144. this.config = config;
  145. this.init = function (type) {
  146. if (typeof type != 'undefined') this.config.type = type;
  147. try {
  148. if (uc) {
  149. ucShare(this.config);
  150. } else if (qq && !wx) {
  151. qqShare(this.config);
  152. }
  153. } catch (e) {}
  154. }
  155. }
  156. // 预加载 qq bridge
  157. loadqqApi(function () {
  158. qqBridgeLoaded = true;
  159. });
  160. if (typeof module === 'object' && module.exports) {
  161. module.exports = mShare;
  162. } else {
  163. window.mShare = mShare;
  164. }

好了,这样就可以直接唤起微信进行分享啦

事件冒泡和冒泡的阻止

seo达人

事件冒泡概念:当元素触发了事件的时候,会依次向上触发所有元素的相同事件。



事件冒泡的行为演示

<!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>Document</title>

    <style>

     #a{

         background: pink;

         width: 400px;

         height: 400px;

     }

     #b{

         background: green;

         width: 300px;

         height: 300px;

     }

     #c{

         background: red;

         width: 200px;

         height: 200px;

     }

    </style>

</head>

<body>

    <div id="a">

        我是a

          <div id="b">

                我是b

             <div id="c">我是c</div>

          </div>

    </div>

    <script>

     var a = document.querySelector('#a')

     var b = document.querySelector('#b')

     var c = document.querySelector('#c')



     a.onclick = fn1;

     b.onclick = fn2;

     c.onclick = fn3;



     function fn1(){

         alert('a来了')

     }



     function fn2(){

         alert('b来了')

     }

     

     function fn3(){

         alert('c来了')

     }

    </script>

</body>

</html>



上面这段代码一共有三个事件,三个div都分别绑定了单击事件。在页面中当单击c会连续弹出3个提示框。这就是事件冒泡引起的现象。事件冒 泡的过程是:c --> b --> a 。c冒泡到b冒泡到a。



冒泡的阻止

方法:

1.event.stopPropagation(); 是事件对象Event的一个方法,作用是阻止目标元素事件冒泡到父级元素 2.event.cancelBubble = true; IE浏览器的方法



<!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>Document</title>

    <style>

     #a{

         background: pink;

         width: 400px;

         height: 400px;

     }

     #b{

         background: green;

         width: 300px;

         height: 300px;

     }



      #c{

         background: red;

         width: 200px;

         height: 200px;

     }

    </style>

</head>

<body>

    <div id="a">

        我是a

          <div id="b">

                我是b

             <div id="c">我是c</div>

          </div>

    </div>

    <script>

     var a = document.querySelector('#a')

     var b = document.querySelector('#b')

     var c = document.querySelector('#c')



     a.onclick = fn;

     b.onclick = fn;

     c.onclick = fn;



     function fn(event){

         var e = window.event || event;

         // 事件冒泡的阻止

         if(e.stopPropagation){

            e.stopPropagation();  // 通用写法

         }else{

             e.cancelBubble = true; // 阻止IE

         }

         var str = this.innerHTML;

         alert(str)

     }

    </script>

</body>

</html>


网页制作学习用好HTML字体标记及属性

前端达人

我们在这里将要谈的是有关文字的标记,包括字体大小、颜色、字型...等变化,适当的应用可以增加页面的美观!



常用字体标记



<Hn>...</Hn> 标题 ,设定标题字体大小, n = 1 ( 大 ) ~ 6 ( 小 ) 会自动跳下一行。通常用在如章节、段落等标题上。

如 : <H2> 标题 </H2>



标题

如 : <H3 ALIGN = CENTER> 标题 </H3> ( 标题置中 )

标题

<B>...</B> 粗体字 。

如 : <B> 粗体字 </B>



粗体字



<I>...</I> 斜体字 。

如 : <I> 斜体字 </I> 

斜体字



<U>...</U> 加底线 。

如 : <U> 加底线 </U> 

加底线



<DEL>...</DEL> 横线 ( 表示删除 )。

如 : <DEL> 横线 </DEL> 

横线



<TT>...</TT> 打字体 ( 固定宽度文字 )。

如 : <TT> 打字体 </TT> 

打字体



<SUP>...</SUP> 上标字 。

如 : 字体 <SUP> 上标字 </SUP> 

字体 上标字



<SUB>...</SUB> 下标字 。

如 : 字体 <SUB> 下标字 </SUB> 

字体 下标字



<!...> 注解 ( 不会显示在浏览器上 ),可以多行。



如 : <! 更新日期 : 2000/1/1>



设定字体大小、颜色、字型



有关设定文字的方法共有以下几种 :



1.设定HTML文件主体文字颜色。<BODY>...</BODY>标记。 



如 : <BODY TEXT=RED>...</BODY> 或 

<BODY TEXT=#FF0000>...</BODY>



2.设定基本字体大小、颜色、字型。<BASEFONT>...</BASEFONT>标记。



3.设定字体大小、颜色、字型。<FONT>...</FONT>标记。



<BASEFONT>...</BASEFONT> 设定基本字体 ,SIZE = 1 ~ 7,1 ( 最小 ) 7 ( 最大 )。

如 : <BASEFONT SIZE=4> 基本字体大小为 4 </BASEFONT> 

基本字体大小为 4



如 : <BASEFONT COLOR =#FF0000> 设定颜色 </BASEFONT> 

设定颜色



如 : <BASEFONT FACE = 标楷体 , 细明体 > 设定字型 </BASEFONT> 

设定字型



<BIG>...</BIG> 基本字体加大 。

如 : <BASEFONT SIZE=4> 基本字体大小为 4,</BASEFONT> 

<BIG> 加大为 5 </BIG> 

基本字体大小为 4, 加大为 5



<SMALL>...</SMALL> 基本字体减小 。

如 : <BASEFONT SIZE=4> 基本字体大小为 4,</BASEFONT> 

<SMALL> 减小为 3 </SMALL> 

基本字体大小为 4, 减小为 3



<FONT>...</FONT> 设定字体大小、颜色、字型 ,SIZE = 1 ~ 7,1 ( 最小 ) 7 ( 最大 )。

如 : <FONT SIZE=4> 字体大小为 4 </FONT> 

字体大小为 4



如 : <BASEFONT SIZE=4> 基本字体大小为 4 

<FONT SIZE= 1> 1字体大小为 5 </FONT> 

<FONT SIZE=-2> -2字体大小为 2 </FONT>...</BASEFONT> 

基本字体大小为 4 

1字体大小为 5 

-2字体大小为 2 



如 : <FONT COLOR =#FF0000> 设定颜色 </FONT> 

设定颜色



如 : <FONT FACE = 标楷体 , 细明体 > 设定字型 </FONT> 

设定字型



新建一个前端学习qun438905713,在群里大多数都是零基础学习者,大家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的小伙伴来一起交流。


  1. 设定字体的大小分 : 绝对SIZE 如 : <FONT SIZE=4> 

    和 相对SIZE 如 : <FONT SIZE= 1> ( 以 BASEFONT 设定的字体大小做加减 )。


  2. 设定字体的颜色可以是颜色名称或#RRGGBB表红绿蓝强度 ( 00 暗 ~ FF 亮 )。 #RRGGBB 所代表的是红、绿、蓝三原色,每一色由两位十六进制的数值表示 ( 即十进制 0 ~ 255 )。 

    十六进制 : 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。


  3. 设定字体的字型会按照顺序找出显示的字型,若找不到则以系统预设字型显示。

    ————————————————

    版权声明:本文为CSDN博主「前端学习线路」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/webxuexi168/article/details/104411193

Layui中使用ECharts

seo达人

日常”过坑“记录

只记录方法不说原理。。。



步骤:



ECharts下载

引入echarts.js

注意:这里好像只能用echarts.js,其它的不行,英文后面配置的时候要改东西(ps:我也不太不清楚)







修改echarts.js

打开echarts.js,在文件大概开始处添加如下代码



window.layui && layui.define ? layui.define(function(exports){exports('echarts',factory(exports))}) :

如图:







在文件内容末尾添加如下代码:



exports.parseGeoJson = parseGeoJson;

return exports;

如图:







 



layui添加配置并使用





ok了,和网上其它的相比,我这个应该是最简单的配置了。


h5新增的表单标签

seo达人

h5新增的表单标签

原创weixin_46366721 最后发布于2020-02-29 12:27:39 阅读数 13  收藏

展开

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

   <style>

       / 谷歌 /

       input::-webkit-input-placeholder{

           color:blue;

       }

       / 火狐19+ /

       input::-moz--input-placeholder{

           color:blue

       }

       / 火狐4-18 /

       input:-moz-input-placeholder{

           color:blue;

       }

       / ie高版本,ie+ /

       input::-ms-input-placeholder{

           color:blue;

       }

       / 欧鹏 /

       input::-o-input-placeholder{

           color:blue;

       }

       

   </style>

</head>

<body>

<form action="" novalidate>

    <input type="email">

    <input type="submit">

    <br>

    <input type="url">

    <input type="submit">

    <br>

    <input type="range">

    <input type="submit">

    <br>

    <input type="number">

    <input type="submit">

    <br>

    <input type="search">

    <input type="submit">

    <br>

    <input type="color">

    <input type="submit">

    <br>

   <input type="time">

   <br>

   <input type="month">

   <br>

   <input type="week">

   <br>

   <!-- <input type="datetime-local> -->

   <input type="date">

   <br>

   <!-- <input type="text" required>

   <input type="submit"> -->

    <br>

    <input type="number" step="3">

    <input type="submit">

    <br>

    <input type="text" name="aa" autocomplete="off">

    <input type="submit">

    <br>

    <input type="text"  value="" placeholder="请输入您的姓名:"  autofocus>

    <input type="submit">

    <br>

    <input type="text" placeholder="请输入您的手机号:" pattern="^1[3|5|8]\d{9}$">

    <input type="submit">

    <br>

    <input type="file" multiple>

    <br>

    <input type="url" list="lll">

    <datalist id="lll">

        <option value="http://www.baidu.com" label="百度"></option>

        <option value="http://www.sina.com" label="新浪"></option>

        </datalist>

    <input type="submit">

</form>

</body>

</html>



h5新增type类型:



Type=“email” 限制用户必须输入email类型

Type=“url” 输入的网址前面必须加上http://

Type=“range” 产生一个滑动条表单

Type=“number” 必须输入的是数字,调整数字大小(谷歌浏览器输入字母不可以,但是可以输入e;火狐可以输入字母,不能提交)

Type=“search” 产生一个搜索意义的表单(火狐浏览器没有叉号,谷歌有)

Type=“color” 生成一个颜色选择的表单;

产生很大的兼容问题:



type=“time” 限制用户必须输入时间类型

type=“month” 限制用户必须输入月份类型(火狐浏览器不显示)

type="week"限制用户必须输入周类型

type="datetime-local"选取本地时间

type=“date”

新增表单属性:



required 检测是否为空;



min:最小值



max:最大值



step:数值增加的幅度; 如果输入的是step=“3”,搜索框输入2,按住上键调的话,会是3,因为法定值:-3 0 3 6 9



autocomplete是否自动提示信息 on(默认值)off;和name="" 一起使用;



placeholder:文本框的提示信息(value的值得手动删除,而placeholder不用删除,可以直接输入内容)



autofocus:自动聚焦,一个页面只能存在一个聚焦(auto:自动)



pattern:后面的属性值是一个正则表达式

//手机号验证pattern=“^1[3][5]\d{9}$”



novalidate:取消验证,放在form里面



multiple:选择多个文件上传



list:提示信息;必须结合datalist标签,绑定datelist (谷歌提示value和label,而火狐只有label提示)



h5:新增的表单标签



datalist

option

output:计算结果输出、脚本的输出


子类对象实例化全过程

seo达人

标准格式注意:

super()和this()调用语句不能同时在一个构造器中。

super()或this()调用语句只能作为构造器中的第一句出现。原因:

无论通过哪个构造器创建子类对象,需要保证先初始化父类。

目的是,当子类继承父类后,“继承”父类所有的属性和方法,因此子类有必要知道父类如何为对象进行初始化。

从结果上看:继承性

子类继承父类以后,就获取了父类中声明的属性或方法。

创建子类的对象,在堆空间中,就会加载所父类中声明的属性。

从过程上看:

当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器,…直到调用了java.lang.Object类中空参的构造器为止。正因为加载过所的父类的结构,所以才可以看到内存中父类中的结构,子类对象才可以考虑进行调用。

强调说明:

虽然创建子类对象时,调用了父类的构造器,但是自始至终就创建过一个对象,即为new的子类对象。


html内联元素和块级元素的基本概念及使用示例

前端达人

html标签分为两种,内联元素和块级元素,首先我们先了解一下内联元素和块级元素的概念:



块级元素:一般是其它元素的容器,可容纳内联元素和其它块级元素,块级元素排斥其它元素与其位于同一行,可设置宽度(width)高度(height)属性,正常流中的块级元素会垂直摆放。常见块状元素为“div”



内联元素(行内元素):内联元素只能容纳文本或者其他内联元素,是块级元素的后代,它允许其他内联元素与其位于同一行,不能设置高度(height)和宽度(width)。常见内联元素为“a”。



根据块级元素的概念我们可以理解为块级元素前后带有换行符,也就相当于元素前后加了一个<br>标签。我们可以把块级元素想象成一个块或一个矩形,所以块级元素能设置高度宽度属性



新建一个前端学习qun438905713,在群里大多数都是零基础学习者,大家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的小伙伴来一起交流。

例:

css文件:

 



复制代码



代码如下:




div1{ 

width:200px; 

height:200px; 

background:#666 



div2{ 

width:200px; 

height:200px; 

background:#F00 

}





html文件: 

 



复制代码



代码如下:





<div id="div1"> 

div1 

块级元素排斥其他元素与其位于同一行 

</div> 

<div id="div2"> 

div2 

块级元素排斥其他元素与其位于同一行 

</div>





显示效果: 



两个div元素不位于同一行



 



根据内联元素的概念,我们可以理解为内联元素前后没有换行符。我们可以把内联元素想象成一条线,所以它不能设置height属性和width属性。



块级元素(block element)标签



address -地址

blockquote - 块引用

center – 居中对齐

dir -目录列表

div - 常用块级容易,也是CSS layout的主要标签

dl - 定义列表

fieldset - form控制组

form - 交互表单

h1 - 大标题

h2 - 副标题

h3 - 3级标题

h4 - 4级标题

h5 - 5级标题

h6 - 6级标题

hr - 水平分隔线

isindex - input prompt

menu - 菜单列表

noframes - frames可选内容,(对于不支持frame的浏览器显示此区块内容

noscript - 可选脚本内容(对于不支持script的浏览器显示此内容)

ol - 排序表单

p - 段落

pre - 格式化文本

table - 表格

ul - 非排序列表



内联元素(inline element)



a - 锚点

abbr - 缩写

acronym - 首字

b - 粗体(不推荐)

bdo - bidi override

big - 大字体

br - 换行

cite - 引用

code - 计算机代码(在引用源码的时候需要)

dfn - 定义字段

em - 强调

font - 字体设定(不推荐)

i - 斜体

img - 图片

input - 输入框

kbd - 定义键盘文本

label - 表格标签

q - 短引用

s - 中划线

samp - 定义范例计算机代码

select - 项目选择

small - 小字体文本

span - 常用内联容器,定义文本内区块

strike - 中划线

strong - 粗体强调

sub - 下标

sup - 上标

textarea - 多行文本输入框

tt - 定义打字机文本

————————————————

版权声明:本文为CSDN博主「前端学习线路」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/webxuexi168/article/details/104382660

日历

链接

个人资料

蓝蓝设计的小编 http://www.lanlanwork.com

存档