ps冰雕类的两种抠图方法

,我选择了红色通道,并且将其复制,源1为抠出图片的所在层,通道为选区,这样选区外的不会进行计算;源2为执行通道的层,通道为觉得对比较明显的通道,这边为红色通道。

  ps冰雕类的两种抠图方法
  这篇教程主要是向钱柜777娱乐官网的朋友分享ps冰雕类的两种抠图方法,教程比较实用,主要是向大家介绍抠出冰雕这一类的透明物体方法,推荐到钱柜777娱乐官网,一起来学习吧
  
  
  
  
  
  

抠图是ps中的一个基本功能,而有些图并不是单单的抠图就可以变成一个有用的素材,还需要考虑其通透感,之前介绍过婚纱的抠图,这次继续介绍关于冰雕类的抠图。

  

值得一说的是,很多网站上都有介绍这种抠图方式,当然也是用相同的素材,但是网上介绍的是计算方法,而我个人觉得只要用到通道就可以把图做出来,因为给出来的素材大部分是红色的,并没有其他复杂的颜色,所以仅仅是利用红色通道,便可以做出来。

  

下面是效果图。后两张是素材。

  

  

  

  

步骤

  

打开图片,进行一下分析,如何抠图。如果是要抠出图片的通透感,那么,通道是可以帮你完美完成的一个工具,而且在颜色中,图片红色属于三原色中的一个,在通道中,刚好有红,绿,蓝三个颜色通道。

  

  

执行【ctrl+J】。习惯了复制图片,防止在操作中失误,把原素材损坏。

  

利用钢笔抠图。抠图冰雕鹅的轮廓。

  

  

把抠出来的路径转换为选区,并建立蒙版。

  

  

转到通道栏。对比,红、绿、蓝三个通道的通透度。

  

因为冰雕并不是全是同个颜色或是颜色很重的,有反光为白色,并且有一些是浅浅的颜色。

  

我选择了红色通道,并且将其复制。

  

  

把通道反向【ctrl+I】。这边通道白色为选中状态,所以我们需要进行反向。

  

然后点击“将通道作为选区载入”。

  

  

记得执行完上面的步骤后,把其他的通道的眼睛都点击为闭眼状态。点击RGB为睁眼转态,此刻,红、绿、蓝的三个通道也会随着一起打开。

  

  

转为图层栏,在蒙版层上进行复制。(此时的前景色需为黑色)

  

  

接下来为填充颜色,这边有好几种方式,但是只要能把红色变成你想要的颜色就可以,这边介绍一种比较简单的,就是直接新建图层为剪切图层,然后填充为蓝色,并把混合模式为颜色。

  

当然也可以在图层颜色中进行颜色叠加,把混合模式改为颜色也是可以的。

  

  

为了使抠出来的图片比较应景,所以,网上会附带提供一张背景图片。你自己也可以随自己的喜欢更换。

  

  

另一种思路

  

上面介绍的是直接把通道转换为选区,而有些网站会介绍利用算法来解决问题。

  

步骤还是如上面那个方法一样,抠图,并且转换为选区。这边可以不用进行蒙版填充。

  

然后执行,【图像】> 【计算】。

  

源1为抠出图片的所在层,通道为选区,这样选区外的不会进行计算;源2为执行通道的层,通道为觉得对比较明显的通道,这边为红色通道。

  

混合模式为“正片叠底”。网上的解释是这样的:【“正片叠底”模式使得通道内的图像变暗,在选取冰雕后,背景图像对冰雕的影响就会变小。】

  

最后得出的通道为Alpha1。

  

  

得出Alpha1通道后,变把它转换为选区,并切换成图层栏,此时通道应该为RGB模式,而不是显示为任何一个通道模式。

  

在图层栏中,为图层建立蒙版,然后变换颜色,添加背景,就可以了。

  

以上ps冰雕类的两种抠图方法,抠图的方法很多,但大家需要灵活运用,选择最适合抠图的方法,希望这篇文章能给大家带来一定的帮助!

  

相关阅读:

  

Photoshop快速抠出透明的火焰火苗图片

  

PS使用通道抠图工具抠取透明白色婚纱教程

  

Photoshop利用通道工具给婚纱照片抠图换背景

拍婚纱照的五点注意事项 教你拍出漂亮的婚纱照

“工欲善其事,必先利其器”,万事俱备的情况下才不至于在拍摄的过程中显得手忙脚乱,以下就由小编来着重介绍拍摄婚纱照的准备工作吧,五、调整愉悦的心情。

  拍婚纱照的五点注意事项 教你拍出漂亮的婚纱照
  在拍摄一套完美的婚纱照之前需要准备哪些工作?准备做哪些?相信这些都是没有经验的新人值得考虑的。“工欲善其事,必先利其器”,万事俱备的情况下才不至于在拍摄的过程中显得手忙脚乱,以下就由小编来着重介绍拍摄婚纱照的准备工作吧
  
  
  
  
  
  

一、挑选适合自己风格的衣物鞋帽

  

