YUI学习笔记(三)Reszie模块1

参考资料:http://yuilibrary.com/yui/docs/resize/simple-resize.html

需求说明:用鼠标控制div的大小,并且根据大小相应的截断div中段落的文字。如图,用鼠标控制外部div的尺寸,在尺寸改变的同时,使左侧文字适应div的大小而进行文字截断,右边的事件不截断。

代码:

<html>
  <head>
    <base href="<%=basePath%>">
    <title>文字截取</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
  </head>
  <body>
    <div class="journal-content-article">
      <ul class="list_ul">
        <li>
          <span><a>我校专业技术岗位等级聘任工作已结束</a></span>
          <em>2012-07-21</em>
        </li>
        <li>
          <span><a>踏寻历史踪迹   在实践中成长</a></span>
          <em >2012-07-13</em>
        </li>
        <li>
          <span><a>教师系列专业技术职务聘任结果</a></span>
          <em2012-07-02</em>
        </li>
        <li>
          <span ><a>我校小学部举行数学学科期末复习引路活动</a></span>
          <em>2012-06-26</em>
        </li>
        <li>
          <span ><a>我校举行&quot;青蓝杯&quot;教学大赛优胜...</a></span>
          <em>2012-06-26</em>
        </li>
        <li>
          <span><a>我校举行2012届毕业典礼</a></span>
          <em>2012-06-26</em>
        </li>
        <li>
          <span><a>教师系列专业技术职务聘任结果公告</a></span>
          <em>2012-06-22</em>
        </li>
      </ul>
    </div>
    <script src="http://yui.yahooapis.com/3.9.0/build/yui/yui-min.js"></script>
    <script type="text/javascript">
    //YUI要用到的模块有node和resize-plugin
    YUI().use('node','resize-plugin',function(Y){
      var tag_arr = Y.all("a");//所有<a>标签做成的数组
       var tag_strArr = new Y.Array(String);//所有<a>标签内容做成的数组
       var tag_showStr = null;//每行文字显示的文字
       var tag_lenArr = new Y.Array(String);//每行文字的长度
       var tag_fontsize = 0;//文字像素
       //YUI中的数组遍历操作用  数组名.each(function(item,index)){}
      //其中item表示当前数组中的对象,index表示当前数组中对象的下标	
       tag_arr.each(function(item,index){
              tag_strArr[index] = item.getHTML();
              tag_lenArr[index] = item.getHTML().length;
         });
    	
    	/**获取文字像素*/
    	var div = Y.one(".journal-content-article");
    	var date = Y.one("em");
        //YUI中获取CSS样式的方法是  元素.getStyle(属性名)
    	tag_fontsize = div.getStyle("fontSize");
    	/**pt与px的转换*/
    	var fsLen = tag_fontsize.length;
	    var fstail = tag_fontsize.toString().substring(fsLen-2, fsLen);
	    var maxLength = null;
	    switch(fstail)
	    {
	    	case "pt":
	    		tag_fontsize = parseInt(tag_fontsize)*4/3;
	    		break;
	    	case "em":
	    		tag_fontsize = parseInt(tag_fontsize)*16;
	    		break;
	    	case "px":
	    		tag_fontsize = parseInt(tag_fontsize);
	    		break;
	    }
        //我们已经引入了YUI的Resize模块,现在需要实例化一个接口
    	var resizeDiv = new Y.Resize({
    		node: ".journal-content-article"
    	});
    	/**监听div尺寸改变事件*/
        //resize的事件有很多比如:start、mouseUp、end、resize等
    	resizeDiv.on("resize",function(){
    		/**获取div的宽度*/
    		var divWidth = parseInt(div.getStyle("width"));
		var data_len = date.getHTML().length;
	    	var data_width = tag_fontsize*(data_len);
	    	maxLength = parseInt((divWidth-data_width)/tag_fontsize);//div最多能显示的字符长度
	    	tag_arr.each(function(item,index){
	    		if(tag_lenArr[index]>=maxLength)
	    		{
	    			tag_showStr = tag_strArr[index].substr(0,maxLength);
	    			item.setHTML(tag_showStr);
	    		}
	    	});
	    });
	});
	</script>
 </body>
 </html>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值