文档中心 > 淘宝达人

HTML编辑器

实现html editor可以直接使用U站的官方组件。不需要写javascript,直接使用以下代码就能在自己的页面中嵌入editor组件。

在页面上添加class为kg_editorContainer的div,div包含class为ks-editor-textarea的textarea即可。 HTML代码:

<div class="kg_editorContainer"   data-config='{"width" : "你的组件宽度" , "height": "你的组件高度" }'>
<textarea name='content' class="ks-editor-textarea" tabindex="0" style="width:733px;height: 400px;">           
在这里编辑
</textarea>
</div>

其中textarea的class属性不可以修改,其他的属性和里面的内容都可以修改。(name可以修改成你要提交的参数名)

通过定义class为kg_editorContainer div的data-config属性可以定义编辑器的高度和宽度属性

data-config : {

"width" : "你的组件宽度" ,

"height": "你的组件高度"

}

效果如下所示:

瀑布流

瀑布流组件的Demo地址:http://uzappfunctiontest.uz.taobao.com/view/js/hand/waterfallStream.php?spm=0.0.0.0.QQreax

实现以上地址中的功能需要以下代码。

HTML代码:

<script src="/assets/javascripts/waterfall.js"></script>

<div class="wrap" name="wrap active">

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w1.jpg style="height:auto";'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w1.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w2.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w2.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w3.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w3.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w4.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w4.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w5.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w5.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w6.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w7.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w8.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w8.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w9.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w9.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w1.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w1.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w2.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w2.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w3.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w3.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w4.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w4.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w5.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w5.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w6.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w7.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w8.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w8.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w9.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w9.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w3.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w3.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w4.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w4.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w5.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w5.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w6.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w7.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w8.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w8.jpg</a></span></h3>

 </div>

 <div class='mode'>

  <p class='pic'>

   <a href='#'><img src=/assets/images/w9.jpg style='height:auto';'/></a>

  </p>

  <h3 class='tit'><span><a href='#'>w9.jpg</a></span></h3>

 </div>

</div>

js代码:

var DOM = KISSY.DOM  ;
var $id = function(o){ return DOM.query("."+o)[0];};
var warpWidth = 220; //格子宽度
var margin = 14; //格子间距
function sort(el,childTagName){
         var h = []; //记录每列的高度
         var box = el.getElementsByTagName(childTagName);
         var minH = box[0].offsetHeight;
         var boxW = box[0].offsetWidth+margin;
         var n = document.documentElement.offsetWidth / boxW | 0; //计算页面能排下多少Pin
         el.style.width = n * boxW - margin + "px";
   DOM.addClass(el,"isVisble");
         console.log(el.style.visibility);
         for(var i = 0; i < box.length; i++) {//排序算法,有待完善
                  var boxh = box[i].offsetHeight; //获取每个Pin的高度
                  if(i < n) { //第一行特殊处理
                                    h[i] = boxh;
                                    box[i].style.top = 0 + 'px';
                                    box[i].style.left = (i * boxW) + 'px';
                  }
                  else {
                                    minH = Array.min(h); //取得各列累计高度最低的一列
                                    var minKey = getarraykey(h, minH);
                                    h[minKey] += boxh+margin ; //加上新高度后更新高度值
                                    box[i].style.top = minH+margin + 'px';
                                    box[i].style.left = (minKey * boxW) + 'px';
                  }
                  var maxH = Array.max(h);
                  var maxKey = getarraykey(h, maxH);
                  el.style.height = h[maxKey] +"px";//定位结束后更新容器高度
         }
         for(var i = 0; i < box.length; i++) {
      DOM.addClass(box[i],"isVisble");
         }
}
Array.min=function(array)
{
    return Math.min.apply(Math,array);
}
Array.max=function(array)
{
    return Math.max.apply(Math,array);
}
/* 返回数组中某一值的对应项数 */
function getarraykey(s, v) {
  var k=null;
        for(k in s) {
                if(s[k] == v) {
                        return k;
                }
        }
}
sort($id("wrap"),"div");