相信新人都在选择影楼之前就订好自己的拍摄风格了,还有选定了适合自己的拍摄风格。但是也可以额外的准备些自己中意的衣物鞋帽,在拍摄的过程中也能增加些自己的个性元素,这样也能较好的突出与众不同和自己的个性!

  

  

二、养精蓄锐,调整时间

  

外景拍摄婚纱照的时间一般都是一整天,如果在选景的时候是外地时间则需要更长,有可能多达一周的时间,但是这种高强度的拍摄也是极其疲劳的!所以,在确定拍摄婚纱照的前天一定要多注意休息和假期时间安排!

  

  

三、个人形象修剪

  

婚纱店主要是为女性服务,包括设计发型和化妆打扮!而男士则是简单了很多,最多用发蜡订好发型就OK!所以男士拍婚纱照之前先修剪好自己的发型,不然显得没有精神,反而更加衬托新娘的美丽了!

  

四、首饰的选择

  

人靠衣装马靠鞍,女士在拍摄婚纱照的时候尽量多准备些首饰,这样在不同的婚纱照中体型女性的品味,带上这些首饰也为婚纱照增加了不少亮点!

  

  

五、调整愉悦的心情

  

好的心情带来的拍摄表情效果也是有很大的差别。始终保持着一个好的心情,在拍摄的过程中尽情的释放出你灿烂的笑容,让记忆停留在这最美好的时刻!

  

六、始终保证身体精神饱满

  

身体是革命的本钱,为了拍摄一套完美的婚纱照相当的耗费体力,还要摆出各种姿势,而且一天都是站着拍摄!半天下来也是相当的疲劳!所以新人也要尽量的保持体力,在造型上完美的展现出来!

  

  

  

以上就是拍婚纱照的五点注意事项 教你拍出漂亮的婚纱照的全部内容了,希望对各位有所帮助。如果各位还有其他方面的问题,或者想要了解最新的资讯,请持续关注钱柜777娱乐官网!

关于ajax网络请求的封装实例

//跨域请求,appendChild(sc);,var arr = [];//定义数组 用于把对象存储到数据里面,for (var key in obj,},status >= 200 && ajaxObj。

  下面小编就为大家带来一篇关于ajax网络请求的封装实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  
  
  

实例代码:

  
  

  // 封装的ajax网络请求函数
  // obj 是一个对象
  function AJAX(obj){
  
  
  //跨域请求
  if (obj.dataType == "jsonp") {
  //在这里 callback 必须是全局变量 保证函数消失的时候 这个变量不可以被销毁
  
  //处理一下函数名(防止多个网络请求 函数名字相同 出现紊乱的情况)
  var hehe = "callBack" + "_" + new Date().getTime() + "_" + String(Math.random()).replace(".","");
  window[hehe] = obj.success;
  //创建 script标签
  var sc = document.createElement("script");
  sc.src = obj.url + "?" + "cb=" + hehe;
  console.log(sc.src);
  document.body.appendChild(sc);
  document.body.removeChild(sc);
  return;
  }
  
  
  
  
  
  //1、创建 ajax 对象
  var ajaxObj = null;
  if (window.XMLHttpRequest) {
  ajaxObj = new XMLHttpRequest();
  }else{
  ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  
  //设置请求的类型
  obj.type = obj.type.toUpperCase() || "GET";
  
  //如果是get请求 并且需要传递参数 则需要给 url 后面拼接参数
  if (obj.type == "GET") {
  var arr = [];//定义数组 用于把对象存储到数据里面
  for (var key in obj.data) {
  arr.push(key +"="+ obj.data[key]);
  }
  //用&分隔数组 让其转化为类似:name=lxl&age=18 的形式
  var str = arr.join("&");
  obj.url = obj.url +"?"+ str;
  //拨
  ajaxObj.open(obj.type,obj.url,true);
  
  
  //发送"name=123&age=18"
  ajaxObj.send();
  }else{
  var arr = [];//定义数组 用于把对象存储到数据里面
  for (var key in obj.data) {
  arr.push(key +"="+ obj.data[key]);
  //console.log(arr);
  }
  //用&分隔数组 让其转化为类似:name=lxl&age=18 的形式
  var str = arr.join("&");
  //console.log(str);
  ajaxObj.open(obj.type,obj.url,true);
  ajaxObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  ajaxObj.send(str);
  }
  
  
  
  //监听
  ajaxObj.onreadystatechange = function(){
  
  if (ajaxObj.readyState == 4) {
  if (ajaxObj.status >= 200 && ajaxObj.status < 300 || ajaxObj.status == 304) {
  //请求成功
  obj.success(ajaxObj.responseText);
  }else{
  //请求失败
  obj.error(ajaxObj.status);
  }
  }
  
  }
  
  }
  

  
  

以上这篇关于ajax网络请求的封装实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持钱柜777娱乐官网。

response.setHeader参数、用法的介绍

,transtion= 50)”>和<meta http-equiv=”Page-Exit” contect=”revealTrans(duration=20,transtion=6)”>设定进入和离开页面时的特殊效果,这个功能即FrontPage中的“格式/网页过渡”,不过所加的页面不能够是一个frame页面 Cache-Control头域   Cache-Control指定请求和响应遵循的缓存机制,请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。

  response.setHeader 是用来设置返回页面的头 meta 信息,
  使用时 response.setHeader( name, contect );
  
  
  meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head>与</head>中
