浏览模式: 标准 | 列表分类:Javascript
Submitted by gouki on 2012, March 29, 8:51 AM
一段未优化过的无聊JS代码,暂时不优化了,以实现为主:
XML/HTML代码
- <style type="text/css">.zxx_text_overflow_6{ width:100px; height:100px; border:1px solid #CCC; }</style>
- <div class="zxx_text_overflow_6">
- <img src="i.png" alt="" style="float:right;width:50px;" />
- <p>你个杀千刀的,怎么写了这么多的文字,我要被拦腰截。断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!</p>
- </div>
- <script type="text/javascript">
- String.prototype.strtoarray=function (){
- var t=[], b=/(\s*[\S\u00ad]+\s*)/g, f='';
- for(i=0; i<this.length; i++){
- c=this.charCodeAt(i);
- t.push(c>128?" "+this.charAt(i):this.charAt(i));//p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));
- }
- //s = t.join("").split(b);
- return t.join("").split(b).join("Ω").replace(/ΩΩ/g,"Ω").split("Ω"); //这一段其实挺有意思,理论上,上一句就OK了,但事实上这一句才正常。。。好吧。
- // return s;
- }
- var t = +new Date();
- var d=document.querySelector(".zxx_text_overflow_6");
- var p=document.querySelector(".zxx_text_overflow_6 p");
- var pInfo = getComputedStyle(p);
- var s=p.innerHTML.strtoarray();
- var pData = [];
- p.innerHTML='';
- for(var i=0; i<s.length; i++){
- p.innerHTML+=s[i];
- pData.push(s[i]);
- if((p.offsetHeight+parseInt(pInfo.marginTop)+parseInt(pInfo.paddingTop))>= d.offsetHeight){
- if(s[i-1]!="。"||s[i-1]!='.'){
- p.innerHTML = pData.slice(0,-2).join("")+ "...";
- }else{
- p.innerHTML = pData.slice(0,-1).join("");
- }
- break;
- }
- }
- alert("执行时间" +((+new Date()) - t )/ 1000 + "秒");
- </script>
效果如下:
Javascript | 评论:0
| 阅读:16656
Submitted by gouki on 2012, February 16, 5:58 PM
备份一个JS,不是为了代码很优秀,而是。。。想直接用里面的事件,就当成参考了:
JavaScript代码
- var media_events=new Array();
-
- media_events["loadstart"]=0;
- media_events["progress"]=0;
- media_events["suspend"]=0;
- media_events["abort"]=0;
- media_events["error"]=0;
- media_events["emptied"]=0;
- media_events["stalled"]=0;
- media_events["loadedmetadata"]=0;
- media_events["loadeddata"]=0;
- media_events["canplay"]=0;
- media_events["canplaythrough"]=0;
- media_events["playing"]=0;
- media_events["waiting"]=0;
- media_events["seeking"]=0;
- media_events["seeked"]=0;
- media_events["ended"]=0;
- media_events["durationchange"]=0;
- media_events["timeupdate"]=0;
- media_events["play"]=0;
- media_events["pause"]=0;
- media_events["ratechange"]=0;
- media_events["volumechange"]=0;
- var media_controller_events=new Array();
-
- media_controller_events["emptied"]=0;
- media_controller_events["loadedmetadata"]=0;
- media_controller_events["loadeddata"]=0;
- media_controller_events["canplay"]=0;
- media_controller_events["canplaythrough"]=0;
- media_controller_events["playing"]=0;
- media_controller_events["ended"]=0;
- media_controller_events["waiting"]=0;
- media_controller_events["durationchange"]=0;
- media_controller_events["timeupdate"]=0;
- media_controller_events["play"]=0;
- media_controller_events["pause"]=0;
- media_controller_events["ratechange"]=0;
- media_controller_events["volumechange"]=0;
-
- var media_properties=[ "error","src","currentSrc","crossOrigin","networkState","preload","buffered","readyState","seeking","currentTime","initialTime","duration","startOffsetTime","paused","defaultPlaybackRate","playbackRate","played","seekable","ended","autoplay","loop","mediaGroup","controller","controls","volume","muted","defaultMuted","audioTracks","videoTracks","textTracks","width","height","videoWidth","videoHeight","poster" ];
- var media_properties_elts=null;
- var webm=null;
- function init(){
- document._video=document.getElementById("video");
- webm=document.getElementById("webm");
- init_events();
- init_properties();
- init_mediatypes();
-
- setInterval(update_properties,500);
- }
- document.addEventListener("DOMContentLoaded",init,false);
- function init_events(){
- for(key in media_events){
- document._video.addEventListener(key,capture,false);
- }
- var tbody=document.getElementById("events");
- var i=1;
- var tr=null;
- for(key in media_events){
- if(tr==null) tr=document.createElement("tr");
- var th=document.createElement("th");
- th.textContent=key;
- var td=document.createElement("td");
- td.setAttribute("id","e_"+key);
- td.innerHTML="0";
- td.className="false";
- tr.appendChild(th);
- tr.appendChild(td);
- if((i++%5)==0){
- tbody.appendChild(tr);
- tr=null;
- }
- }
- if(tr!=null) tbody.appendChild(tr);
- }
- function init_properties(){
- var tbody=document.getElementById("properties");
- var i=0;
- var tr=null;
- media_properties_elts=new Array(media_properties.length);
- do{
- if(tr==null) tr=document.createElement("tr");
- var th=document.createElement("th");
- th.textContent=media_properties[i];
- var td=document.createElement("td");
- td.setAttribute("id","p_"+media_properties[i]);
- var r=eval("document._video."+media_properties[i]);
- td.innerHTML=r;
- if(typeof(r)!="undefined"){
- td.className="true";
- }else{
- td.className="false";
- }
- tr.appendChild(th);
- tr.appendChild(td);
- media_properties_elts[i]=td;
- if((++i%3)==0){
- tbody.appendChild(tr);
- tr=null;
- }
- }while(i<media_properties.length);
- if(tr!=null) tbody.appendChild(tr);
- }
- function init_mediatypes(){
- var tbody=document.getElementById("m_video");
- var i=0;
- var tr=document.createElement("tr");
- var videoTypes=[ "video/ogg","video/mp4","video/webm" ];
- i=0;
- tr=document.createElement("tr");
- do{
- var td=document.createElement("th");
- td.innerHTML=videoTypes[i];
- tr.appendChild(td);
- }while(++i<videoTypes.length);
- tbody.appendChild(tr);
- i=0;
- tr=document.createElement("tr");
- if(!!document._video.canPlayType){
- do{
- var td=document.createElement("td");
- var support=document._video.canPlayType(videoTypes[i]);
- td.innerHTML='"'+support+'"';
- if(support==="maybe"){
- td.className="true";
- }else if(support===""){
- td.className="false";
- }
- tr.appendChild(td);
- }while(++i<videoTypes.length);
- tbody.appendChild(tr);
- }
- }
- function capture(event){
- media_events[event.type]=media_events[event.type]+1;
- for(key in media_events){
- var e=document.getElementById("e_"+key);
- if(e){
- e.innerHTML=media_events[key];
- if(media_events[key]>0) e.className="true";
- }
- }
- update_properties();
- }
- function update_properties(){
- var i=0;
- for(key in media_properties){
- var val=eval("document._video."+media_properties[key]);
-
-
-
-
-
- media_properties_elts[i++].innerHTML=val;
- }
- if(!!document._video.audioTracks){
- var td=document.getElementById("m_audiotracks");
- td.innerHTML=document._video.audioTracks.length;
- td.className="true";
- }
- if(!!document._video.videoTracks){
- var td=document.getElementById("m_videotracks");
- td.innerHTML=document._video.videoTracks.length;
- td.className="true";
- }
- if(!!document._video.textTracks){
- var td=document.getElementById("m_texttracks");
- td.innerHTML=document._video.textTracks.length;
- td.className="true";
- }
- }
- var videos=new Array();
- videos[0]=[
- "http://media.w3.org/2010/05/sintel/poster.png","http://media.w3.org/2010/05/sintel/trailer.mp4","http://media.w3.org/2010/05/sintel/trailer.ogv","http://media.w3.org/2010/05/sintel/trailer.webm"
- ];
- videos[1]=[
- "http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/trailer.mp4","http://media.w3.org/2010/05/bunny/trailer.ogv"
- ];
- videos[2]=[
- "http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/movie.mp4","http://media.w3.org/2010/05/bunny/movie.ogv"
- ];
- videos[3]=[
- "http://media.w3.org/2010/05/video/poster.png","http://media.w3.org/2010/05/video/movie_300.mp4","http://media.w3.org/2010/05/video/movie_300.ogv","http://media.w3.org/2010/05/video/movie_300.webm"
- ];
- function switchVideo(n){
- if(n>=videos.length) n=0;
- var mp4=document.getElementById("mp4");
- var ogv=document.getElementById("ogv");
- var parent=ogv.parentNode;
- document._video.setAttribute("poster",videos[n][0]);
- mp4.setAttribute("src",videos[n][1]);
- ogv.setAttribute("src",videos[n][2]);
- if(videos[n][3]){
- if(webm.parentNode==null){
- parent.insertBefore(webm,ogv);
- }
- webm.setAttribute("src",videos[n][3]);
- }else{
- if(webm.parentNode!=null){
- parent.removeChild(webm);
- }
- }
- document._video.load();
- }
这一段JS是从http://www.w3.org/2010/05/video/mediaevents.html拷贝而来,具体的演示就在这个页面了。我是想知道video标签中的一些事件。controller_event几乎用不到。
中文说明这里有:http://directguo.com/blog/index.php/2010/07/html5-audio-video-tag/
XML/HTML代码
- //错误状态
- Media.error; //null:正常
- Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效
-
- //网络状态
- Media.currentSrc; //返回当前资源的URL
- Media.src = value; //返回或设置当前资源的URL
- Media.canPlayType(type); //是否能播放某种格式的资源
- Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
- Media.load(); //重新加载src指定的资源
- Media.buffered; //返回已缓冲区域,TimeRanges
- Media.preload; //none:不预载 metadata:预载资源信息 auto:
-
- //准备状态
- Media.readyState; //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA
- Media.seeking; //是否正在seeking
-
- //回放状态
- Media.currentTime = value; //当前播放的位置,赋值可改变位置
- Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0
- Media.duration; //当前资源长度 流返回无限
- Media.paused; //是否暂停
- Media.defaultPlaybackRate = value;//默认的回放速度,可以设置
- Media.playbackRate = value;//当前播放速度,设置后马上改变
- Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文
- Media.seekable; //返回可以seek的区域 TimeRanges
- Media.ended; //是否结束
- Media.autoPlay; //是否自动播放
- Media.loop; //是否循环播放
- Media.play(); //播放
- Media.pause(); //暂停
-
- //控制
- Media.controls;//是否有默认控制条
- Media.volume = value; //音量
- Media.muted = value; //静音
-
- //TimeRanges(区域)对象
- TimeRanges.length; //区域段数
- TimeRanges.start(index) //第index段区域的开始位置
- TimeRanges.end(index) //第index段区域的结束位置
借鉴一下。
Tags: html5, video, audio
Javascript | 评论:0
| 阅读:23538
Submitted by gouki on 2012, February 1, 8:34 PM
一直不是做前端的料,所以看到wbr标签的时候,下意识的以为这个标签是br标签的代名词,所以想当然的认为这种标签是无效的。或者是其他人伪造的标签。
直到有一天google的时候才发现,原来wbr的意思居然是word-break的意思。即,主动将单词用wbr格开,这样,如果遇到一些超长单词的时候将单词切断。
The <wbr> tag is very useful but unfortunately too little known. I use it liberally in the great compatibility tables on my site.
比如这样的例子:
XML/HTML代码
- <div class="name">getElements<wbr>ByTagName()</div>
当这个div宽度过小的时候,它就会按照getElements先断行,然后再显示ByTagName,这样的方式更易于浏览。
先记录一下
参考资料:
1、http://www.w3schools.com/html5/tag_wbr.asp
2、http://www.quirksmode.org/oddsandends/wbr.html#t01
Tags: wbr
Javascript | 评论:0
| 阅读:14833
Submitted by gouki on 2011, December 20, 12:15 PM
这是一位叫 Christos Chiotis 的希腊 Web 设计师发表在 CssGlobe 的一篇文章,讲述了黄金分割率在 CSS 中的应用。黄金分割率是一个应用广泛的数学常数,大约为 1.6180339887。黄金分割率用在 Web 设计中,可以为设计带来更多视觉上的和谐。
在一个简单的两栏式页面布局中,使用两个容器,第一个容器用来显示主要内容,第二个容器显示侧条。比如,页面宽度为 960 px,使用黄金分割率,主内容容器的宽度应该为 960 / 1.62 = 593 px,而侧条的宽度为 960-593=367 px。
作者建议,在 Web 排版与布局中可以使用以下基本 CSS 设置
- line-height = font-size * 1.62
- paragraph margin = paragraph line-height * 1.62 / 2
- header’s margin-top = headers line-height * 1.62
不过对中文而言,至少 font-size 和 line-height 之间使用黄金分割率是不适合的,假如中文字体使用 12px 的话,最佳行高是 22px,如果字体使用 14px 的话,行高应该使用 24px - 译者。
另一个例子,在表单中,输入框的宽度应该是标签文字的宽度乘以 1.62。而对于显示在 Web 上矩形来说,它的宽度应该是高度乘以 1.62。
这样一来,Web 设计师同时需要很好的计算能力,至少要在旁边放一台计算器,为了节省时间,作者建议在设计中随时记住一个 62/38 原则,在任何需要分割的地方,都使用 62% 和 38% 作比例。
对于需要分割成三份的场合,可以先按 62%,38%原则分成两份,再将那份大的按 62% 和 38% 的比例分割。
--------
上述文字来自于http://www.newsteng.com/html/2011/web-based_1220/69.html,因为自己不了解设计,所以备份一下。以后除了自己用还可以用来installB之类的
图片附件(缩略图):
图片附件(缩略图):
Tags: css, 黄金分割
Javascript | 评论:1
| 阅读:17444
Submitted by gouki on 2011, December 19, 10:57 PM
纯备份资料,HTML5的canvas资料
Tags: html5, canvas, cheat sheet
Javascript | 评论:0
| 阅读:18025