css代码:
/**
waterfall css
**/
.taeapp  .wrap
{position:relative;zoom:1;margin:0px auto;
visibility:hidden;margin-top:20px;min-height:1200px;}
.taeapp  .wrap.isVisble{visibility:visible;}
.taeapp .wrap div{position:absolute;left:0;top:0;opacity:1;visibility:hidden;}
.taeapp .wrap div.isVisble{visibility:visible;}
.taeapp .active div.mode{-webkit-transition:all .8s ease-in;
-moz-transition:all  .8s ease-in-out;-o-transition:all
.taeapp .5s ease-in;transition:all  .5s ease-in;}
.taeapp .mode{background:#FFF;border-top:1px solid #dcdcdc;
-webkit-transition: opacity .4s ease-in-out;
-moz-transition: opacity .4s ease-in-out;-o-transition: opacity
.4s ease-in-out}
.taeapp .active .mode{ -webkit-transition: all .7s ease-out .1s;
-moz-transition:all  .7s ease-out ;
-o-transition:all .7s ease-out .1s;transition:all  
.7s ease-out .1s}
.taeapp .mode{width:190px;padding:14px 14px 6px;border:1px solid #dfdfdf;background:#FFF}
.taeapp .mode .pic{ width:190px;margin-bottom:7px;position:relative;text-align:center}
.taeapp .mode .pic a{display:block}
.taeapp .mode .pic a img{width:190px;vertical-align: bottom;}

图片轮播组件示例

由于tae做了安全上的控制,过滤了图片轮播组件,这里写了一个demo,以供大家参考。
图片轮播的Demo地址:http://taedemo.uz.taobao.com/d/swtich?spm=0.0.0.0.SXrmVE

1.html 代码:    
<script src="/assets/javascripts/switch.js"></script>
<div class="banner">    
    <div class="banner_bg"></div>  <!--标题背景-->
    <a href="#" class="banner_info"></a> <!--标题-->
    <ul class="list"></ul>
   <div class="banner_list">
        <a href="#" target="_blank"><img src="/assets/images/p1.jpg" title="图片轮播1"
        alt="图片轮播" /></a>
        <a href="#" class="in" target="_blank"><img src="/assets/images/p2.jpg"
        title="图片轮播2" alt="图片轮播" ></a>
        <a href="#" class="in" target="_blank"><img src="/assets/images/p3.jpg"
        title="图片轮播3" alt="图片轮播" /></a>
        <a href="#" class="in" target="_blank"><img src="/assets/images/p4.jpg"
        title="图片轮播4" alt="图片轮播" /></a>
    </div>
</div>

2.js脚本    

/**************************************************

 * 用法:

 *count:图片数量,

 *wrapId:包裹图片的DIV的className

 *ulId:按钮DIV class,

 *infoId:信息栏

 *stopTime:每张图片停留的时间

 *SWTICH.scroll(count,wrapId,ulId,infoId,stopTime);

 **************************************************/

var DOM = KISSY.DOM ;

var Anim = KISSY.Anim ;

var SWTICH = function() {

 function id(name) {return DOM.query("."+name)[0];}

 //遍历函数

 function each(arr, callback, thisp) {

  if (arr.forEach) {

   arr.forEach(callback, thisp);

  } else {

   for (var i = 0, len = arr.length; i < len; i++)

  callback.call(thisp, arr[i], i, arr);

  }

 }

 function fadeIn(elem) {

  DOM.removeClass(elem,"in");

  var anim;

  if(anim){

  anim.stop();

   }

   // 启动动画

  anim=Anim(elem,{filter:"alpha(opacity=1)",opacity:"1"});

  anim.run();

 }

 function fadeOut(elem) {

  var anim;

  if(anim){

  anim.stop();

   }

   // 启动动画

  anim=Anim(elem,{filter:"alpha(opacity=0)",opacity:"0"});

  anim.run();

  DOM.addClass(elem,"in");

 }

 return {

  //count:图片数量,wrapId:包裹图片的DIV,ulId:按钮DIV,infoId:信息栏,

  //stopTime:每张图片停留的时间

  scroll : function(count,wrapId,ulId,infoId,stopTime) {

   var self=this;

   var targetIdx=0;

  //目标图片序号

   var curIndex=0;

   //现在图片序号

   //添加Li按钮

   var frag=document.createDocumentFragment();

   console.log(frag);

   this.num=[];

  //存储各个li的应用,为下面的添加事件做准备

   this.info=id(infoId);

   for(var i=0;i<count;i++){

  (this.num[i]=frag.appendChild(document.createElement("li"))).innerHTML=i+1;

   }

   console.log(id(ulId));

   id(ulId).appendChild(frag);

   //初始化信息

   this.img = id(wrapId).getElementsByTagName("a");

   this.info.innerHTML=self.img[0].firstChild.title;

   this.num[0].className="on";

   //设置banner_bg为透明

   var banAnim=Anim(id("banner_bg"),{filter:"alpha(opacity=0.3)",opacity:"0.3"},0.01);

   banAnim.run();

   //将除了第一张外的所有图片设置为透明

   each(this.img,function(elem,idx,arr){

  if (idx!=0) {

   DOM.addClass(elem,"in");

   var anim;

   if(anim){

    anim.stop();

  }

  // 启动动画

   anim=Anim(elem,{filter:"alpha(opacity=0)",opacity:"0"},0.01);

   anim.run();

   DOM.addClass(elem,"in");

  }

   });

   //为所有的li添加点击事件

   each(this.num,function(elem,idx,arr){

  elem.onclick=function(){

   self.fade(idx,curIndex);

   curIndex=idx;

   targetIdx=idx;

  }

   });

   //自动轮播效果

   var itv=setInterval(function(){

  if(targetIdx<self.num.length-1){

   targetIdx++;

  }else{

   targetIdx=0;

   }

  self.fade(targetIdx,curIndex);

  curIndex=targetIdx;

  },stopTime);

   id(ulId).onmouseover=function(){ clearInterval(itv)};

   id(ulId).onmouseout=function(){

  itv=setInterval(function(){

   if(targetIdx<self.num.length-1){

  targetIdx++;

   }else{

  targetIdx=0;

  }

   self.fade(targetIdx,curIndex);

   curIndex=targetIdx;

  },stopTime);

   }

  },

  fade:function(idx,lastIdx){

   if(idx==lastIdx) return;

   var self=this;

   fadeOut(self.img[lastIdx]);

   fadeIn(self.img[idx]);

   each(self.num,function(elem,elemidx,arr){

  if (elemidx!=idx) {

   self.num[elemidx].className='';

  }else{

   id("list").style.background="";

   self.num[elemidx].className='on';

   }

   });

   this.info.innerHTML=self.img[idx].firstChild.title;

  }

 }

}();

SWTICH.scroll(4,"banner_list","list","banner_info",4000);

3.CSS    

/**

swtichable css

**/

.taeapp  .banner {position:relative; width:478px; height:286px;

 border:1px solid #666; overflow:hidden;}

.taeapp  .banner_list img {border:0px;}

.taeapp  .banner_bg {position:absolute; bottom:0;background-color:#000;height:30px;filter:Alpha(Opacity=30);opacity:0.3;z-index:1000;cursor:pointer; width:478px; }

.taeapp  .banner_info{position:absolute; bottom:0; left:5px; line-height:30px;color:#fff;z-index:1001}

.taeapp  .banner_text {position:absolute;width:120px;z-index:1002; right:3px;bottom:3px;}

.taeapp  .banner ul {position:absolute;list-style-type:none;filter: Alpha(Opacity=75);opacity:0.75; border:1px solid #fff;z-index:1002;margin:0; padding:0; bottom:3px; right:5px;}

.taeapp  .banner ul li { padding:0px 8px;float:left;display:block;color:#FFF;border:#fff 1px solid;background-color:#6f4f67;cursor:pointer}

.taeapp  .banner ul li.on{ background-color:#900}

.taeapp  .banner_list a{position:absolute;}

.taeapp  .banner_list a.in{opacity:0;}

日历选择组件

实现日历选择组件可以直接使用U站的官方组件。

在页面上添加class为kg_datePicker的input即可。 html例子

<ul>

<li><strong>机票出发/返程日期选择</strong></li>

<li><label class="tit" for="J_DepDate">出发时间:</label>

<input class="kg_datePicker" data-config='{"isHoliday": false,"minDate" :"2013-04-09","finalTriggerNode" "kg_datePicker_final", "finalTriggerMinDate" : "2013-04-19"}' type="text" value=""/></li>
 <li><label class="tit" for="J_RetDate">返程时间:</label><input class="kg_datePicker_final" type="text" value=""/></li></ul>

组件里面的data-config为json格式的字符串,具体的参数配置如下。

配置参数
date

   概述

        (默认值:当前日期) 日历初始日期

    类型

         Date  String (日期字符串:2012-11-12)

count

    概述

         (默认值:2) 日历个数

    类型

         Number

selectedDate

    概述

        (默认值:空) 选择的日期

     类型

         String

minDate

     概述

         (默认值:null) 允许操作的最小日期

     类型

         String (日期字符串:2011-11-11)

maxDate

     概述

         (默认值:null) 允许操作的最大日期

     类型

         Date (日期对象) 或 String (日期字符串)

startDate

      概述

          (默认值:空) 开始时间

      类型

          String (日期字符串)

endDate

     概述

          (默认值:空) 结束时间

     类型

         String (日期字符串)

afterDays

概述

      (默认值:0) 等价于设置minDate和maxDate,minDate未设置时取当前日期

类型

      Number

message

   概述

        (默认值:空) 提示信息
    类型
        String

triggerNode

    概述

        (默认值:空) 触发节点,支持批量设置,用半角逗号分隔。弹出式日历必选配置。例('#ID, .className, ...')

    类型

         String

finalTriggerNode

     概述

          (默认值:空) 最后触发节点,用于选择起始时间和结束时间互动,支持批量设置,用半角逗号分隔。例('#ID,.className, ...')

     类型

          String

finalTriggerMinDate

      概述

           最后触发节点的最小日期

      类型

          String : 2011-11-11

finalTriggerAfterDays

     概述

         (默认值:0) 等价于设置minDate和maxDate,设置最后触发节点的最多天数

     类型

         Number

isSelect

      概述

          (默认值:false) 是否开启下拉列表选择日期,如果开启,日历个数限制为1

      类型

          Boole

isDateInfo

        概述

             (默认值:true) 是否显示日期信息

        类型

            Boole

isDateIcon

        概述

           (默认值:true) 是否显示日期图标

         类型

            Boole

isHoliday

      概述

         (默认值:true) 是否显示节假日信息

      类型

         Boole

简单图片缩放组件

设置父容器的class为kg_imgBox,img标签class为kg_imgDD即可    

如下所示:
<div class="kg_imgBox">
<img class="kg_imgDD"  src="https://img.alicdn.com/imgextra/i1/10361016579368429/T1zbCTXfdmXXXXXXXX_!!413810361-0-tstar.jpg_290x10000.jpg"  data-original-url="https://img.alicdn.com/imgextra/i1/10361016579368429/T1zbCTXfdmXXXXXXXX_!!413810361-0-tstar.jpg">
    风要吹时
 <img class="kg_imgDD"  src="http://img04.taobaocdn.com/imgextra/i4/10361016579292275/T1RIGTXXBkXXXXXXXX_!!413810361-0-tstar.jpg_290x10000.jpg"  data-original-url="https://img.alicdn.com/imgextra/i4/10361016579292275/T1RIGTXXBkXXXXXXXX_!!413810361-0-tstar.jpg">
<img class="kg_imgDD"  src="http://img03.taobaocdn.com/imgextra/i3/10361018904480015/T1EGqnXap7XXXXXXXX_!!413810361-0-tstar.jpg_290x10000.jpg"  data-original-url="http://img02.taobaocdn.com/imgextra/i3/10361018904480015/T1EGqnXap7XXXXXXXX_!!413810361-0-tstar.jpg">
</div>

开关灯组件

设置想要突出的标签class为kg_expose
在data-config属性以json格式配置背景颜色和透明度

 <div class="s-demo">
        <div class="kg_expose"
             data-config='{"bgcolor": "#000", "expose_trigger" : "kg_expose_trigger", "opacity": 0.8}'>
            <div class="item kg_expose_trigger"><input type="text" name="name" value="您的名字" class="input"/></div>
            <div class="item kg_expose_trigger"><textarea class="input">您的评论</textarea></div>
            <div class="ft">
                <button type="button">发表评论</button>
            </div>
        </div>
    </div>

添加旺旺组件

<!-- data-icon [ mini | small | medium | large ] 图标类型,默认 small 类型   -->

<span class="J_WangWang" data-icon="small" data-nick="梓晗"></span>

淘宝地方数据三级联动组件

必须设置第一个select标签的class为kg_province
然后在data-config使用json格式配置son和grandson对应的class即可

<h3 style="font-size:22px;border-bottom:1px solid #000; margin-bottom:15px">地址三级联动</h3>
<div class="section">
    <h4>淘宝官方省市区数据</h4>
    <select class="kg_province" data-config='{"son" : "kg_province2", "grandson" : "kg_province3"}'></select>
    <select class="kg_province2"></select>
    <select class="kg_province3"></select>
</div>

延迟加载组件

对于一个图片很多的站点,图片的延时加载可以很大地提升网页的加载速度。隆重推荐大家使用kissy的延迟加载组件,用以提升网站的加载速度。
同时,有效地压缩图片和合并小图片也可以很大地提升网站的访问速度,建议大家双管齐下。如何压缩可以百度哦。

图片的延迟加载
把图片的src属性去掉,替换成data-ks-lazyload属性,比如:
<img  data-ks-lazyload="http://img04.taobaocdn.com/imgextra/i4/10361016579292275/T1RIGTXXBkXXXXXXXX_!!413810361-0-tstar.jpg_290x10000.jpg">

迷你登录框组件

/** 弹出mini登录框
  * 钩子名称J_TB_Login
  * 指定data-location登陆成功后跳转页面 必须是uz的域名, 这个地方可以不填
  */

<input type="button" value="login" class="J_TB_Login" data-location="http://uzblog.uz.taobao.com/index.php?
spm=a2116.3036013.0.0.Yn21y0&nocache=1&m=Index&a=view&id=52">

SNS相关组件

sns关注组件
custom设置成87,userid要自己想办法获取,我们不会提供的。。你懂的。。。
<div class="sns-widget" data-friendfollow='{"userId":"738050584",    "custom":"type=87"}'></div>
过段时间sns会提供直接使用旺旺名的关注组件,不过因为他们开发人手不够暂时搁置。

sns其他组件

  1. 分享按钮

  2. 喜欢组件

  3. 评论组件

FAQ

关于此文档暂时还没有FAQ
返回
顶部