1、<meta name=”Generator” contect=””>用以说明生成工具(如Microsoft FrontPage 4.0)等;
2、<meta name=”KEYWords” contect=””>向搜索引擎说明你的网页的关键词;
3、<meta name=”DEscription” contect=””>告诉搜索引擎你的站点的主要内容;
4、<meta name=”Author” contect=”你的姓名”>告诉搜索引擎你的站点的制作的作者;
5、<meta name=”Robots” contect= “all|none|index|noindex|follow|nofollow”>
其中的属性说明如下:
设定为all:文件将被检索,且页面上的可以被查询;
设定为none:文件将不被检索,且页面上的不可以被查询;
设定为index:文件将被检索;
设定为follow:页面上的可以被查询;
设定为noindex:文件将不被检索,但页面上的可以被查询;
设定为nofollow:文件将不被检索,页面上的可以被查询。
http-equiv属性
1、<meta http-equiv=”Content-Type” contect=”text/html”;charset=gb_2312-80″> 和 <meta http-equiv=”Content-Language” contect=”zh-CN”>用以说明主页制作所使用的文字以及语言;
如英文是ISO-8859-1字符集,还有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集;
2、<meta http-equiv=”Refresh” contect=”n;url=http://yourlink/”>定时让网页在指定的时间n内,跳转到页面http://yourlink/;
3、<meta http-equiv=”Expires” contect=”Mon,12 May 2001 00:20:00 GMT”>可以用于设定网页的到期时间,一旦过期则必须到服务器上重新调用。需要注意的是必须使用GMT时间格式;
4、<meta http-equiv=”Pragma” contect=”no-cache”>是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从Cache中再调出;
5、<meta http-equiv=”set-cookie” contect=”Mon,12 May 2001 00:20:00 GMT”>cookie设定,如果网页过期,存盘的cookie将被删除。需要注意的也是必须使用GMT时间格式;
6、<meta http-equiv=”Pics-label” contect=””>网页等级评定,在IE的internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级别就是通过meta属性来设置的;
7、<meta http-equiv=”windows-Target” contect=”_top”>强制页面在当前窗口中以独立页面显示,可以防止自己的网页被别人当作一个frame页调用;
8、<meta http-equiv=”Page-Enter” contect=”revealTrans(duration=10,transtion= 50)”>和<meta http-equiv=”Page-Exit” contect=”revealTrans(duration=20,transtion=6)”>设定进入和离开页面时的特殊效果,这个功能即FrontPage中的“格式/网页过渡”,不过所加的页面不能够是一个frame页面
Cache-Control头域
  Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:
  Public指示响应可被任何缓存区缓存。
  Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
  no-cache指示请求或响应消息不能缓存
  no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
  min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。   max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

Ajax基础详解教程(一)

