HTC简单教程

 更新时间:2016年9月20日 19:06  点击:1922

在微软IE 5.0版本的浏览器发布以前,网页编程中面对的最大挑战就是不能轻易地创建组件,以达到代码重用和多页面共享的目的。这个问题一直困扰着DHTML(动态 HEML)的网页编程者。他们只能不断地重复书写HTML、CSS和javascript的代码,以满足多个页面上的重复或相似的功能。自IE 5.0浏览器发布后,这种情况得到了改善,它带给我们一个新的指令组合方法,可把实现特定功能的代码封装在一个组件内,从而实现多页面的代码重用,使网页编程进入一个全新的天地。这个新的技术就是我们要谈到的DHTML中的“行为”(Behaviors)。
  “行为”作为一个简单易用的组件,它封装了页面上特定的功能或动作。当把一个“行为”附到WEB页面中的一个元件上时,这个元件的原有行为就会有所改变。因此,网页编程者可以开发通用的DHTML指令,并改变原有对象的一些属性,用“行为”来增强一个对象的功能,同时也简化了页面的HTML代码。而且“行为”的创建和使用也非常简单方便,所需的知识也只是原来已经习惯使用的CSS样式表、HTML指令和javascript脚本语言。只要你对此有所了解,有过实际编程的经历,学习并掌握“行为”的使用完全没有问题。我们将以一个改变字体效果的“行为”组件为例来说明如何编写和使用一个“行为”,并体验“行为”给页面编辑带来的优点和方便之处。

  首先新建一个名为font_efftce.htc的文本文件,组成“行为”组件的文件都是以.htc为扩展名,这个文件中的内容就是我们对这个“行为”的描述。它的创建和使用步骤如下:
(1)首先给这个“行为”增加几个事件响应,语句书写格式如下:
< PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="glowit()" / >
< PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="noglow()" / >
< PUBLIC:ATTACH EVENT="onmousedown" ONEVENT="font2yellow()" / >
< PUBLIC:ATTACH EVENT="onmouseup" ONEVENT="font2blue()" / >
  “EVENT”对应所需事件名,在这里分别为:onmouseover,onmouseout,onmousedown,onmouseup四个事件名,你当然可以再增加其它的事件名来满足你的特定需求。“ONEVENT”对应着个自的事件句柄,即事件触发时所调用的函数名称。glowit()函数使字体周围产生一个红色的辉光。noglow()函数是消除字体的辉光效果。Font2yellow()函数是把字体颜色改为黄色。Font2blue()函数是把字体颜色改为蓝色。四个事件的定义都是相似的。
(2)接下来,再给这个“行为”增加二个“方法”定义,内容如下。
< PUBLIC:METHOD NAME="move_down" / >
< PUBLIC:METHOD NAME="move_right" / >
  “NAME”参数对应的是给定的“方法”名称。move_down和move_right分别是向下和向右移动的“方法”对应的函数名称。注意,在方法名的后面不要带“( )”括号,即不要写成“move_down()”这个样子,这在“方法”定义的语法上是不允许的。

(3)接下来的工作就是在我们熟悉的DHTML环境下,用javascript脚本语句编写“事件句柄”和“方法”所对应的函数内容,实现预期的效果。具体内容参考下面的源程序。其中的“element”参数指的是这个“行为”所附着的对象,因为“行为”总是被附着到页面的元件上面,并通过这个元件发挥作用。其它语句都是DHTML的编程内容,就不再多说了。如有不明之处,可参考微软的MSDN开发文档中有关IE浏览器的内容,上面有详细的DHTML编程参考内容、属性和方法使用说明等,并包含了大量的文章和举例程序。经常访问微软的MSDN文档,尤其对于初学者来说是一个良好的学习习惯,你几乎可以得到任何你想找的答案,它的网址为:http://msdn.microsoft.com/ie/。
  完整的“行为”文档“font_effect.htc”的内容如下:
////////////////////////////“行为”文档开始///////////////////////////////////
//给“行为”增加四个鼠标事件
< PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="glowit()" / >
< PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="noglow()" / >
< PUBLIC:ATTACH EVENT="onmousedown" ONEVENT="font2yellow()" / >
< PUBLIC:ATTACH EVENT="onmouseup" ONEVENT="font2blue()" / >
//给“行为”定义二个方法
< PUBLIC:METHOD NAME="move_down" / >
< PUBLIC:METHOD NAME="move_right" / >
< SCRIPT LANGUAGE="JScript" >
//定义一个保存字体颜色的变量
var font_color;
//定义向下移动文字的方法
function move_down()
{
element.style.posTop+=2;
}
//定义向右移动文字的方法
function move_right()
{
element.style.posLeft +=6;
}
//定义鼠标onmouseup事件的调用函数
function font2blue(){
if (event.srcElement == element)
{
element.style.color='blue';
}
}
//定义鼠标onmousedown事件的调用函数
function font2yellow(){
if (event.srcElement == element)
{
element.style.color='yellow';
}
}

//定义鼠标onmouseover事件的调用函数
function glowit()
{
if (event.srcElement == element)
{
font_color=style.color;
element.style.color='white';
element.style.filter="glow(color=red,strength=2)";
}
}

//定义鼠标onmouseout事件的调用函数
function noglow()
{
if (event.srcElement == element)
{
element.style.filter="";
element.style.color=font_color;
}
}
< /SCRIPT >
//////////////////“行为”文档结束///////////////////////////////

(4)如何在一个页面上使用“行为”
  在页面上使用“行为”组件,并不需要学习新的知识。所需的知识的也不过是CSS样式表和HTML的设置而已,请看下面的语句。
< STYLE >
.myfilter{behavior:url(font_effect.htc);position:relative;font-weight:bold;width=180;left:0;}
< /STYLE >
  可以看出,这和以前我们已经熟知的样式表设置完全相同。上面的语句定义了一个样式名:“myfilter”,其中对我们来说比较新的内容是:“behavior:url(font_effect.htc);”,“behavior”是新增的“行为”属性名,这就是“行为”在样式表中的设置方式。括号中的内容是“行为”文档的文件名,本例中表明“行为”文档在与页面文件在同一个目录下,如果“行为”文档安置在其它目录下,在此参数的前面要加上相应的路径名,以保证可以正确地定位“行为”文档的位置。此“样式”中的其它内容就是普通的样式属性设置,可根据你的需要增减,但在此例中,由于使用了“glow”滤镜效果,至少要设置一个宽度(width)属性。通过以上的样式指定,我们就有了一个名为:“myfilter”的样式,它附带一个有字体变化效果的“行为”。如果你想要在一个页面元件上使用这个附带“行为”的样式,同样也很简单,只要把这个“样式名”安置在元件的属性设置区域即可,见下面的语句。
< span id="myspan" class='myfilter' >行为产生的文字效果< /span >< br >
< span class='myfilter' >鼠标指向后产生辉光< /span >
  以上语句里面没有什么新的内容,class='myfilter'就是我们所熟悉的样式设置。在第一个“span”标记的属性中还定义了一个“id”标记,稍后就会看到,这是用来演示调用“行为”内的“方法”而设置的。这样设置后,“span”元件中的内容就可以显示出“行为”组件内的预定效果:
1. 鼠标指针移动到文字内容上时,在文字周围产生红色的辉光效果,同时文字变成白色。
2. 当鼠标按钮按下时,文字颜色改变为黄色。
3. 鼠标按钮抬起后,文字颜色又改变为蓝色。
4. 当鼠标指针移动到文字区域以外时,去掉了红色辉光效果,文字恢复原样。
  另外,我们在定义“行为”时设置了二个“方法”,“move_down”和“move_right”。为调用这二个“方法”,定义了二个按钮:
< button onclick="myspan.move_right();" >向右移动第一行文字< /button >< br >
< button onclick="myspan.move_down();" >向下移动第一行文字< /button >
  用按钮的onclick事件去调用这二个“方法”,先前定义的“id”标记就作为元件的对象名称,用“myspan.move_down”来调用“方法”,操纵这个对象。可以看到,在按下相应的按钮后,会使第一行的文字产生向下或向右的移动。虽然只是用第一行文字做了示范,实际上,只要做相应的设置,你也可以移动其它对象。页面源文档的完整内内容如下:
< html >
< HEAD >
< TITLE >行为效果演示< /TITLE >
< STYLE >
.myfilter{behavior:url(font_effect.htc);position:relative;font-weight:bold;width=180;left:0;}
< /STYLE >
< /HEAD >
< BODY >
< span id="myspan" class='myfilter' >行为产生的文字效果< /span >< br >
< span class='myfilter' >鼠标指向后产生辉光< /span >< br >
< span class='myfilter' >同时文字变白< /span >< br >
< span class='myfilter' >按下鼠标后文字变黄< /span >< br >
< span class='myfilter' >抬起鼠标后文字变蓝< /span >< br >
< span class='myfilter' >鼠标离开后文字恢复原状< /span >< br >
< button onclick="myspan.move_right();" >向右移动第一行文字< /button >< br >
< button onclick="myspan.move_down();" >向下移动第一行文字< /button >
< /BODY >
< /html >
  通过以上的简单介绍,可以看出,我们很容易地在一个“行为”中同时组合了多种文字变化效果,通过简单的“样式”设置,任意地将它与页面元件相关连,体现了“行为”组件的优点和强大功能。一个“行为”组件,不仅能在一个页面内重复使用,也可供同一站点上的所有页面使用。试想一下,如果不使用“行为”来完成上述的效果,虽然可以在页面内调用一组预定的函数来完成同样的功能,但页面内每一个使用文字效果的元件都要附加四个鼠标事件,如果在多个页面内使用相同的效果,被调用的函数也需要在每一个页面内重复设置。相比之下,孰优孰劣是很明显的。所以,使用“行为”组件,可以制作出简洁、高效、通用和便于维护的页面。本文的举例只是为了说明“行为”组件的编写和使用过程,使读者对“行为”编程有一个概括的了解,并以此基础制作出自己所需要的“行为”组件,或直接引用满足个人需要的现成“行为”组件,因为“组件共享”的概念也是“行为”开发者的初衷。最后,愿本文能起到“抛砖引玉”的目的,使读者步入精彩的DHTML网页编程天地。

说明:
HTC是HTML component的缩写,
是IE5.0的主要扩展之一,
除了具备一般组件的可重用优点之外,
还具有易于开发使用等优点,
因为需要引入外部文件,这里就不举例了,宝库里有例子.

控件和组件
HTC提供了一个简单机制以在脚本中实现DHTML行为。一个HTC文件和HTML文件没有任何差别,并且以“.htc”为后缀,

可以使用HTC实现以下行为:
设定属性和方法。通过“PROPERTY”和“METHOD”元素定义
设置自定义事件。通过“EVENT”元素实现,用该元素的“fire()”方法释放事件,
通过“createEventObject()”方法设置事件环境。
访问所包含该HTC的的HTML页的DHTML对象模型,使用HTC的“element"对象,返回
一个附加行为的元素,使用该对象,HTC可以访问包含文挡及它的对象模型(属性、方法、事件)。
收取通知,使用”ATTACH“元素实现,浏览器不但通知HTC标准的DHTML事件,而且通知HTC两种特殊事件:oncontentready事件和ondocumentready事件 。


定义标记和命名空间
HTC的基础是自定义标记
要为页面定义自定义标记,必须为该标记提供命名空间
要使用该标记必须在该标记前加上正确的XML命名空间前缀
例如:

定义一个新标记RIGHT的例子
代码片断如下:<HTML XMLNS:DOCJS>
<HEAD>
<STYLE>
@media all {
DOCJS:RIGHT {text-align:right; width:100}
}
</STYLE>
</HEAD>
<BODY>
<DOCJS:RIGHT>
Read Doc JavaScript's columns, tips, tools, and tutorials
</DOCJS:RIGHT>
</BODY>
</HTML>


可以在单个HTML标记
中定义多个命名空间:
<HTML XMLNS:DOCJS XMLNS:DOCjavascript>

组件定义
组件的名字是由HTC文档里定义在第一行的XML命名空间决定的
该页不用调用其他的HTC话,就只有一个命名空间定义
实际上,HTML组件的定义就是自定义标签行为的定义
该行为包括一个属性和一个事件:

<HTML xmlns:MyTag>
<HEAD>
<PUBLIC:COMPONENT tagName="MyTag">
<PROPERTY NAME="value"></PROPERTY>
<ATTACH EVENT="oncontentready" ONEVENT="fnInit()"<>/ATTACH>
</PUBLIC:COMPONENT>
<STYLE>//为组件定义样式表
.cssMyTag{
}
</STYLE>
<SCRIPT language=javascript>
function MyTagBehavior1(){} //为组件定义方法
</SCRIPT>
</HEAD>
<BODY onclick=MyTagBehavior1> //为组件定义响应事件
</BODY>
</HTML>


其中的oncontentready是在组件被调用者完全导入时触发
再看看fnInit()

function fnInit() {
document.body.innerHTML = element.value;//设定组件显示内容
document.body.className = "clsMyTag"; //设定显示样式表,
defaults.viewLink = document; //使本组件对其他文档可见
element.aProperty = element.value; //设置组件的属性值
}


组件的调用

<HTML xmlns:MyCom>
<HEAD>
<?IMPORT NAMESPACE="MyCom" IMPLEMENTATION="MyTag.htc"/>
</HEAD>
<BODY>
<MyCom:MyTag></MyCom:MyTag>
</BODY>
</HTML>

<html>
<head>
<title>ThreeAnts Player</title>
<base target="_self">
<meta name="author" content="episome">
<meta name="keywords" content="Player,cdf,desktop toy">
</head>
<style>
body{
 border:#0099cc 2px solid;
 background-color:WhiteSmoke;
 margin:5px;
}
body,td{
 font-family:Tahoma,Georgia;
 font-size: 8pt;
 white-space: nowrap;
}
#percent{
 font-size:7pt;
 color:green;
 font-weight: bold;
}
.ctrlBar td{
 filter: Alpha(Opacity=100, FinishOpacity=30, Style=1, StartX=0, StartY=0, FinishX = 0, FinishY = 50);
 font-weight: bold;
 font-size: 7pt;
 color:darkblue;
 border:#0099cc 1px solid;
 background-color:#FFF;
}
A:visited,A:link{
 color:darkblue;
 cursor: hand;
 text-decoration: none;
}
A:hover{
 color:red;
 cursor: hand;
 text-decoration: none;
}
.content td{
 width:100%;
 table-layout: fixed;
 filter: Alpha(Opacity=100, FinishOpacity=40, Style=1, StartX=0, StartY=0, FinishX = 0, FinishY = 50);
 cursor: hand;
 border:#0099cc 1px solid;
 border-top:0px;
 background-color:white;
 height: 24px;
}
.hilite_content td{
 width:100%;
 table-layout: fixed;
 color:red;
 cursor: hand;
 border-right:#0099cc 1px solid;
 border-left:#0099cc 1px solid;
 border-bottom:#0099cc 1px solid;
 background-color:#ddedfb;
 height: 24px;
}
</style>
<script language="JavaScript">
var scrollcount=0;
var dragy;
var scrollarrowtop;
function initdrag() {
 scrollcount=1;
 dragy=event.clientY;
 document.body.setCapture();
}
function startdrag() {
 if (scrollcount==1) {
  window.scrollBy(0,dragy-event.clientY);
  document.body.style.cursor='hand';
  dragy=event.clientY;
 }
}
function enddrag() {
 document.body.style.cursor='';
 scrollcount=0;
 document.body.releaseCapture();
}
</script>
<body
scroll=no
ondragstart = "return false;"
onselect = "return false;"
onselectstart="return false;"
onmousedown="initdrag()"
onmousemove="startdrag()"
onmouseup="enddrag()"
>
<script>
var PlayType = ",wma,wmv,avi,mpg,mpeg,m1v,mp2,wav,mp3"
var nowPlayingID
var lastSelected
var lastPlayed

