前端试题-cssText?

平常我们想更改页面上某个元素的样式时,我们一般会在js里这样写:

想更新obj的宽时,写上一行:

obj.style.width = “200px”;

想改它的定位类型时,再写一行:

obj.style.position = “absolute”;

又想改它的边框了,再加一行:

obj.style.border = “1px solid brown”;

……

改的样式多时,我们就要这样不停的写一行写一行……

 

如果我们在网上搜js批量修改样式,会发现有这样一个属性cssText。

它是一组样式属性及值的文本表示。

 

如果在js没有使用cssText前,即使在css样式里已经对obj进行了一些样式设置,但在控制台输出obj.style.cssText时却是空,只有在js使用过cssText对样式进行设置后,obj.style.cssText才能输出cssText设置的值。

 

就如我们把上面那一行行代码换成cssText写法,在js里是这样的:

obj.style.cssText = “width:200px; position:absolute; border:1px solid brown”;

此时我们再在控制台输出一下obj.style.cssText,就会出现我们设置的值,但同样这样值里仍然不会出现css样式里设置的值的。

有一点要注意,就是cssText对之前元素含有的样式会全部替换掉,因此我们用cssText时就应该这样用:

obj.style.cssText += “width:200px; position:absolute; border:1px solid brown”;

还有一个IE6/7/8会出现的问题,如果我们让控制台输出cssText的值会发现,IE6/7/8返回的属性名和值不仅是大写,而且最后一个属性名和值的后面的分号”;”被丢掉了。

这样使用cssText在拼接字符串时我们要在前面补上一个分号,才不会出各种各样的问题。因此完善一点的cssText写法是这样的:

obj.style.cssText += “; width:200px; position:absolute; border:1px solid brown”;

到这里cssText已经说完了。

 

不过还有一种类似批量修改属性的方法貌似也不错,同样达到同样的效果。

//使用JSON的方式

function setStyle(obj, json){    for (var i in json){        obj.style[i] = json[i];    }}

setStyle(obj,{width:‘200px‘, top:‘50px‘, left:‘100px‘, border:‘2px solid brown‘});

setStyle(obj,{height:‘50px‘});
时间: 2024-10-25 22:14:43

前端试题-cssText?的相关文章

百度2016实习 前端试题中的编程题2:Excel地址的相互转换 [2015南桥杯试题]

百度2016实习 前端试题中的编程题2:Excel地址的相互转换  Excel是最常用的办公软件.每个单元格都有唯一的地址表示.比如:第12行第4列表示为:"D12",第5行第255列表示为"IU5". 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址. 第12行第4列表示为:"R12C4",第5行第255列表示为"R5C255". 要求:编写程序,对换两种不同的表示方法表示行列,即 如果输入是常规地址

前端试题整理

阻止事件冒泡和默认事件 function stopBubble(e) { if(e && e.stopPropagation){ e.stopPropagation(); } else { window.event.cancelBubble = true; } }; // 阻止浏览器的默认事件 function stopDefault(e){ if(e && e.preventDefault) { e.preventDefault(); } else { window.ev

前端试题-2016年阿里前端开发工程师笔试题6,7,8题的解法

2016年阿里前端开发工程师笔试题(只有题,没有答案): http://www.cnblogs.com/sdgf/archive/2015/08/18/4740698.html 第6题:请在____处填写答案,从而达到题目的要求 var arr = [1, 2, 3, 4, 5]; var result = arr.sort(_______________________________).join("+"); console.log(result); 解答:在排序当中,如果需要按照某

前端试题-小试牛刀(1)

1. 请写出下面代码片段的输出结果:num为NaN,NaN和NaN是不相等的,NaN的类型是number类型,所以最后会alert‘number’. var str = 'abc123',     num = parseInt(str); if (num == NaN){   alert('NaN'); } else if (num == 123){   alert('123'); } else if (typeof(num) == 'number'){   alert('number'); }

前端试题-什么是css sprite?优缺点?

CSS Sprite是一种网页图片应用处理方式.它允许将一个页面涉及到的所有零星图片都包含到一张大图中去,这样,在访问页面时,就只需请求一次就可以了,而不必一次次向服务器发送请求. 它的原理就是把见面中一些背景图片整合到一张图片文件中,再利用CSS的"background-image","background-repeat","background-position"的组合进行背景定位,实现多个位置的背景,一张图来搞定. 优点 1 减少网页的ht

前端试题-js为数字添加千位分隔符

一种方法为: function test(str){   var iNum = str.length % 3;   var prev = '';   var iNow = 0;   var temp = '';   var arr = [];   if (iNum != 0){     prev = str.substring(0, iNum);     arr.push(prev);   }   str = str.substring(iNum);   for (var i = 0; i <

前端试题-两列等高布局

我们经常会见到一些小微网站上,左边是导航,右边是内容,无论是左边导航高度高还是右边内容高度高,两边始终以最高的来自适应等高显示. 这里的布局主要是把两边元素同时设两个比较大的padding-bottom,然后设置相等值的负的margin-bottom,最后给父元素加一个overflow:hidden. 比如上图有两列,一列高一列低,这里我们假设给左右都加上黄色部分高度padding-bottom:500px,如果不做其他处理的话,左边仍然没有右边高,分别加上不同背景色,左边和右边还是有差值,左边

前端试题-CSS试题(1)

1. css属性命名区分大小写吗? 不区分,不过一般小写,便于理解 2. margin-top和margin-bottom对于行内(内敛inline)元素效果一样么? 3.padding-top和padding-bottom对于inline元素都会增加元素本身的大小么? 回答2,3,需要了解html里的替换元素和非替换元素. 替换元素是指作为其他内容点位符的一个元素.如img等.非替换元素是指内容包含在文档中的元素,例如span. 讨论margin-top和margin-bottom对行内元素是

前端试题本(HTML+CSS篇)

CS1. 下面关于IE.FF下面CSS的解释区别描述正确的有?(不定项)CS2请选出结构正确的选项CS3.下面哪些是HTML5 新增的表单元素?CS4在使用table表现数据时,有时候表现出来的会比自己实际设置的宽度要宽,为此需要设置下面哪些属性值?CS5请用CSS实现如下图的样式,相关尺寸如图示,其中dom结构为:CS6.如下代码,在空白处填写代码,是其点击时,前景色为白色,背景色为黑色.CS7浏览器会加载样式为"display:none"的图片?CS8.浮动的元素相对于容器的哪里?