getElementById(‘btn’);,我们来具体看个get方式请求的栗子,并且了解前后端到底是怎么交互的,php页面,把内容输出,XMLHttpRequest){。

  Ajax基础详解教程(一)
  ajax技术在前端应用开发中经常会用到,是必须要掌握的知识。下面钱柜777娱乐官网小编给大家带来了Ajax基础详解教程(一),感兴趣的朋友跟着一起学习吧
  
  
  

什么是Ajax?
  

  

在研究ajax之前首先让我们先来讨论一个问题 ——什么是Web 2.0 。听到 Web 2.0 这个词的时候,应该首先问一问 “Web 1.0 是什么?” 虽然很少听人提到 Web 1.0,实际上它指的就是具有完全不同的请求和响应模型的传统 Web。比如,到 hdu.edu.cn 网站上点击一个按钮。就会对服务器发送一个请求,然后响应再返回到浏览器。该请求不仅仅是新内容和项目列表,而是另一个完整的 HTML 页面。因此当 Web 浏览器用新的 HTML 页面重绘时,可能会看到闪烁或抖动。事实上,通过看到的每个新页面可以清晰地看到请求和响应。

  

Ajax也是前端必备技能了,学习任何语言,都需要以理论为基础的大量实践才能真正学会,之前学了Ajax很多遍,因为缺乏大量实践,总是会忘。所以不实践是失败之母。。。当然理论基础也很重要啦,今天谈谈我对Ajax的基础认知。
  

  

定义:全称:Asynchronous JavaScript and XML(用异步的形式的JavaScript去操作XML) 用来传输进行数据交互 其实就是拿数据发数据。
  

  

应用:我们来想想我们编写的HTML代码的时候,当我们改变了里面内容了并且想看效果的时候,是不是先保存,然后去浏览器刷新页面,而Ajax就是做到当页面内容发生改变的时候能不刷新页面,就能把改变告知我们。比如,我们注册的时候信息填写错误,是不是没刷新页面就能直接看到信息提示,比如我们玩QQ的时候,有什么消息都会提醒你,丝毫没有刷新页面,丝毫没有影响你干别的事情,这就是Ajax做的事情。
  

  

下面我们先不解析具体的原理,先来看一个大致的实现过程。
  

  

当然首先,你得知道是把代码放在服务器下运行的,打开的时候不能用本地的地址,要用localhost/。。这种形式才是在服务下访问的。要是这不了解的话,可以先自行百度下。
  

  

栗子需求:新建一个文字1.txt,随便输入什么内容,新建HTML页面,点击页面里的按钮获取1.txt里面的内容
  

  
  

  var oBtn = document.getElementById('btn');
  oBtn.onclick = function(){
  var xhr = new XMLHttpRequest(); //创建Ajax对象
  xhr.open('get','1.txt',true); //设置请求信息
  xhr.send();//提交请求
  //等待服务器返回内容
  xhr.onreadystatechange = function() {
  if ( xhr.readyState == 4 ) {
  alert( xhr.responseText ); //弹出内容
  }
  }
  }

  
  

当点击按钮的时候,你会发现弹出了1.txt里面的内容。
  

  

我们来具体解析一下这个步骤
  

  
  

  var xhr = new XMLHttpRequest(); //创建Ajax对象

  
  

我们要用Ajax获取数据,首先呢,要创建一个Ajax对象,就跟你想获取系统时间要创建一个时间对象是一个道理。对象的名称就是 XMLHttpRequest(),创建好之后我们就可以用对象下的方法属性进行数据交互了。
  

  

需要说明的是,这个对象实际是存在兼容问题的,IE6以下没有这个对象的,所以是获取不到数据的,IE6以下用的实际是一个插件的方式:
  

  
  

  ActiveXObject(‘Microsoft.XMLHTTP')
  //ActiveXObject: IE6下插件的总称,包含很多插件
  //Microsoft.XMLHTTP:具体某个插件的名字

  
  

所以我们需要对上面做一个兼容性的处理:
  

  
  

  var xhr = null;
  if(window.XMLHttpRequest){ //加window是因为如果直接判断IE下不存在的东西会报错,加了window,就是在判断一个属性是否存在,这样就不会报错了(当然我们都知道所有的东西都在window对象下,所以这样判断是有效的)
  xhr = new XMLHttpRequest();
  }else{
  xhr = new ActiveXObject(‘Microsoft.XMLHTTP');
  }

  
  

接着看
  

  

xhr.open(‘get’,’1.txt’,true); //设置请求信息

  

Open方法

  

三个参数的含义

  

1、提交方式 Form-method(get/post)
  

  

2、提交地址 Form-action
  

  

3、是否异步,是为(true)

  

首先讲提交方式:get/post 这两种的区别。
  

  

这里我们不用ajax的方式,先直接通过传统的表单提交数据来分析。
  

  

传统的表单提交就是在表单里面设置提交的一些参数,用户的信息输入提交,会跳到指定后台的页面。
  

  

表单的参数:
  

  

action:提交到哪里 默认是当前页面
  

  

method:提交方式 默认是Get
  

  

enctype: 提交的数据格式,默认是application/x-www-form-urlencoded
  

  

我们来具体看个get方式请求的栗子,并且了解前后端到底是怎么交互的。
  

  

栗子需求:建立HTML页面,PHP页面,填入数据,点击提交,然后输出我们输入的内容。
  

  

HTML页面:
  

  
  

  <form action="1.get.php">
  <input type="text" name="username">
  <input type="text" name="age">
  <input type="submit" value="按钮" />
  </form>

  
  

1.get.php(如果不了解PHP语言,大概看下面的注释简单知道干啥就行了)
  

  
  

  <?php
  header('content-type:text/html;charset="utf-8"'); //设置编码格式,以及文档类型
  error_reporting(0);
  $username = $_GET['username'];//获取get请求方式的数据
  $age = $_GET['age'];
  echo "你的名字:{$username},年龄:{$age}"; //输出内容

  
  

  

观察实验结果,当点击按钮,页面会跳到1.get.php页面,把内容输出。并且观察上面的地址栏,会发现我们输入的信息被放在了地址栏上。
  

  

其实整个GET请求过程是这样的。
  

  

1 输入用户信息,点击提交,跳到指定后台的页面
  

  

2 GET方式会把用户输入的数据名称和对应的值以这样的格式(username=value&age=value )串连起来,放在指定后台页面的地址栏的问(?)后面。
  

  

3 后台的代码 通过PHP语言中的$_GET方法,获取到地址栏中的用户信息,$_GET[‘username’]; $_GET[‘age’];然后赋给变量,输出信息。
  

  

由此,我们可以知道GET方式:
  

  

1 把数据名称和对应的值串连(username=value&age=value ),然后把数据放到指定页面的url地址?后面。
  

  

2 我们其实完全可以在后台页面的地址栏上手动更改用户信息,相应的输出也会变化。因为后台代码是从地址栏中获取的信息。
  

  

所以也因为这样,这种传输方式,是不安全的,
  

  

GET方式还有一些其他的特点:
  

  

3 因为url有长度限制原因 Get请求的方式有数据量限制,每个浏览器都不同,所以不要用这种方式传递过长的数据。不然会被截取,导致传递数据不完整。
  

  

4 只能传递字符串类型
  

  

下面来看看POST方式,同样是这样的需求
  

  

HTML页面:
  

  
  

  <form action="1.get.php" method="post">
  <input type="text" name="username">
  <input type="text" name="age">
  <input type="submit" value="按钮" />
  </form>

  
  

1.get.php
  

  
  

  <?php
  header('content-type:text/html;charset="utf-8"');
  error_reporting(0);
  $username = $_POST['username'];//不同的请求方式方法不同,$_POST方法专门用来获取POST方式请求的数据 $age = $_POST['age']; echo "你的名字:{$username},年龄:{$age}";
  
  

  
  
  

  

1.输入页面,跟前面一样就没有截取,输出信息页面,我们可以看到,地址栏上已经没有用户信息了,但页面还是输出了用户信息。那从哪看出传递的过程呢?
  

  

其实在传递数据的过程中,浏览器还会向服务端(后台)发送一个请求头包含一些请求的信息(GET请求也有头部信息),我们打开开发者工具,找到网络就可以看到我们的请求,点进去就是具体内容,看上面的第二种图,可以看到一些请求信息,有请求的编码格式,还有请求地址等,具体可以自己私下了解。
  

  

我们看第三张图,可以看到请求的数据,上面的其实是浏览器已经按照某种格式输入的信息,下面的源代码才是实际传递的信息,可以看到串连的格式和GET请求是一样的,不过把用户名加密了,更加安全了。
  

  

由此我们可以知道
  

  

Post请求

  

1 数据的串连格式和Get请求是一样的
  

  

2 通过请求头信息 通过浏览器内部传输:
  

  

还有别的区别就是
  

  

3 传输数据量 Post理论上无限
  

  

4 可以传递多种数据类型(文本类型,二进制)
  

  

还有一定是后端获取数据格式不仅有 $_GET, $_POST还有一个 3 $_REQUEST 可以获取任何提交方式的数据 。
  

  

我们需要注意的是数据传输方式 和 数据获取方式 必须保持一致才能成功获取
  

  

关于Open方法的第一个参数提交方式就讲到这里,第二个地址先简单了解,下面来看第三个参数关于异步和同步。
  

  

同步:就是一种阻塞模式,比如代码var a =1 ;alert(a);这就是一种同步,必须执行了第一种var a =1,你才会弹出a的值。
  

  

缺点:一般当你后面的代码需要用到前面的东西的时候 适合用同步 ,但用的很少,因为后面的代码都要等前面,体验是不好的。
  

  

异步:就是一种非阻塞模式,最明显的例子,就是定时器,当我们写了一个30s后执行的定时器的时候,在30S内其实后面的代码是可以执行的,而不是过了30s后面代码才能执行,这就是一种异步。
  

  

缺点:当你后面的代码需要用到前面的东西的时候 如果用异步,那么后面的代码会在前面还没加载好就出来,可能会有问题。幸运的是我们可以解决。
  

  

解决:当你后面的代码需要用到前面的东西的时候,可以用条件判断来决定这些代码的执行,如果条件达成了就可以执行。
  

  

还拿上面的举个栗子
  

  
  

  var oBtn = document.getElementById('btn');
  oBtn.onclick = function(){
  var xhr = null;
  if(window.XMLHttpRequest){
  xhr = new XMLHttpRequest();
  }else{
  xhr = new ActiveXObject(‘Microsoft.XMLHTTP');
  }
  xhr.open('get','1.txt',true); //设置请求信息
  xhr.send();//提交请求
  //等待服务器返回内容 这里后面会具体讲,大概就是监听服务器的状态,先简单了解即可
  xhr.onreadystatechange = function() {
  if ( xhr.readyState == 4 ) { //如果对接收到的数据相应到,并解析完成
  alert( xhr.responseText ); //弹出内容
  }
  }
  }

  
  

在上面的代码中xhr.send()提交请求是需要时间的,所以必须要等到一定时间提交成功后,我们后面的才能正确获取到内容,所以这就是后面的代码正确执行,依赖于前面,但是如果用同步的话,我们后面那些不依赖这些前面代码的代码也没办法执行,体验就不好了,所以我们选择用异步,而对于这些依赖前面代码执行的代码,我们就进行判断
  

  

if ( xhr.readyState == 4 )就是判断如果数据响应到了,收到了,再弹出内容。(如果我们不判断,按照异步的原理,就会立马弹出来,获取数据需要时间,因为实际还没获取到数据,所以会弹出空,怕误解,所以这里我再强调下).

  

以上所述是小编给大家介绍的Ajax基础详解教程(一)的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对钱柜777娱乐官网网站的支持!

浅析正则表达式-替换原则(.NET) 图文

NET里面的正则表达式的替换原则,${ name },,$+,  上图表示了整个正则表达式匹配的内容有两个一个是匹配的3,另一个匹配的是6,)。

  浅析正则表达式-替换原则(.NET) 图文
  最近经常用到替换的东西所以就出来整理下,这里要分享的是正则表达式里面的替换原则,首先要声明的是这里提及到的替换原则是.NET里面的正则表达式的替换原则
  
  
  

一、开篇

  

最近经常用到替换的东西所以就出来整理下,这里要分享的是正则表达式里面的替换原则,首先要声明的是这里提及到的替换原则是.NET里面的正则表达式的替换原则。先看一下替换的定义替换是只能在替换模式中识别的语言元素。 它们使用正则表达式模式定义全部或部分用于替换输入字符串中的匹配文本的文本。 替换模式可以包含一个或多个替换以及本文字符。其实个人总结的替换的大致是这样的,替换的内容永远都是原文本的内容,通过正则表达式匹配出来文本,来通过组名或者组来进行对原文本的替换,替换的位置是用正则表达式匹配出来的内容。还有我已经在前面写了三篇关于正则的文章了,最近用到替换内容,详细分享来~,好了,废话不多说了下面进入正题吧~
  

  

二、替换原则

  

.NET下面定义了下表的替换元素:
  

  

  
  
  
  
  

替换

  
  
  

说明

  
  
  
  
  

$number

  
  
  

包括替换字符串中的由 number 标识的捕获组所匹配的最后一个子字符串,其中 number 是一个十进制值。

  
  
  
  
  

${ name }

  
  
  

包括替换字符串中由 (?<name> ) 指定的命名组所匹配的最后一个子字符串。

  
  
  
  
  

$$

  
  
  

包括替换字符串中的单个“$”文本。

  
  
  
  
  

$&

  
  
  

包括替换字符串中整个匹配项的副本。

  
  
  
  
  

$`

  
  
  

包括替换字符串中的匹配项前的输入字符串的所有文本。

  
  
  
  
  

$’

  
  
  

包括替换字符串中的匹配项后的输入字符串的所有文本。

  
  
  
  
  

$+

  
  
  

包括在替换字符串中捕获的最后一个组。

  
  
  
  
  

$_

  
  
  

包括替换字符串中的整个输入字符串。

  
  
  
  
  

  

①    $number替换元素

  

  通过一系列的例子来进行讲解这些正则表达式的用法以及替换原则。首先我们要提出一个需求,需求的内容是将一串匹配的数字变成千分位匹配。比如我们现在输入一串金额为123456789,怎么样将它转换成123,456,789这种形式。通过开篇里面我总结的内容来看,首先我们要将3,6这两个数字匹配出来,然后将3替换成3,将6替换成6,这样想要的效果就达到了,但是要注意的是后面也就是匹配这个数字的前提是后面跟的数字必须以3个数字为组的一串数字比如3后面是456789,(456),(789)是2个三位数字的,了解了匹配的内容之后,开始来写正则。我们仅仅之匹配一个字符放到组里面,那么就是(\d)这个数字否面跟的是一组或多组三位数字。那个就要用到零宽度断言,这样后面的正则就出来(\d)(?=(\d{3})+(?!\d)),正则表达式就这样写完了,接下来就要进行分析替换了。先看一下正则表达式匹配的内容。

  

  

  上图表示了整个正则表达式匹配的内容有两个一个是匹配的3,另一个匹配的是6。将正则表达式的模式调整为替换模式,替换模式后可以用上表格中的第一个方法进行替换,也就是已经将3,6分了组第0组或第1组都可以。详细看一下下图所示:

  

  

  其实总结到这里的替换原则其实是根据匹配的内容来进行替换的,因为第一张图匹配的内容有两组,第一组替换之后的内容是123,46789,第二次进行替换的时候是在前一次替换的基础上进行替换将6替换成6,这是内容就变成了123,456,789。

  

  ②   ${ name }替换原则

  

  将上面正则表达式变换一下就好了,给第一个组分配一个组,这样整个正则表达式就变成这个样子:(?’test’\d)(?=(\d{3})+(?!\d)),这是后替换的原则就变成这个样子,详情请见下图,原理都是一样的。

  

  

  ③    $$匹配元素

  

  $$匹配元素是在匹配的内容插入一个“$”字符,其实个人感觉两个$$就像当于是转意字符的意思。将元字符$变成普通字符。下面有一个需求就是我们匹配一串浮点数字,将浮点数字转换为货币。例如钱数为12.36,15.66,15.56这个正则表达式还算简单的,也就是([0-9.]+),先来看以下匹配的内容,如下图所示:

  

  

  匹配出来的三组内容,这个应该好理解了,下面的替换内容为:

  

  

  ④  $&替换元素

  

  $&表示的含义就是整个正则表达式的匹配的内容也就是第0组里面的内容。可以将上述的正表达式进行改造一下,在前面加一个数字5。正则表达式就变成了这样5([0-9.]+),那么原文本前面也加一个5这样就不会变太多。匹配结果如下所示:

  

  

  通过替换可以得到下面的结果:

  

  

  ⑤    $`和$’替换元素

  

这两个替换元素基本上是一样的只不过一个匹配的是前面的元素一哥匹配的是后面的元素,这里就根据一个例子进行讲解吧,比如一串字符中包含数字和因为字母,这时候想把这些汉字替换成汉字所在的位置前面的内容。这时候就需要用到$`根据一个例子来看一下这个的用法:(如下图所示)($`包括替换字符串中的匹配项前的输入字符串的所有文本。)

  

  

  当我们开启替换模式时,它会根据整个表达式匹配的内容进行替换。先来看一下替换的结果再来进行分析:

  

  

 

  

  详细分析根据在查找模式时,会有三组内容匹配出来了,也就是1,2,3这三个数字,首先替换的是1这个整体表达式匹配的内容,将1替换成原文本1前面的所有元素这时候整个字符串就变成了aabbaabbccdd2eeff3注意加红色的位置是替换的位置,这时候会进行下一轮替换,下一轮将2替换成原文本这里一直在强调的是原文本而不是上一次替换的内容,这时候我们来看一下原文本2前面的内容为aabb1ccdd2eeff3,这是替换之后的内容是aabbaabbccddaabb1ccddeeff3,这是红色的位置是替换2之后的内容,3前面内容是aabb1ccdd2eeff3这时候将3替换之后就是这个文本aabbaabbccddaabb1ccddeeffaabb1ccdd2eeff,替换完毕。

  

  Ok分析到这里吧其他的原则都是一样的,等大家自己去分析吧~~,通过上面的分析.NET再也不担心我的正则表达式替换用不好了~~~

  

 

  

三、结束语

  

       如果上述分析内容有错误还望各位指出,小丁再次谢过了。这里我想说的是Msdn里面资料还是很全的,大家可以学习的话首选还是Msdn。

基于jQuery实现多标签页切换的效果(web前端开发)

这里,实现多标签页效果的方法有两个,一个是基于DOM的,另一个是基于jquery的,此次我写的是一个对于一个电话套餐的不同,显示不同的标签页,zIndex=”1″;。

  这篇文章主要介绍了基于jQuery实现多标签页切换的效果(web前端开发)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  
  
  

这里,实现多标签页效果的方法有两个,一个是基于DOM的,另一个是基于jquery的,此次我写的是一个对于一个电话套餐的不同,显示不同的标签页

  

方法一:

  

首先,我们要把页面的大体框架和样式写出来,html和css代码如下:

  
  

  <ul id="tab">
  <li id="tab1" onclick="show(1)">10元套餐</li>
  <li id="tab2" onclick="show(2)">30元套餐</li>
  <li id="tab3" onclick="show(3)">50元包月</li>
  </ul>
  <div id="container">
  <div id="content1" style="z-index: 1;">
  10元套餐详情:<br /> 每月套餐内拨打100分钟,超出部分2毛/分钟
  </div>
  <div id="content2">
  30元套餐详情:<br /> 每月套餐内拨打300分钟,超出部分1.5毛/分钟
  </div>
  <div id="content3">
  50元包月详情:<br /> 每月无限量随心打
  </div>
  </div>

  
  

css样式代码如下:

  
  

  *{
  margin:0;
  padding: 0;
  }
  #tab li{
  float: left;
  list-style: none;
  width: 80px;
  height: 40px;
  line-height: 40px;
  cursor: pointer;
  text-align: center;
  }
  #container{
  position: relative;
  }
  #content1,#content2,#content3{
  width: 300px;
  height: 100px;
  padding:30px;
  position: absolute;
  top: 40px;
  left: 0;
  }
  #tab1,#content1{
  background-color: #ffcc00;
  }
  #tab2,#content2{
  background-color: #ff00cc;
  }
  #tab3,#content3{
  background-color: #00ccff;
  }

  
  

