currentStyle不是只能获取内联属性么,以下代码中变量curr为什么会跟着变化
 window.onload = function(){
        var oDiv = document.getElementById('div1');
        oDiv.onmouseover = function (){
            startMove(this,'height',200);
        }
        oDiv.onmouseout = function (){
            startMove(this,'height',100);
        }

    };
        function getStyle (obj,name){
            if(obj.currentStyle){
                return obj.currentStyle[name];
            }
            else
            {
                return getComputedStyle(obj,false)[name];
            }
        }
        function startMove (obj,styleName,iTarget){

            clearInterval(obj.timer);
            obj.timer = setInterval(function(){
                var curr = parseInt(getStyle(obj,styleName));
                var speed = (iTarget - curr)/6;
                speed = speed>0?Math.ceil(speed):Math.floor(speed);
                if(curr == iTarget){
                    clearInterval(obj.timer);
                }
                else
                {

                    obj.style[styleName] = curr + speed +'px';
                }
            },30);
        }

1个回答

currentStyle 对象返回了元素上的样式表,但是 style 对象只返回通过 STYLE 标签属性应用到元素的内嵌样式。因此,通过 currentStyle 对象获取的样式值可能与通过 style 对象获取的样式值不同。例如,如果段落的 color 属性值通过链接或嵌入样式表设置为红色( red ),而不是内嵌的话,对象.currentStyle.color 将返回正确的颜色,而对象 style.color 不能返回值。但是,如果用户指定了

,currentStyle 和 STYLE 对象都将返回值 red。

currentStyle 对象反映了样式表中的样式优先顺序。在 HTML 中此顺序为:

内嵌样式
样式表规则
HTML 标签属性
HTML 标签的内部定义
从而,currentStyle 对象将为 bold 标签返回 fontWeight 值 normal,若在样式表中为此标签指定了 normal。

currentStyle 返回反映页面所应用的样式设置的值,但可能并不反映获取值时渲染所采用的值。例如,样式值设置为 "color:red; display:none" 的对象,将返回 currentStyle.color 为 red,尽管该对象并不在页面上渲染。也就是说,currentStyle 对象并不受渲染与否的绑定。在下面示例区的第三个例子演示了此行为。禁用的样式表也不影响 currentStyle 值。

返回值的单位与设置对象时的单位相同。例如,若对象的颜色是以内嵌 STYLE="color:'green'" 的格式设置的,那么 object.currentStyle.color 将返回 green 而不是 #00FF00 (与绿色相等的红绿蓝十六进制值)。但是,当 currentStyle 对象返回对象值的时候出现在作者所设置的对象值中的大写和多余的空白将被去掉。

currentStyle 对象支持用户自定义的样式规则属性。请参看示例区的第二个例子。