var si = setInterval("Timer()",1000)
function Timer(){
 percent.innerHTML = Math.round((Player.currentposition/Player.selectionend)*100)+"%"
 ttt.style.width = Math.round((Player.currentposition/Player.selectionend)*100)+"%"
 if((Player.currentposition >= Player.selectionend) && Player.currentposition!=0){
  clearInterval(si)
  playNextMusic()
  si = setInterval("Timer()",1000)
 }
}
function mute(){
 Player.mute = !Player.mute
}
//检测载入的文件类型
function CheckType(){
 var s = FileObj.value.split(".");
 return PlayType.indexOf(s[s.length-1].toLowerCase())>0?true:false;
}
// open
function openMusic(){
  FileObj.click();
  if(FileObj.value != "" && CheckType()){
   FileObj.value.replace("\","\\");
   addMusic(FileObj.value);
   FileObj.value = "";
  }
}
// Add music
function addMusic(musicSrc){
 var newTR=playListTable.insertRow();
 var newTD=newTR.insertCell();
 newTR.className = "content";
 newTR.onclick = function(){
  if (lastSelected != null){
   lastSelected.className = "content"
  }
  this.className = "hilite_content"
  lastSelected = this
 }
 newTD.ondblclick = function(){
  playMusic(this.id)
 }
 newTD.oncontextmenu = function(){
  playListTable.deleteRow(this.parentElement.rowIndex)
 }
 musicTitle = musicSrc.split("\");
 musicTitle = musicTitle[musicTitle.length-1].split(".");
 musicTitle = musicTitle.slice(0,musicTitle.length-1);
 newTD.innerHTML = musicTitle
 newTD.musicName = musicTitle
 newTD.musicSrc  = musicSrc
 newTD.id  = "m" + newTR.rowIndex
}
// play
function playMusic(id,currentposition){
 if (lastPlayed != null){
  lastPlayed.innerHTML = lastPlayed.musicName
 }
 if(!document.all[id]){
  id = "m1"
 }
 TD = eval(id)
 TD.innerHTML += "&nbsp;<a id=percent></a>"
 lastPlayed = TD
 Player.filename = TD.musicSrc
 nowPlayingID = id
 Player.currentposition = (currentposition == undefined) ? 2 : currentposition
}
// play next music
function playNextMusic(){
 Player.stop()
 newID = parseInt(nowPlayingID.replace("m",""))+1
 playMusic("m"+newID)
}
// play prev music
function playPrevMusic(){
 Player.stop()
 newID = parseInt(nowPlayingID.replace("m",""))-1
 playMusic("m"+newID)
}
// cookie
function saveCookie(name,value,days) {
 if (days) {
  var date = new Date();
  date.setTime(date.getTime()+(days*24*60*60*1000))
  var expires = "; expires="+date.toGMTString()
 }
 else expires = ""
 document.cookie = name+"="+value+expires+"; path=/"
}
function readCookie(name) {
 var nameEQ = name + "="
 var ca = document.cookie.split(';')
 for(var i=0;i<ca.length;i++) {
  var c = ca[i];
  while (c.charAt(0)==' ') c = c.substring(1,c.length)
  if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length)
 }
 return null
}
function deleteCookie(name) {
 saveCookie(name,"",-1)
}
// Load play list from Cookie
window.onload = function(){
 cookiePlayList = readCookie("cookiePlayList")
 cookiePlayList = cookiePlayList.split(",");
 for(x in cookiePlayList){
  addMusic(cookiePlayList[x])
 }
 cookieNowPlayingID = readCookie("cookieNowPlayingID")
 cookieCurrentposition = readCookie("cookieCurrentposition")
 playMusic(cookieNowPlayingID,cookieCurrentposition)
}
// Save play list & now playing
window.onunload = function(){
 if(Player.filename!="" && Player.filename!=null){
  saveCookie("cookieNowPlayingID",nowPlayingID,100)
  saveCookie("cookieCurrentposition",Player.currentposition,100)
 }
 var playList = new Array()
 for(i=1;i<playListTable.rows.length;i++){
  playList.push(playListTable.rows[i].cells[0].musicSrc)
 }
 saveCookie("cookiePlayList",playList,100)
}
window.onerror = function(){
 return true;
}
</script>
<table cellpadding="3" cellspacing="0" width='100%' id="playListTable" onselectstart="return false;">
 <tr class="ctrlBar">
  <td>
   <a href="javascript:openMusic()">open</a>
    | <a href="javascript:playPrevMusic()">prev</a>
    | <a href="javascript:Player.play()">play</a>
    | <a href="javascript:Player.pause()">pause</a>
    | <a href="javascript:Player.stop()">stop</a>
    | <a href="javascript:playNextMusic()">next</a>
   <!--  | <a href="javascript:mute()">mute</a> -->
  </td>
 </tr>
</table>
<table cellspacing="1" width='100%' onselectstart="return false;" style="border:#0099cc 1px solid;">
 <tr class="ctrlBar">
  <td id="ttt" style="background-color:black;height:12px;width:1px;"></td>
  <td style="background-color:silver;"></td>
 </tr>
</table>
<object classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="Player" width="0" height="0">
 <param name="autoplay" value="1">
</object>
<input type="file" id="FileObj" style="display:none">
</body>
</html>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>New document</title>
<style type="text/css">
<!--
div#div1
{
 width:500px;height:100px;background-color:#aaa;
 color:#fff;font-size:12px;padding:20px;
 filter : progid:DXImageTransform.Microsoft.gradient(gradientType=1,startColorStr=#0000ff,endColorStr=#ffffff);
}
-->
</style>
</head>
<body>
<div id="div1">
Gradient滤镜效果。
</div>
</body>
</html>

1.加入收藏,设为首页:

<a href="javascript:window.external.AddFavorite('http://www.bydragon.com','百龙设计工作室')">加入收藏</a>

<a
href="#"
onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http:
//www.bydragon.com');">设为首页</a>


2.2秒后关闭当前页:
<script language="JavaScript">
<!--
  setTimeout('window.close();',2000);
-->
</script>


3.IE地址栏前换成自己的图标:
在首页<head></head>之间加上如下代码
<link rel="Shortcut Icon" href="favicon.ico">

4.在收藏夹中显示出你的图标:
在首页<head></head>之间加上如下代码
<link rel="Bookmark" href="favicon.ico">

5.改变滚动条颜色:
在首页<head></head>之间加上如下代码
<style>
body{
scrollbar-face-color:147faf; scrollbar-shadow-color:147faf;
scrollbar-highlight-color:147faf; scrollbar-3dlight-color:ffffff;
scrollbar-darkshadow-color:ffffff; scrollbar-track-color:ffffff;
scrollbar-arrow-color:ffffff;}
</style>

scrollbar-face-color表示滚动条面的颜色
scrollbar-shadow-color表示滚动条右斜面的颜色
scrollbar-highlight-color表示滚动条左斜面的颜色
scrollbar-3dlight-color表示滚动条上边和左边边沿的颜色
scrollbar-darkshadow-color表示滚动下边和右边边沿的颜色
scrollbar-track-color表示滚动条底板的颜色
scrollbar-arrow-color表示滚动条两端箭头的颜色

6.鼠标移到单元格颜色改变:
<table width=200><tr>
<td
bgcolor="#738278" style="cursor:hand"
onMouseOver="this.style.backgroundColor='red'"
onMouseOut="this.style.background='#738278'">移

解决方案                                                 解决方案
                基于全IP网络的FMC                               基于全IP网络的FMC
                核心网                                                    无线接入网
                无线接入网                                             核心网
                数据通信                                                 数据通信
                终端                                                        终端

以上是我现在列表的样式,我想问下,怎么样能实现下面的这种样式,调了半天也不行。

解决方案                                                 解决方案

基于全IP网络的FMC                               基于全IP网络的FMC
核心网                                                    无线接入网
无线接入网                                             核心网
数据通信                                                 数据通信
终端                                                        终端
实现的方法如下:
<style>
ul {margin:0;padding:0}
li {margin:0;padding:0}
</style>
[!--infotagslink--]

相关文章

  • Painter绘制红衣喝酒男水粉画效果教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一说绘制红衣喝酒男水粉画效果的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • iPhone6怎么激活?两种苹果iPhone6激活教程图文详解

    iPhone6新机需要激活后才可以正常使用,那么对于小白用户来说,iPhone6如何激活使用呢?针对此问题,本文就为大家分别介绍Wifi无线网络激活以及iPhone6连接电脑激活这两种有效的方法,希望本文能够帮助到大家...2022-09-14
  • Photoshop制作雨中野外孤独行走的一头牛海报教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说下制作雨中野外孤独行走的一头牛海报的教程,各位想知道具体制作方法的使用者们,大家就快来看一看小编给...2016-09-14
  • Painter绘制帅气卡通魔法王子漫画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制帅气卡通魔法王子漫画的具体教程,各位想知道绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • Illustrator鼠绘堆雪人的孩童矢量插画教程

    今天小编在这里就来给各位Illustrator的这一款软件的使用者们来说说鼠绘堆雪人的孩童矢量插画的教程,各位想知道具体绘制方法的使用者们,那么各位就快来跟着小编来看看...2016-09-14
  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • 美图秀秀给照片天空加蓝天白云教程一览

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下究竟该怎么给照片天空加蓝天白云的教程,各位想知道具体制作步骤的,那么下面就来跟着小编一起看看吧。 ...2016-09-14
  • llustrator绘制扁平化风格卡通警察护士空姐肖像教程

    今天小编在这里就来给llustrator的这一款软件的使用者们来说一说绘制扁平化风格卡通警察护士空姐肖像的教程,各位想知道具体绘制步骤的使用者们,那么下面就快来跟着小编...2016-09-14
  • Illustrator绘制一个方形的录音机图标教程

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一下绘制一个方形的录音机图标的教程,各位想知道具体绘制方法的使用者们,那么下面就来看一下小编给大家分...2016-09-14
  • photoshop简单制作一个搞笑的换脸表情包教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说一说简单制作一个搞笑的换脸表情包的教程,各位想知道具体制作方法的使用者们,那么大家就快来看一看教程吧。...2016-09-14
  • photoshop给手绘画调色变换场景后期教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说说给手绘画调色变换场景的后期教程,各位想知道具体后期处理步骤的使用者们,那么大家就快来跟着小编来看...2016-10-02
  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • 美图秀秀让你胸丰满起来处理教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说一下让你胸丰满起来的处理教程,各位想知道具体处理步骤的,那么下面就快来跟着小编一起看一下教程吧。 给...2016-09-14
  • Painter绘制雷神传插画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制雷神传插画的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看看绘制方法吧。 ...2016-09-14
  • MySQL中的联合索引学习教程

    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进...2015-11-24
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • 美图秀秀制作隔离区聊天背景教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下制作隔离区聊天背景的教程,各位想知道具体方法的,那么下面就快来跟着小编一起看一看吧。 给各位美图秀...2016-09-14
  • photoshop素材合成古典园林场景制作教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说说用素材合成古典园林场景教程,各位想知道到底该怎么制作的,那么就快来一起看一下吧。 给各位photoshop...2016-09-14