形成的静态界面如下:

  

  

现在,开始写javascript代码了,实现动态效果,点击哪个标签,对应的页面会显示出来,代码如下:

  
  

  <script>
  function show(n){
  var curr=document.querySelector("div[style]");
  curr.removeAttribute("style");
  document.getElementById("content"+n)
  .style.zIndex="1";
  }
  </script>

  
  

页面效果如下:

  

点击30元套餐,出现的界面:

  

  

点击50元包月的时候,出现的界面:

  

  

方法二:基于jquery,首先我们要在html页面的中引入jquery-1.11.3.js文件

  

html代码(css样式代码同方法一):

  
  

  <ul id="tab">
  <li id="tab1" value="1">10元套餐</li>
  <li id="tab2" value="2">30元套餐</li>
  <li id="tab3" value="3">50元包月</li>
  </ul>
  <div id="container">
  <div id="content1" style="z-index: 1;">
  10元套餐详情:<br /> 每月套餐内拨打100分钟,超出部分2毛/分钟
  </div>
  <div id="content2">
  30元套餐详情:<br /> 每月套餐内拨打300分钟,超出部分1.5毛/分钟
  </div>
  <div id="content3">
  50元包月详情:<br /> 每月无限量随心打
  </div>
  </div>

  
  

js代码如下:

  
  

  <script>
  $("#tab>li").click(function(){
  console.log(this);
  $("#content"+$(this).val()).attr('style','z-index:1').siblings("div").removeAttr("style");
  });
  </script>

  
  