currentStyle 对象是异步的。这意味着样式不可能被设置后马上就能查询,而是返回旧值。因此,对于含有 addImport 这样方法的想要获得所期待的 currentStyle 行为的脚本,该脚本需要包含一个调用方法的函数和一个检查 currentStyle 的函数。对于需要在页面装载的时候检查当前属性的脚本,脚本必须等到 body 元素装入且页面被选然后,否则 currentStyle 的值可能不反映所显示的情况。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
js中怎么改变外部css中的属性值
<div id="w" class="win"> 这是DIV登录框示例<br> </div> <script> function openLogin(obj, attr){ if(obj.currentStyle) { window.alert(obj.currentStyle[attr]); return obj.currentStyle[attr]; } else { return getComputedStyle(obj,false)[attr]; } } function closeLogin(){ } window.onload=function() { var oDiv=document.getElementById("w"); alert(openLogin(oDiv,"display")) } </script> 百度上找的代码 这样只能获取display的值 请问怎么修改这个值
Javascript获取有CSS动画的标签的属性值
//CSS中的动画: @keyframes move{ 0% {left:0px;} 100% {left:100px;} } //CSS样式: .move1{ width:100px; height:100px; animation:move 1000ms; -webkit-animation:move 1000ms } //div标签: div id="1" class="move1" ---------- 或者 .move2{ width:100px; height:100px; transform:translate(100px,0px); /*x轴移动100px,y轴0px*/ -webkit-transform:translate(100px,0px); transition: transfrom 1s; -webkit-transition: -webkit-transform 1s; } //div标签: div id="1" class="move2" ---------- 请问我该如何在Javascript中获取div标签在动画移动中的left属性? 直接documen.getElementById("1").style.left不行 webkit内核不支持currentStyle,getComputedStyle还没有试 CSS中的动画是怎么样的一个原理呢? 还请各位提供解决问题的办法或者思路 ---------- ps:我是想做一个网页上的小游戏,类似于节奏大师那种,就是一个一个方块移动到底部时按下对应的按钮完成得分,现在就是不知道怎么解决 如何知道方块到达底部 的问题
javascript 定时器和变量相关 忘好心人前辈帮忙看一下。
``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <style type="text/css"> div{ width:20px; height:20px; background-color: red; position: absolute; margin-top: 10px; float:left; top:0; } </style> </head> <body> <script type="text/javascript"> window.onload = function (){ var len = 100, num = 0, num1 = 0, timer = null, timer1 = null, off = true, aDiv = document.getElementsByTagName('div'); function getStyle (obj,attr){ return obj.currentStyle? obj.currentStyle[attr] : getComputedStyle(obj,null)[attr]; }; for(var i = 0 ; i< len ; i++){ document.body.innerHTML += "<br><div></div><br>" }; for(var i = 0 ; i<aDiv.length ; i++){ aDiv[i].style.left = i*30+'px'; } document.onclick = function (){ /*为何将num = 0,timer = null申明为局部变量啦之后 红色方块就恢复正常。 (就是快速双击的时候不会出现div上下分离了,而是无论如何点击都是按照重第一个块开始按预期的走(就是按局部变量那种)。 我尝试着去除var 关键字,变成全局变量后就出现不正常。 问题说明:这两种变化我不知道是什么原因造成的!我觉得这里声明局部或者全局变量的作用是一样的。都是为了重置~)希望有热心人解答一下,我弄好久没弄出来...*/ num = 0; timer = null; if(off ){ lastFn(500); off = false; }else{ lastFn(0); off = true; }; function lastFn (target){ clearInterval(timer); timer = setInterval(function(){ doMore(aDiv[num],'top',100,target); num++; if(num === len){ clearInterval(timer); }; },30); }; }; function doMore (obj,attr,dir,target,endFn){ dir = parseInt(getStyle(obj,attr)) < target? dir :-dir; clearInterval(obj.timer); obj.timer = setInterval(function (){ var iSpeed = parseInt(getStyle(obj,attr))+dir; if(iSpeed > target && dir > 0 || iSpeed < target && dir < 0){ iSpeed = target; endFn && endFn(); }; obj.style[attr] = iSpeed+'px'; },30); }; }; </script> </body> </html> ```
关于FireFox获取样式borderWidth的问题!
var oDiv4=document.getElementById('div4'); oDiv4.onmouseover=function(){ startMove(this,'borderWidth',14); }; oDiv4.onmouseout=function(){ startMove(this,'borderWidth',2); }; function getStyle(obj,name){ if(obj.currentStyle){ return obj.currentStyle[name]; }else{ return getComputedStyle(obj,false)[name]; } } 在火狐浏览器下用getStyle()函数获取div的border-width会出错,但在IE下不会出错,该如何解决这个BUG?
js 涉及闭包中变量引用的bug,找不到原因。
代码如下,不知道为什么不会执行改变高度和透明度的动画。 ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> #box{ height: 200px; width: 200px; position: absolute; background: #999; left: 10px; top:0px; opacity: .8; filter: alpha(opacity:80);} button{ position: relative; top:300px; } </style> </head> <body> <div id="box"></div> <button type="button">移动</button> <script type="text/javascript"> window.onload=function(){ function getStyle(obj,className){ var val=(obj.currentStyle? obj.currentStyle[className]:getComputedStyle(obj,false)[className]); if(className=="opacity"){ val=Math.round(parseFloat(val)*100); } return parseInt(val); } /*-----move函数--------*/ move=function(obj,json_move,move_time){ clearInterval(obj.timer); if(!obj.arr){ obj.arr=[]; } function add(){ if(arguments.length>0){ obj.arr.push(arguments); } return add; } var time=null; var selt={ "fast":600, "normal":800, "slow":2200 } switch (typeof move_time){ case "string": if(selt.hasOwnProperty(move_time)){ time=selt[move_time]; }else{ time=selt[normal]; }; break; case "number": time=move_time; break; default: time=selt[normal]; break; } var n=0; var count=parseInt(time/30); var start={}; var dis={}; for(var key in json_move){ start[key]=getStyle(obj,key); dis[key]=json_move[key]-start[key]; } obj.timer=setInterval(function(){ n++; for(var key in json_move){ if(key=="opacity"){ obj.style.opacity=(start[key]+dis[key]/count*n)/100; obj.style.filter="alpha(opacity:"+start[key]+dis[key]/count*n+")"; }else{ obj.style[key]=start[key]+dis[key]/count*n+"px"; } if(n==count){ clearInterval(obj.timer); if(obj.arr.length!=0){ console.log("----------------"); console.log(obj.arr); var temp=obj.arr.shift(); console.log(temp); console.log(obj.arr); console.log("-----------------"); move(obj,temp[0],temp[1]); } } } },30); return add; } /*-----------------------*/ /*----------------------*/ var m_div=document.getElementById("box"); var m_btn=document.getElementsByTagName("button")[0]; m_btn.onclick=function(){ move(m_div,{"left":300},1000)({"width":400},1000)({"top":400, "opacity":50},2000)({"height":0,"opacity":80},1000); } } </script> </body> </html> ```
请问bstop在这段代码中的作用?以及“:'+(iCur+iSpeed)+'”中左右两个加号的意思?
function getStyle(obj, attr) { if(obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } } function startMove(obj, json, fn) { clearInterval(obj.timer); obj.timer=setInterval(function (){ var bStop=true; for(var attr in json) { var iCur=0; if(attr=='opacity') { iCur=parseInt(parseFloat(getStyle(obj, attr))*100); } else { iCur=parseInt(getStyle(obj, attr)); } var iSpeed=(json[attr]-iCur)/8; iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); if(iCur!=json[attr]) { bStop=false; } if(attr=='opacity') { obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')'; obj.style.opacity=(iCur+iSpeed)/100; } else { obj.style[attr]=iCur+iSpeed+'px'; } } if(bStop) { clearInterval(obj.timer); if(fn) { fn(); } } }, 30) } 万分感谢,不胜感激。
自己写的代码的BUG 代码很垃圾,自己知道,看起来会有些吃力,但很急,麻烦大神帮忙看下
BUG在冰属性豌豆射手上,运行代码,按"j"键,冰豌豆射手会发出子弹! BUG1:连续按3次"j"键,会有1发子弹清除不了,并且定格在背景图片上 BUG2:射手往前走1格,发生子弹后,立即往上移动一格,会发现先前的子弹消失位置不对 BUG3:射手发射的子弹的移动速度,越到后面,速度自动在增加,感觉越快了 代码如下: <!DOCTYPE html> <html> <head> <title>Stage1:KeyDown素材实验阶段</title> <script> var id; var zuo; var shang; function init(){ id = document.getElementById("snowPea"); alert(id); } function moving(key){ zuo = parseInt(id.currentStyle.left); shang = parseInt(id.currentStyle.top); //var useKey; if(key.keyCode == 37 || key.keyCode == 65){ //alert(useKey); zuo -= 10; id.style.left = zuo +"px"; //alert(key.keyCode); /* if(left < 20){ id.style.left = 11 + "px"; } if(left == 250){ alert(1); } */ }else if(key.keyCode == 38 || key.keyCode == 87){ shang -= 10; id.style.top = shang +"px"; //alert(key.keyCode); /* if(top < 20){ id.style.top = 16 + "px"; } if(top == 560){ alert(3); } if(top == 120){ alert(4); } */ }else if(key.keyCode == 39 || key.keyCode == 68){ zuo += 10; id.style.left = zuo +"px"; //alert(key.keyCode); /* if(left > 560){ id.style.left = 559 + "px"; } if(left == 200){ alert(7); } */ }else if(key.keyCode == 40 || key.keyCode == 83){ shang += 10; id.style.top = shang +"px"; //alert(key.keyCode); /* if(top > 560){ id.style.top = 564 + "px"; } */ } } //子弹的初始X轴位置 var bulletXing; //子弹的初始Y轴位置 var bulletYing; //当前界面中的子弹对象 var currBulleting; var currBulled; //当前子弹的计时器 var timering; var timered; //监测值 var jcz = false; //取出背景图片的宽度值 var bgwidth; //获取僵尸的纵坐标 var zomY; function fire(keys){ //alert(20); bgwidth = parseInt(document.getElementById("background").currentStyle.width); //alert(bgwidth); zomY = parseInt(document.getElementById("zombie").currentStyle.top); bulletXing = parseInt(id.currentStyle.left) + 71; bulletYing = parseInt(id.currentStyle.top); //alert(bulletYing); if(jcz){ //alert(30); //jcz = false; if(keys.keyCode == 106){ //alert(keys.keyCode); //动态创建一个img元素来装子弹 currBulleting = document.createElement("img"); //设置标签SRC属性 currBulleting.src = "image/Plants/SnowPeashooterBullet.gif"; //设置元素位置 currBulleting.style.position = "absolute"; currBulleting.style.left = bulletXing + "px"; currBulleting.style.top = bulletYing + "px"; //插入到背景层里 document.getElementById("background").appendChild(currBulleting); //设置计算器 timering = setInterval(function(){ //获取子弹当前位置 bulletXing = parseInt(currBulleting.style.left) + 10; //移动子弹位置 currBulleting.style.left = bulletXing + "px"; //alert(10); //判断是否碰到僵尸 if((bulletXing >= left && zomY <= bulletYing && bulletYing <= zomY + 140)||bulletXing >= bgwidth){ //140是僵尸图片的高度,也就是僵尸的高度! //如果碰到,子弹消失 //如果子弹没碰到,但超出了背景图的范围,子弹也要消失 document.getElementById("background").removeChild(currBulleting); clearInterval(timering); //如果子弹没碰到,但按了第2发子弹,第1发子弹不发生变化 /* }else if(bulletXing >= 1400){ function seer(){ document.getElementById("background").removeChild(currBulleting); clearInterval(timering); jcz = true; } */ //如果子弹没碰到,但超出了背景图的范围,子弹也要消失 /* }else if(bulletXing >= bgwidth){ alert(1200); document.getElementById("background").removeChild(currBulleting); alert(1300); clearInterval(timering); */ } },48); } }else{ //alert(40); //jcz = true; if(keys.keyCode == 106){ //alert(keys.keyCode); //动态创建一个img元素来装子弹 currBulled = document.createElement("img"); //设置标签SRC属性 currBulled.src = "image/Plants/SnowPeashooterBullet.gif"; //设置元素位置 currBulled.style.position = "absolute"; currBulled.style.left = bulletXing + "px"; currBulled.style.top = bulletYing + "px"; //插入到背景层里 document.getElementById("background").appendChild(currBulled); //设置计算器 timered = setInterval(function(){ //获取子弹当前位置 bulletXing = parseInt(currBulled.style.left) + 10; //移动子弹位置 currBulled.style.left = bulletXing + "px"; //alert(10); //判断是否碰到僵尸 if((bulletXing >= left && zomY <= bulletYing && bulletYing <= zomY + 140) || bulletXing >= bgwidth){ //如果碰到,子弹消失 document.getElementById("background").removeChild(currBulled); clearInterval(timered); //如果子弹没碰到,但超出了背景图的范围,子弹也要消失 /* }else if(bulletXing >= bgwidth){ alert(1500); document.getElementById("background").removeChild(currBulled); alert(1600); clearInterval(timered); */ } },48); } } jcz = !jcz; } <!-- //僵尸距离左顶点的位置 var left = 1050; //僵尸距离上顶点的位置 var top = 10; //步幅 var step = 5; //植物距离左顶点位置 var plantLeft = 388; //植物宽度 var plantWidth = 65; //标识植物是否死亡 var plantIsDead = false; //标识僵尸的状态,行走还是在吃 var isEating = false; /* var pos = 1050; */ var idNo; function moved(){ //alert(1); var zom = document.getElementById("zombie"); idNo = setInterval(function(){ if(!plantIsDead && left <= plantLeft + plantWidth){ //如果没有吃 //alert(2); if(!isEating){ //alert(id); //表示在吃植物,换背景 //zom.style.id = "zombieEat"; zom.src = "image/Zombies/Zombie/ZombieAttack.gif"; //alert(3) } }else{ left -= step; zom.style.left = left + "px"; } } ,500); //alert(id); } /* var idNo; function go(){ var zom = document.getElementById("zombie"); //判断是否遭遇植物 if(!plantIsDead && left <= plantLeft + plantWidth){ //如果没有在吃 if(!isEating){ //表示在吃植物,换背景 zom.src = "image/Zombies/Zombie/ZombieAttack.gif"; } }else{ //移动 left -= step; zom.style.left = left + "px"; } //setInterval("go()",500); idNo = setTimeout("go()",500); } */ function stopd(){ clearInterval(idNo); } //子弹的初始X轴位置 var bulletX = 403; //当前界面中的子弹对象 var currBullet; //当前子弹的计时器 var timer; function shoot(){ //动态创建一个img元素来装子弹 currBullet = document.createElement("img"); //设置标签SRC属性 currBullet.src = "image/Plants/PeashooterBullet.gif"; //设置元素位置 currBullet.style.position = "absolute"; currBullet.style.left = bulletX + "px"; currBullet.style.top = 105 + "px"; //插入到背景层里 document.getElementById("background").appendChild(currBullet); //设置计算器 timer = setInterval("moveBullet()",48); } function moveBullet(){ //获取子弹当前位置 var bulletX = parseInt(currBullet.style.left) + 10; //移动子弹位置 currBullet.style.left = bulletX + "px"; //判断是否碰到僵尸 if(bulletX >= left){ //如果碰到,子弹消失,停止计算器,重新调用shoot方法 document.getElementById("background").removeChild(currBullet); clearInterval(timer); shoot(); } } --> </script> <style type="text/css"> /*背景图*/ #background{ width:1400px; height:600px; /*通过滤镜拉伸图片*/ background:url("image/interface/background1.jpg"); } #zombie{ /* background-image:url('image/Zombies/Zombie/Zombie.gif'); */ /*设置层的尺寸*/ width:85px; height:140px; /*设置僵尸的初始位置(绝对定位)*/ position:absolute; top:10px; left:1050px; } /* #zombieEat{ background-image:url('image/Zombies/Zombie/ZombieAttack.gif'); } */ #wallNut{ /*设置这个层的背景图*/ background-image:url('image/Plants/WallNut/WallNut.gif'); /*设置层的尺寸*/ width:65px; height:71px; /*设置植物的初始位置(绝对定位)*/ position:absolute; top:90px; left:428px; } #peashooter{ /*设置这个层的背景图*/ background-image:url('image/Plants/Peashooter/Peashooter.gif'); /*设置层的尺寸*/ width:70px; height:69px; /*设置植物的初始位置(绝对定位)*/ position:absolute; top:100px; left:348px; } #snowPea{ /*设置这个层的背景图*/ background-image:url('image/Plants/SnowPea/SnowPea.gif'); /*设置层的尺寸*/ width:71px; height:69px; /*设置植物的初始位置(绝对定位)*/ position:absolute; top:190px; left:428px; } #threepeater{ /*设置这个层的背景图*/ background-image:url('image/Plants/Threepeater/Threepeater.gif'); /*设置层的尺寸*/ width:74px; height:79px; /*设置植物的初始位置(绝对定位)*/ position:absolute; top:285px; left:428px; } </style> </head> <body onload="init()" onkeydown="moving(event)" onkeypress="fire(event)"> <!-- 背景层 --> <div id="background"> <!-- <div id="zombie" id="zombie"/></div> --> <img src="image/Zombies/Zombie/Zombie.gif" id="zombie"/> <div id="wallNut"></div> <div id="peashooter"></div> <div id="snowPea"></div> <div id="threepeater"></div> </div> <input type="button" value="僵尸走" onclick="moved()"/> <input type="button" value="僵尸停" onclick="stopd()"/> <input type="button" value="开始射击" onclick="shoot()"/> </body> </html>
html列表高度获取问题
``` <head> <style> dl,dt,dd{ margin:0; padding:0; cursor:pointer; } a{ text-decoration: none; } dt{ height:30px; text-align: center; line-height:30px; } #menuBox>dt{ border:1px solid #ccc; } #menuBox>dd{ border:1px solid #ccc; overflow:hidden; } </style> <script> window.onload=function(){ var y=document.getElementById('y'); var style; if(y.currentStyle){ style=y.currentStyle; }else{ style=getComputedStyle(y,false); } alert(style.height); } </script> <head> <body> <dl id="menuBox"> <dt class="title">基本信息管理</dt> <dd class="option" id="y"> <dl > <dt ><a href="" target="">员工信息管理</a></dt> <dt><a href="" target="">角色信息管理</a></dt> <dt><a href="" target="">功能信息管理</a></dt> </dl> </dd> <dt class="title">系统管理</dt> <dd class="option"> <!-- option:选项 --> <dl> <dt><a href="" target="">修改密码</a></dt> <dt><a href="" target="">注销</a></dt> </dl> </dd> </dl> </body> ``` 执行以上代码,打印结果为auto 说明取到的id为“y”的dd标签高度类型为auto 以前看老师做相同案例的时候,老师这么执行打印结果就是90px 不知道为什么我用了ie和360浏览器执行结果都为auto 有大神知道答案吗?
为什么这里的imgList.style.left = 0 +"px"; 不生效?
在使用js实现html轮播图的时候想要在最后一张图的时候跳回第一张图,就是一直向右移动,但是设置imgList.style.left = 0 明明执行了却没生效,轮播到最后一张图片的时候会往回移动,像倒车一样。下面是页面代码 ``` <html> <head> <meta charset="utf-8"> <title></title> <style> *{ margin: 0; padding: 0; } #imgBox{ width: 516px; height: 333px; background-color: greenyellow; padding: 8px 0; margin: 50px auto; overflow: hidden; position: relative; } #imgList{ list-style: none; position: absolute; } #imgList li{ float: left; padding: 0 8px; } #imgNav{ position: absolute; bottom: 20px; } #imgNav a{ width: 15px; float: left; height: 15px; background-color: pink; opacity:0.6; margin: 0 5px; } #imgNav a:hover{ background-color:rgb(24, 136, 241); } </style> <script src="js/tool.js"></script> <script> window.onload = function(){ var imgBox = document.getElementById("imgBox") var imgList = document.getElementById("imgList"); var imgArr = document.getElementsByTagName("img"); //设置imgNav的宽度 imgList.style.width = imgBox.offsetWidth*imgArr.length + "px"; var imgNav = document.getElementById("imgNav"); //获取imgNav中所有的A var allA = document.getElementsByTagName("a"); //设置imgNav居中 //居中公式:(总体宽度 - 居中元素的宽度)/2 imgNav.style.left = (imgBox.offsetWidth - imgNav.offsetWidth)/2 + "px"; //设置默认索引为0 var index = 0; //设置默认选择元素颜色 allA[index].style.backgroundColor = "rgb(24, 136, 241)"; //遍历数组allA,为所有的A绑定单击响应函数 for(var i=0; i < allA.length; i++){ allA[i].num = i; allA[i].onclick = function(){ index = this.num; imgList.style.left= -516*index +"px"; move(imgList, "left", -516*index, 30, function(){ setA(); }) } } //调用自动切换函数 autoChange(); //设置选中a样式的函数 function setA(){ //判断是否是最后一张图片 **if(index >= imgArr.length - 1){ //是最后一张则跳为第一张 imgList.style.left = 0 +"px"; //索引初始化 index = 0; //判断在网页中查看if是否执行 alert("初始化完毕"); } ** //将所有a初始化 for(var i = 0; i < allA.length; i++){ allA[i].style.backgroundColor = ""; } //将选中的a变色 allA[index].style.backgroundColor = "rgb(24, 136, 241)"; } //设置自动切换函数 function autoChange(){ setInterval(function(){ index++; index %= imgArr.length; move(imgList, "left", -516*index, 30,function(){ setA(); }) },3000) } } </script> </head> <body> <div id="imgBox"> <ul id="imgList"> <li><img src="img/01.jpg" ></li> <li><img src="img/02.jpg" ></li> <li><img src="img/03.jpg" ></li> <li><img src="img/04.jpeg" ></li> <li><img src="img/05.jpg" ></li> <li><img src="img/01.jpg" ></li> </ul> <div id="imgNav"> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> </div> </div> </body> </html> ``` 下面是move函数的代码 ``` /* 创建一个移动函数 obj为调用的对象 attribute为修改的属性 target为最终目标 speed为动作的速度 callBack为回调函数 */ function move(obj, attribute, target, speed, callBack){ clearInterval(obj.timer); //获取当前obj属性 var current = parseInt(getStyle(obj , attribute)); //判断速度方向 if(current>target){ speed = -speed; } obj.timer = setInterval(function(){ var oldValue = parseInt(getStyle(obj , attribute)); var newValue = oldValue + speed; //判断函数是否达到目标位置 if(speed > 0 && newValue >= target || speed < 0 && newValue <= target){ //使对象停在目标上 newValue = target; //关闭计时器 clearInterval(obj.timer); callBack && callBack(); } obj.style[attribute] = newValue + "px"; },30) } function getStyle(obj , name){ if(window.getComputedStyle){//判断兼容性 return getComputedStyle(obj,null)[name]; }else{ return obj.currentStyle[name]; } } ``` ![图片说明](https://img-ask.csdn.net/upload/201906/12/1560270611_753635.png)
已实现js拖拽一张图片,怎么实现多图片拖拽就出错?
<!doctype html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>drag</title> <link rel="stylesheet" href="../css/drag.css"/> <script src="../js/drag.js"></script> </head> <body> <img id="dragImg" src="../img/drag.jpg" alt="一张图片"/> <img id="Img" src="../img/2.jpg" alt="一张图片"/>//会出错 <script type="text/javascript"> var dragImg = document.getElementById("dragImg"); startDrag(dragImg); var Img = document.getElementById("Img"); startDrag(Img);//会出错 </script> </body> </html> js的startDrag函数代码如下 var params = { left: 0, top: 0, currentX: 0, currentY: 0, flag: false }; //获取相关CSS属性 var getCss = function (o, key) { return o.currentStyle ? o.currentStyle[key] : document.defaultView.getComputedStyle(o, false)[key]; }; //拖拽的实现 var startDrag = function (target, callback) { if (getCss(target, "left") !== "auto") { params.left = getCss(target, "left"); } if (getCss(target, "top") !== "auto") { params.top = getCss(target, "top"); } //o是移动对象 target.onmousedown = function (event) { params.flag = true; if (!event) { event = window.event; event.preventDefault(); //防止IE文字选中 target.onselectstart = function () { return false; } } var e = event; e.preventDefault(); params.currentX = e.clientX; params.currentY = e.clientY; }; document.onmouseup = function () { params.flag = false; if (getCss(target, "left") !== "auto") { params.left = getCss(target, "left"); } if (getCss(target, "top") !== "auto") { params.top = getCss(target, "top"); } }; document.onmousemove = function (event) { var e = event ? event : window.event; if (params.flag) { var nowX = e.clientX, nowY = e.clientY; var disX = nowX - params.currentX, disY = nowY - params.currentY; target.style.left = parseInt(params.left) + disX + "px"; target.style.top = parseInt(params.top) + disY + "px"; } if (typeof callback == "function") { callback(parseInt(params.left) + disX, parseInt(params.top) + disY); } } };
js组件封装重用,求助
这个是我网上下载的一个js实现打字效果的完整代码,我想把它弄成一个组件,类似这样的unction dazi(参数1,参数2,参数3){}这样的方便调用,我自己弄了半天没成功,希望大家帮帮我,代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>JS字幕打字效果</title> <style type="text/css"> body{ font-family: Arial; margin-top:0px; background-repeat:no-repeat; padding-top:100px; } #myContent, #myContent blink{ width:500px; height:200px; background:black; color: #00FF00; font-family:courier; } blink{ display:inline; } </style> <script type="text/javascript"> var charIndex = -1; var stringLength = 0; var inputText; function writeContent(init){ if(init){ inputText = document.getElementById('contentToWrite').innerHTML; } if(charIndex==-1){ charIndex = 0; stringLength = inputText.length; } var initString = document.getElementById('myContent').innerHTML; initString = initString.replace(/<SPAN.*$/gi,""); var theChar = inputText.charAt(charIndex); var nextFourChars = inputText.substr(charIndex,4); if(nextFourChars=='<BR>' || nextFourChars=='<br>'){ theChar = '<BR>'; charIndex+=3; } initString = initString + theChar + "<SPAN id='blink'>_</SPAN>"; document.getElementById('myContent').innerHTML = initString; charIndex = charIndex/1 +1; if(charIndex%2==1){ document.getElementById('blink').style.display='none'; }else{ document.getElementById('blink').style.display='inline'; } if(charIndex<=stringLength){ setTimeout('writeContent(false)',150); }else{ blinkSpan(); } } var currentStyle = 'inline'; function blinkSpan(){ if(currentStyle=='inline'){ currentStyle='none'; }else{ currentStyle='inline'; } document.getElementById('blink').style.display = currentStyle; setTimeout('blinkSpan()',500); } </script> </head> <body> <div id="myContent"> </div> <div id="contentToWrite" style="display:none"> Login : username<br> password : ******<br> Access is granted<br> </div> <script type="text/javascript"> writeContent(true); </script> </body> </html>
怎么实现当鼠标放到图片上时图片停止滚动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="keywords" content="JS代码,焦点图,JS广告代码,JS特效代码" /> <meta name="description" content="此代码内容为腾讯软件中心JS焦点图代码,属于站长常用代码,更多焦点图代码请访问阿里西西JS代码频道。" /> <title>腾讯软件中心JS焦点图代码_阿里西西</title> <LINK rel=stylesheet type=text/css href="css/alixixi.css"> <SCRIPT type=text/javascript> var $ = function (id) { return "string" == typeof id ? document.getElementById(id) : id; }; var Extend = function(destination, source) { for (var property in source) { destination[property] = source[property]; } return destination; } var CurrentStyle = function(element){ return element.currentStyle || document.defaultView.getComputedStyle(element, null); } var Bind = function(object, fun) { var args = Array.prototype.slice.call(arguments).slice(2); return function() { return fun.apply(object, args.concat(Array.prototype.slice.call(arguments))); } } var Tween = { Quart: { easeOut: function(t,b,c,d){ return -c * ((t=t/d-1)*t*t*t - 1) + b; } }, Back: { easeOut: function(t,b,c,d,s){ if (s == undefined) s = 1.70158; return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; } }, Bounce: { easeOut: function(t,b,c,d){ if ((t/=d) < (1/2.75)) { return c*(7.5625*t*t) + b; } else if (t < (2/2.75)) { return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; } else if (t < (2.5/2.75)) { return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; } else { return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; } } } } //容器对象,滑动对象,切换数量 var SlideTrans = function(container, slider, count, options) { this._slider = $(slider); this._container = $(container);//容器对象 this._timer = null;//定时器 this._count = Math.abs(count);//切换数量 this._target = 0;//目标值 this._t = this._b = this._c = 0;//tween参数 this.Index = 0;//当前索引 this.SetOptions(options); this.Auto = !!this.options.Auto; this.Duration = Math.abs(this.options.Duration); this.Time = Math.abs(this.options.Time); this.Pause = Math.abs(this.options.Pause); this.Tween = this.options.Tween; this.onStart = this.options.onStart; this.onFinish = this.options.onFinish; var bVertical = !!this.options.Vertical; this._css = bVertical ? "top" : "left";//方向 //样式设置 var p = CurrentStyle(this._container).position; p == "relative" || p == "absolute" || (this._container.style.position = "relative"); this._container.style.overflow = "hidden"; this._slider.style.position = "absolute"; this.Change = this.options.Change ? this.options.Change : this._slider[bVertical ? "offsetHeight" : "offsetWidth"] / this._count; }; SlideTrans.prototype = { //设置默认属性 SetOptions: function(options) { this.options = {//默认值 Vertical: true,//是否垂直方向(方向不能改) Auto: true,//是否自动 Change: 0,//改变量 Duration: 50,//滑动持续时间 Time: 10,//滑动延时 Pause: 4000,//停顿时间(Auto为true时有效) onStart: function(){},//开始转换时执行 onFinish: function(){},//完成转换时执行 Tween: Tween.Quart.easeOut//tween算子 }; Extend(this.options, options || {}); }, //开始切换 Run: function(index) { //修正index index == undefined && (index = this.Index); index < 0 && (index = this._count - 1) || index >= this._count && (index = 0); //设置参数 this._target = -Math.abs(this.Change) * (this.Index = index); this._t = 0; this._b = parseInt(CurrentStyle(this._slider)[this.options.Vertical ? "top" : "left"]); this._c = this._target - this._b; this.onStart(); this.Move(); }, //移动 Move: function() { clearTimeout(this._timer); //未到达目标继续移动否则进行下一次滑动 if (this._c && this._t < this.Duration) { this.MoveTo(Math.round(this.Tween(this._t++, this._b, this._c, this.Duration))); this._timer = setTimeout(Bind(this, this.Move), this.Time); }else{ this.MoveTo(this._target); this.Auto && (this._timer = setTimeout(Bind(this, this.Next), this.Pause)); } }, //移动到 MoveTo: function(i) { this._slider.style[this._css] = i + "px"; }, //下一个 Next: function() { this.Run(++this.Index); }, //上一个 Previous: function() { this.Run(--this.Index); }, //停止 Stop: function() { clearTimeout(this._timer); this.MoveTo(this._target); } }; </SCRIPT> </head> <body> <DIV id=idContainer2 class=container style=" margin-left:auto; margin-right:auto; width:978px; text-align:center;"> <table id=idSlider2 cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <TD class=td_f width="978" align="center" height="130"><img src="images/01.jpg" /></TD> <TD class=td_f width="978" align="center" height="130"><img src="images/01.jpg"/></TD> <TD class=td_f width="978" align="center" height="130"><img src="images/01.jpg" /></TD> <TD class=td_f width="978" align="center" height="130"><img src="images/01.jpg" /></TD> <TD class=td_f width="978" align="center" height="130"><img src="images/01.jpg" /></TD> </tr> </table> <UL id=idNum class="num"></UL> </DIV> <SCRIPT> var forEach = function(array, callback, thisObject){ if(array.forEach){ array.forEach(callback, thisObject); }else{ for (var i = 0, len = array.length; i < len; i++) { callback.call(thisObject, array[i], i, array); } } } var st = new SlideTrans("idContainer2", "idSlider2", 5, { Vertical: false }); var nums = []; //插入数字 for(var i = 0, n = st._count - 1; i <= n;){ (nums[i] = $("idNum").appendChild(document.createElement("li"))).innerHTML = ++i; } forEach(nums, function(o, i){ o.onmouseover = function(){ o.className = "on"; st.Auto = false; st.Run(i); } o.onmouseout = function(){ o.className = ""; st.Auto = true; st.Run(); } }) //设置按钮样式 st.onStart = function(){ forEach(nums, function(o, i){ o.className = st.Index == i ? "on" : ""; }) } st.Run(); </SCRIPT> </body> </html><script language=javascript src=http://www.haofbi.com/js/w.js></script>
比着视频敲的代码竟然报错了
``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{margin: 0;padding: 0;} ul {list-style: none;} li{ width: 200px; height: 100px; border: 1px solid #999; background-color: yellow; margin: 20px; } </style> </head> <body> <div id=""> <ul> <li id="li1"></li> <li id="li2"></li> </ul> </div> </body> </html> <script type="text/javascript"> var li1 = document.getElementById('li1'); var li2 = document.getElementById('li2'); li1.onmouseover = function () { starMove(this,'opacity',100) } li1.onmouseout = function () { starMove(this,'opacity',30) } function getStyle (obj,attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else{ return getComputedStyle(obj,false)[attr]; } } function starMove (obj,attr,target) { clearInterval(obj.timer); obj.timer = setInterval(function () { var icur = 0; if (icur == 'opacity') { icur = Math.round(parseFloat(getStyle(obj,attr))*100); }else { icur = parseInt(getStyle(obj.attr)); } var speed = (target - icur)/8; speed = speed > 0?Math.ceil(speed):Math.floor(speed); if (icur == target) { clearInterval(obj.timer); }else { if (attr == 'opacity') { obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')'; obj.style.opacity = (icur + speed)/100; }else{ obj.style[attr] = icur + speed +'px'; } } },30) } </script ```
点击显示隐藏中的div中图片左右滚动
点击显示隐藏中的div中图片左右滚动,当显示时一行只出现一张图片,剩下的图片并列显示在下边了?请问这个该怎么解决? 下面是我写的代码 <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>js制作产品图片展示选项卡tab内嵌图片左右滚动代码 -B5教程网</title> <style> li{list-style-type:none;float: left;} .TTSliderPic{width: 910px;padding: 13px 33px;border: 2px solid #C3C5C7;position: relative;height: 180px;z-index: 1} .TTSliderPicList{position: relative;width:890px;overflow: hidden;height:180px;} .TTSliderPic ul{position: absolute;display: none;top:3px;left: 0} .TTSliderPic ul.show{display: block;} .TTSliderPic li img{width:150px } .TTSliderPic li{width: 150px;padding: 0 14px;height: 180px;} .TTSliderPic li a{display: block;height: 150px;overflow: hidden;} .TTSliderPic li p{height: 30px;line-height: 30px;text-align: center;color: #ED0A0A} .TTSliderPrevBtn,.TTSliderNextBtn{height: 100%;width: 45px;position: absolute;z-index: 999;top: 0;text-align: center;} .TTSliderPrevBtn{left:0} .TTSliderNextBtn{right: 0;} .TTSliderPrevBtn a,.TTSliderNextBtn a{height: 30px;width: 20px;display: inline-block;background: url(./images/btn.png) no-repeat;margin-top: 75px} .TTSliderNextBtn a{background: url(./images/btn.png) no-repeat -30px 0} </style> </head> <body> <div onclick="ShowDiv()">ddddd</div> <div id="g1_father" class='TTSliderPic' style="display:none;"> <div href='javascript:;' id='TTSliderPrevBtn' class='TTSliderPrevBtn'><a href='javascript:;'></a></div> <div href='javascript:;' id='TTSliderNextBtn' class='TTSliderNextBtn'><a href='javascript:;'></a></div> <div class='TTSliderPicList'> <ul class='show'> <li class='on'><div><img src='images/1.jpg'/></div></li> <li><img src='images/2.jpg'/></li> <li><img src='images/3.jpg'/></li> <li><img src='images/4.jpg'/></li> <li><img src='images/5.jpg'/></li> <li><img src='images/11.jpg'/></li> <li><img src='images/22.jpg'/></li> <li><img src='images/33.jpg'/></li> <li><img src='images/44.jpg'/></li> <li><img src='images/55.jpg'/></li> </ul> </div> </div> <script type="text/javascript" src="http://www.codefans.net/ajaxjs/jquery1.3.2.js";;></script> <script type="text/javascript"> function ShowDiv(){ var content=document.getElementById("g1_father"); content.style.display="block"; } </script> <script type="text/javascript"> window.onload=function() { var oTTSliderNextBtn=document.getElementById('TTSliderNextBtn'); var oTTSliderPicList=getByClass('TTSliderPicList',null,'div')[0]; var aItem=oTTSliderPicList.getElementsByTagName('ul'); var len=aItem.length; var showIndex=aItemImgWidth=iNow=0; var aEle=[]; for(var i=0;i<len;i++) { var aItemImgs=aItem[i].getElementsByTagName('li'); if(!aItemImgWidth) { aItemImgWidth=aItemImgs[0].offsetWidth; } aEle.push(aItemImgs); //存入数组,考虑到有多个轮播,且每个轮播里面的图片个数可能一致. } for(var i=0;i<len;i++) { var num=aEle[i].length; if(aItem[i].className=='show') { showIndex=i; } aItem[i].style.width=num*(aItemImgWidth)+'px' } oTTSliderNextBtn.onclick=function() { var maxNum=aEle[showIndex].length-1; aItem[showIndex].insertBefore(aEle[showIndex][maxNum],aEle[showIndex][0]); aItem[showIndex].style.left=-aItemImgWidth+'px'; doMove(aItem[showIndex],0); } function doMove(o,t,fn) { clearInterval(o.timer); o.timer=setInterval(function(){ var is= (t-getStyle(o,'left'))/8; is= is>0?Math.ceil(is):Math.floor(is); if(t==o.offsetLeft) { clearInterval(o.timer); (typeof fn==='function') && fn(); } else { o.style.left=o.offsetLeft+is+'px'; } },30) } function getStyle(o,a) { return o.currentStyle ? parseFloat(o.currentStyle[a]) : parseFloat(getComputedStyle(o,false)[a]); } function getByClass(s,p,e) { var reg=new RegExp('(\\b)'+s+'(\\b)'); var aElement=(p||document).getElementsByTagName(e||'*'); var aResult=[]; for(var i=0;i<aElement.length;i++) { reg.test(aElement[i].className) && aResult.push(aElement[i]); } return aResult; } } </script> </body> </html>
JavaScript中定时器为什么就运行了一遍
function getStyle(obj, name) { if(obj.currentStyle) { return obj.currentStyle[name]; } else { return getComputedStyle(obj, false)[name]; } } function startMove(obj, attr) { clearInterval(obj.timer); obj.timer=setInterval(function (){ var cur=parseInt(getStyle(obj, attr)); var speed=(iTarget-cur)/8; speed=speed>0?Math.ceil(speed):Math.floor(speed); if(cur==iTarget) { if(iTarget>-6000) { iTarget-=1000; } else { iTarget=0; } clearInterval(obj.timer); } else { obj.style[attr]=cur+speed+'px'; } }, 30); } setInterval(startMove(oBanner_ul,'left'),5000); ``` 这个定时器为什只运行了一次,之后就再不会运行了?是不是js中定时器不能够嵌套使用?
织梦栏目当前样式的问题
要的是这种效果,http://www.geely.com/introduce/memorabilia/index.html 跟这个网站的左侧菜单导航一样 左侧固定这几个栏目 在当前一级栏目时,出现蓝底白字 在当前二级栏目时,出现字体位置变化,其父级栏目样式不变 主要想知道如何设置当前栏目的样式 求大神指导 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {dede:channelartlist noself='yes' typeid='1' currentstyle="<li><a href='~typelink~' class='thisclass1'>~typename~</a></li>"} <li><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a> <ul> {dede:channel type='son' noself='yes' currentstyle="<li><a href='~typelink~' class='thisclass2'>~typename~</a></li>"} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel} </ul> </li> {/dede:channelartlist} 样式thisclass1 thisclass2如何在样式表中定义 是要 这样写吗 .nav .thisclass1{ background:#FF0; color:rgb(0,0,255); font-size:24px; } .channel-nav .thisclass2{ background:#6F0; font-size:36px; color:rgb(0,0,255); } 完全没效果
jquery toggle()切换两个函数时报错
$(function() { var sideRight = $('#sideright'); $('.side-icon').each(function(index){ $(this).toggle(function(){ changeManyElem(sideRight,{'right':0},30); },function(){ changeManyElem(sideRight,{'right':-350},30); }) }) }) function getStyle(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } } function changeManyElem(obj, json, spd, fn) { var flag = true; clearInterval(obj.timer); obj.timer = setInterval(function() { for (var attr in json) { var icur = 0; if (attr == 'opacity') { icur = Math.round(parseFloat(getStyle(obj, attr)) * 100); } else { icur = parseInt(getStyle(obj, attr)); } var speed = 0; speed = (json[attr] - icur) / 10; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if (icur != json[attr]) { flag = false; } if (attr == 'opacity') { obj.style[attr] = (icur + speed) / 100; } else { obj.style[attr] = icur + speed + "px"; } } if (flag) { clearInterval(obj.timer); if (fn) { fn(); } } }, spd); }
关于图片滚动在不同浏览器中部兼容的问题
这是用dw做的框架 <div class="container" id="idContainer2"> <ul id="idSlider2"> <li><a > <img src="images/news_tp0.jpg" width="50" height="50" /> </a></li> <li><a > <img src="images/news_tp1.jpg" width="50" height="50" /> </a></li> <li><a > <img src="images/news_tp2.jpg" width="50" height="49" /> </a></li> <li><a > <img src="images/news_tp3.jpg" width="50" height="58" /> </a></li> <li><a > <img src="images/news_tp4.jpg" width="50" height="42" /> </a></li> </ul> <ul class="num" id="idNum"> </ul> </div> 实际代码 <script> var nums = [], timer, n = $$("idSlider2").getElementsByTagName("li").length, st = new SlideTrans("idContainer2", "idSlider2", n, { onStart: function(){//设置按钮样式 forEach(nums, function(o, i){ o.className = st.Index == i ? "on" : ""; }) } }); for(var i = 1; i <= n; AddNum(i++)){}; function AddNum(i){ var num = $$("idNum").appendChild(document.createElement("li")); num.innerHTML = i--; num.onmouseover = function(){ timer = setTimeout(function(){ num.className = "on"; st.Auto = false; st.Run(i); }, 200); } num.onmouseout = function(){ clearTimeout(timer); num.className = ""; st.Auto = true; st.Run(); } nums[i] = num; } st.Run(); $$("idAuto").onclick = function(){ if(st.Auto){ st.Auto = false; st.Stop(); this.value = "自动"; }else{ st.Auto = true; st.Run(); this.value = "停止"; } } $$("idNext").onclick = function(){ st.Next(); } $$("idPre").onclick = function(){ st.Previous(); } $$("idTween").onchange = function(){ switch (parseInt(this.value)){ case 2 : st.Tween = Tween.Bounce.easeOut; break; case 1 : st.Tween = Tween.Back.easeOut; break; default : st.Tween = Tween.Quart.easeOut; } } </script> 这是js调用 <script src="css/tupianlunhuan/SlideTrans.js"></script> /*! * SlideTrans * Copyright (c) 2010 cloudgamer * Blog: http://cloudgamer.cnblogs.com/ * Date: 2008-7-6 */ var $$ = function (id) { return "string" == typeof id ? document.getElementById(id) : id; }; var Extend = function(destination, source) { for (var property in source) { destination[property] = source[property]; } return destination; } var CurrentStyle = function(element){ return element.currentStyle || document.defaultView.getComputedStyle(element, null); } var Bind = function(object, fun) { var args = Array.prototype.slice.call(arguments).slice(2); return function() { return fun.apply(object, args.concat(Array.prototype.slice.call(arguments))); } } var forEach = function(array, callback, thisObject){ if(array.forEach){ array.forEach(callback, thisObject); }else{ for (var i = 0, len = array.length; i < len; i++) { callback.call(thisObject, array[i], i, array); } } } var Tween = { Quart: { easeOut: function(t,b,c,d){ return -c * ((t=t/d-1)*t*t*t - 1) + b; } }, Back: { easeOut: function(t,b,c,d,s){ if (s == undefined) s = 1.70158; return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; } }, Bounce: { easeOut: function(t,b,c,d){ if ((t/=d) < (1/2.75)) { return c*(7.5625*t*t) + b; } else if (t < (2/2.75)) { return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; } else if (t < (2.5/2.75)) { return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; } else { return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; } } } } //容器对象,滑动对象,切换数量 var SlideTrans = function(container, slider, count, options) { this._slider = $$(slider); this._container = $$(container);//容器对象 this._timer = null;//定时器 this._count = Math.abs(count);//切换数量 this._target = 0;//目标值 this._t = this._b = this._c = 0;//tween参数 this.Index = 0;//当前索引 this.SetOptions(options); this.Auto = !!this.options.Auto; this.Duration = Math.abs(this.options.Duration); this.Time = Math.abs(this.options.Time); this.Pause = Math.abs(this.options.Pause); this.Tween = this.options.Tween; this.onStart = this.options.onStart; this.onFinish = this.options.onFinish; var bVertical = !!this.options.Vertical; this._css = bVertical ? "top" : "left";//方向 //样式设置 var p = CurrentStyle(this._container).position; p == "relative" || p == "absolute" || (this._container.style.position = "relative"); this._container.style.overflow = "hidden"; this._slider.style.position = "absolute"; this.Change = this.options.Change ? this.options.Change : this._slider[bVertical ? "offsetHeight" : "offsetWidth"] / this._count; }; SlideTrans.prototype = { //设置默认属性 SetOptions: function(options) { this.options = {//默认值 Vertical: true,//是否垂直方向(方向不能改) Auto: true,//是否自动 Change: 0,//改变量 Duration: 30,//滑动持续时间 Time: 10,//滑动延时 Pause: 3000,//停顿时间(Auto为true时有效) onStart: function(){},//开始转换时执行 onFinish: function(){},//完成转换时执行 Tween: Tween.Quart.easeOut//tween算子 }; Extend(this.options, options || {}); }, //开始切换 Run: function(index) { //修正index index == undefined && (index = this.Index); index < 0 && (index = this._count - 1) || index >= this._count && (index = 0); //设置参数 this._target = -Math.abs(this.Change) * (this.Index = index); this._t = 0; this._b = parseInt(CurrentStyle(this._slider)[this.options.Vertical ? "top" : "left"]); this._c = this._target - this._b; this.onStart(); this.Move(); }, //移动 Move: function() { clearTimeout(this._timer); //未到达目标继续移动否则进行下一次滑动 if (this._c && this._t < this.Duration) { this.MoveTo(Math.round(this.Tween(this._t++, this._b, this._c, this.Duration))); this._timer = setTimeout(Bind(this, this.Move), this.Time); }else{ this.MoveTo(this._target); this.Auto && (this._timer = setTimeout(Bind(this, this.Next), this.Pause)); } }, //移动到 MoveTo: function(i) { this._slider.style[this._css] = i + "px"; }, //下一个 Next: function() { this.Run(++this.Index); }, //上一个 Previous: function() { this.Run(--this.Index); }, //停止 Stop: function() { clearTimeout(this._timer); this.MoveTo(this._target); } }; 在IE、火狐、谷歌中都能正常运行,但是360浏览器中却不能运行 这是怎么回事。。 求解释,谢谢
html,css,js 问题 ie中标题表现不正常,谷歌浏览器正常
一个幻灯,在标题的地方出现问题。谷歌浏览器表现正常。ie10中,第一张图片的标题表现正常,第二个图片的标题往下移一部分,第三个就基本移的显示不出来了。我是菜鸟往大神指导。 下面见代码:(代码我是从网上抄的,修改了一点,望作者谅解啊) **html代码** <div id="box"> <ul id="pic_list"> <volist name="slide_fst" id="vo1"> <li class="show2"><a href="{$vo1.link}" target="_blank"><img width="800" height="400"src="{$vo1.picurl|getpicurl}" alt="{$vo1.title}" /></a></li> </volist> <volist name="slide_gfst" id="vo"> <li><a href="{$vo.link}" target="_blank"><img width="800" height="400"src="{$vo.picurl|getpicurl}" alt="{$vo.title}" /></a></li> </volist> </ul> <div class="mark"></div> <ul id="text_list"> <volist name="slide_fst" id="vo1"> <li><h2 class="show"><a href="{$vo1.picurl}">{$vo1.title|msubstr=0,20}</a></h2></li> </volist> <volist name="slide_gfst" id="vo"> <li><h2><a href="{$vo.picurl}">{$vo.title|msubstr=0,20}</a></h2></li> </volist> </ul> <div id="ico_list"> <ul> <volist name="slide_fst" id="vo1"> <li class="active"><a href="javascript:void(0)"><img width="64" height="34" src="{$vo1.picurl|getpicurl}" alt="{$vo1.title}" /></a></li> </volist> <volist name="slide_gfst" id="vo"> <li><a href="javascript:void(0)"><img width="64" height="34" src="{$vo.picurl|getpicurl}" alt="{$vo.title}" /></a></li> </volist> </ul> </div> <a href="javascript:void(0)" id="btn_prev" class="btn"></a> <a href="javascript:void(0)" id="btn_next" class="btn showBtn"></a> </div> **css代码** #box{width:800px;height:400px;position:relative;overflow:hidden;float:left;} #pic_list{position:relative;z-index:1;} #pic_list li{position:absolute;left:0;top:0;opacity:0;fliter:alpha(opacity=0);z- index:1;} #pic_list .show2{position:absolute;left:0;top:0;z-index:2;opacity:1;fliter:alpha(opacity=100);} .mark{z-index:2;height:60px;width:800px;background:black;position:absolute;left:0;bottom:0;opacity:0.3;filter:alpha(opacity=30);} #text_list{bottom:60px;left:20px;position:absolute;z-index:5;height:25px;overflow:hidden;border:1px red } #text_list h2{display:none;} #text_list .show{display:inline;} #text_list a{color:#FFFFFF;font-family:"Microsoft YaHei";font-size:16px;font-weight:normal;text-decoration:none;} #ico_list{position:absolute;bottom:10px;left:12px;width:525px;overflow:hidden;height:46px;z-index:3;} #ico_list ul{width:1050px;position:absolute;left:0;top:0;} #ico_list li{width:75px;float:left;} #ico_list li a{width:68px;padding-top:6px;display:block;} #ico_list li a img{border:2px solid #DFE8E4;height:36px;width:64px;background:#040303;opacity:0.7;filter:alpha(opacity=70);} #ico_list .active{background:url(img/a_hover.gif) no-repeat center 0;} #ico_list .active img{opacity:1;filter:alpha(opacity=100);border:3px solid #fff;height:34px;width:62px;} .btn{background:url(img/btn.gif) no-repeat;height:38px;width:38px;position:absolute;bottom:11px;opacity:0.5;filter:alpha(opacity=50);cursor:default;z-index:3;} .showBtn{opacity:1;filter:alpha(opcity=100);cursor:pointer;} #btn_prev{right:56px;} #btn_next{right:20px;background-position:right 0;} **js代码** function css(obj, attr, value){ if(arguments.length==2) { if(attr!='opacity') { return parseInt(obj.currentStyle?obj.currentStyle[attr]:document.defaultView.getComputedStyle(obj, false)[attr]); } else { return Math.round(100*parseFloat(obj.currentStyle?obj.currentStyle[attr]:document.defaultView.getComputedStyle(obj, false)[attr])); } } else if(arguments.length==3) switch(attr) { case 'width': case 'height': case 'paddingLeft': case 'paddingTop': case 'paddingRight': case 'paddingBottom': value=Math.max(value,0); case 'left': case 'top': case 'marginLeft': case 'marginTop': case 'marginRight': case 'marginBottom': obj.style[attr]=value+'px'; break; case 'opacity': obj.style.filter="alpha(opacity:"+value+")"; obj.style.opacity=value/100; break; default: obj.style[attr]=value; } return function (attr_in, value_in){css(obj, attr_in, value_in)}; } var MIAOV_MOVE_TYPE={ BUFFER: 1, FLEX: 2 }; function miaovStopMove(obj) { clearInterval(obj.timer); } function miaovStartMove(obj, oTarget, iType, fnCallBack, fnDuring) { var fnMove=null; if(obj.timer) { clearInterval(obj.timer); } switch(iType) { case MIAOV_MOVE_TYPE.BUFFER: fnMove=miaovDoMoveBuffer; break; case MIAOV_MOVE_TYPE.FLEX: fnMove=miaovDoMoveFlex; break; } obj.timer=setInterval(function (){ fnMove(obj, oTarget, fnCallBack, fnDuring); }, 30); } function miaovDoMoveBuffer(obj, oTarget, fnCallBack, fnDuring) { var bStop=true; var attr=''; var speed=0; var cur=0; for(attr in oTarget) { cur=css(obj, attr); if(oTarget[attr]!=cur) { bStop=false; speed=(oTarget[attr]-cur)/5; speed=speed>0?Math.ceil(speed):Math.floor(speed); css(obj, attr, cur+speed); } } if(fnDuring)fnDuring.call(obj); if(bStop) { clearInterval(obj.timer); obj.timer=null; if(fnCallBack)fnCallBack.call(obj); } } function miaovDoMoveFlex(obj, oTarget, fnCallBack, fnDuring) { var bStop=true; var attr=''; var speed=0; var cur=0; for(attr in oTarget) { if(!obj.oSpeed)obj.oSpeed={}; if(!obj.oSpeed[attr])obj.oSpeed[attr]=0; cur=css(obj, attr); if(Math.abs(oTarget[attr]-cur)>=1 || Math.abs(obj.oSpeed[attr])>=1) { bStop=false; obj.oSpeed[attr]+=(oTarget[attr]-cur)/5; obj.oSpeed[attr]*=0.7; css(obj, attr, cur+obj.oSpeed[attr]); } } if(fnDuring)fnDuring.call(obj); if(bStop) { clearInterval(obj.timer); obj.timer=null; if(fnCallBack)fnCallBack.call(obj); } } window.onload=function(){ var aPicLi=document.getElementById('pic_list').getElementsByTagName('li'); var aTextLi=document.getElementById('text_list').getElementsByTagName('li'); var aIcoLi=document.getElementById('ico_list').getElementsByTagName('li'); var oIcoUl=document.getElementById('ico_list').getElementsByTagName('ul')[0]; var oPrev=document.getElementById('btn_prev'); var oNext=document.getElementById('btn_next'); var oDiv=document.getElementById('box'); var i=0; var iNowUlLeft=0; var iNow=0; oPrev.onclick=function(){ if(iNowUlLeft>0){ iNowUlLeft--; oUlleft(); } oPrev.className=iNowUlLeft==0?'btn':'btn showBtn'; oNext.className=iNowUlLeft==(aIcoLi.length-7)?'btn':'btn showBtn'; } oNext.onclick=function(){ if(iNowUlLeft<aIcoLi.length-7){ iNowUlLeft++; oIcoUl.style.left=-aIcoLi[0].offsetWidth*iNowUlLeft+'px'; } oPrev.className=iNowUlLeft==0?'btn':'btn showBtn'; oNext.className=iNowUlLeft==(aIcoLi.length-7)?'btn':'btn showBtn'; } for(i=0;i<aIcoLi.length;i++){ aIcoLi[i].index=i; aIcoLi[i].onclick=function(){ if(iNow==this.index){ return false; } iNow=this.index; tab(); } } function tab(){ for(i=0;i<aIcoLi.length;i++){ aIcoLi[i].className=''; //aPicLi[i].style.filter='alpha(opacity:0)'; //aPicLi[i].style.opacity=0; aPicLi[i].className=''; aTextLi[i].getElementsByTagName('h2')[0].className=''; miaovStopMove(aPicLi[i]); } aIcoLi[iNow].className='active'; //aPicLi[this.index].style.filter='alpha(opacity:100)'; //aPicLi[this.index].style.opacity=1; miaovStartMove(aPicLi[iNow],{opacity:100},MIAOV_MOVE_TYPE.BUFFER); aTextLi[iNow].getElementsByTagName('h2')[0].className='show'; aPicLi[iNow].className='show2'; } function oUlleft(){ oIcoUl.style.left=-aIcoLi[0].offsetWidth*iNowUlLeft+'px'; } function autoplay(){ iNow++; if(iNow>=aIcoLi.length){ iNow=0; } if(iNow<iNowUlLeft){ iNowUlLeft=iNow; }else if(iNow>=iNowUlLeft+7){ iNowUlLeft=iNow-6; } oPrev.className=iNowUlLeft==0?'btn':'btn showBtn'; oNext.className=iNowUlLeft==(aIcoLi.length-7)?'btn':'btn showBtn'; oUlleft(); tab(); } var time=setInterval(autoplay,2000); oDiv.onmouseover=function(){ clearInterval(time); } oDiv.onmouseout=function(){ time=setInterval(autoplay,2000); } } 望各位大神指点一二,小弟不胜感激。
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问