最终实现的效果同方法一

  

以上所述是小编给大家介绍的基于jQuery实现多标签页切换的效果(web前端开发),希望对大家有所帮助,如果大家想离家近更多内容敬请关注钱柜777娱乐官网!

jquery加载页面的方法(页面加载完成就执行)

,addClass(“even”); //这个是jquery代码 }; 这段代码会在整个页面的document全部加载完成以后执行,不幸的这种方式不仅要求页面的DOM tree全部加载完成,而且要求所有的外部图片和资源全部加载完成。

  jquery加载页面的方法(页面加载完成就执行),建议大家看下windows.onload与$(document).ready之间的区别。
  
  
  1、$(function(){
  $(“#a”).click(function(){
    //adding your code here
  });
});
2、$(document).ready(function(){
  $(“#a”).click(function(){
    //adding your code here  
  });
});
3、window.onload = function(){
  $(“#a”).click(function(){
    //adding your code here
  });
}
html代码为<input type=”button” id=”a”>点击</input>,且页面需要引用jquery的js文件

一般的加载页面时调用js方法如下:

window.onload = function() {
$(“table tr:nth-child(even)”).addClass(“even”); //这个是jquery代码
};

这段代码会在整个页面的document全部加载完成以后执行。不幸的这种方式不仅要求页面的DOM tree全部加载完成,而且要求所有的外部图片和资源全部加载完成。更不幸的是,如果外部资源,例如图片需要很长时间来加载,那么这个js效果就会让用户感觉失效了。

但是用jquery的方法:

$(document).ready(function() {

// 任何需要执行的js特效
$(“table tr:nth-child(even)”).addClass(“even”);
});

就仅仅只需要加载所有的DOM结构,在浏览器把所有的HTML放入DOM tree之前就执行js效果。包括在加载外部图片和资源之前。

还有一种简写的方式:

$(function() {

// 任何需要执行的js特效
$(“table tr:nth-child(even)”).addClass(“even”); });

php使用get_class_methods()函数获取分类的方法

结合实例形式分析了get_class_methods()函数获取类中成员方法的使用技巧,{,},close_window,open_window,。

  这篇文章主要介绍了php使用get_class_methods()函数获取分类的方法,结合实例形式分析了get_class_methods()函数获取类中成员方法的使用技巧,需要的朋友可以参考下
  
  
  

本文实例讲述了php使用get_class_methods()函数获取分类的方法。分享给大家供大家参考,具体如下:

  
  

  <?php
  /*
  * Created on 2016-7-20
  */
  class Window    //首先定义一个类
  {
  var $state;    //窗户的状态
  function close_window()   //关窗户方法
  {
  $this->state="close";   //窗户的状态为关
  }
  function open_window()   //开窗户方法
  {
  $this->state="open";   //窗户的状态为开
  }
  }
  $temp=get_class_methods("Window");
  echo "类Window中的方法有以下几个:";
  echo "<p>";
  for($i=0;$i<count($temp);$i++)
  {
  echo $temp[$i].",";
  }
  ?>
  
  

  
  

运行结果如下:

  

类Window中的方法有以下几个:
  close_window,open_window,

  

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总》

  

希望本文所述对大家PHP程序设计有所帮助。

php如何执行非缓冲查询API

while ($row = $uresult->fetch_assoc()) {,$uresult = mysql_unbuffered_query(“SELECT Name FROM City”);。

  这篇文章主要为大家介绍了三种php执行非缓冲查询API,非缓冲查询适应于大数据量查询,php如何执行非缓冲查询,感兴趣的小伙伴们可以参考一下
  
  
  

对于PHP的缓冲模式查询大家都知道,下面列举的例子是如何执行非缓冲查询API。

  

非缓冲查询方法一: mysqli

  
  

  <?php
  $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
  $uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);
  
  if ($uresult) {
  while ($row = $uresult->fetch_assoc()) {
  echo $row['Name'] . PHP_EOL;
  }
  }
  $uresult->close();
  ?>
  
  

  
  

非缓冲查询方法二: pdo_mysql

  
  

  <?php
  $pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass');
  $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
  
  $uresult = $pdo->query("SELECT Name FROM City");
  if ($uresult) {
  while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) {
  echo $row['Name'] . PHP_EOL;
  }
  }
  ?>
  
  

  
  

非缓冲查询方法三: mysql

  
  

  <?php
  $conn = mysql_connect("localhost", "my_user", "my_pass");
  $db  = mysql_select_db("world");
  
  $uresult = mysql_unbuffered_query("SELECT Name FROM City");
  if ($uresult) {
  while ($row = mysql_fetch_assoc($uresult)) {
  echo $row['Name'] . PHP_EOL;
  }
  }
  ?>
  
  

  
  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持钱柜777娱乐官网。