2011-08-24 66 views
2

在我幻想在SO中提出问题之前,我通常解决了我的编程疑惑,但这是我第一次似乎无法找到答案.... so ...这是我的第一个问题,经过几小时试图解决这个问题:CSS - 如何做一个:“一次CSS表达式”在CSS? (例如IE的最大高度/最大宽度)

¿如何拥有一次性的css表达式?


为什么一次性表达?: 如果我们做一些测试一样(注意,导致IE6 IE7 &会一次又一次地显示警报...):

<div style="height:expression(alert('this alert repeats itself'));"> 
    content with infinite alert... 
</div> 

表达式被评估直到时间结束......这就是为什么我想要理解一种让它只发生一次的方法,就像覆盖2°文章试图解释的样式一样,但我不能真正地得到它的工作....


,因为我们可以在这篇文章中读到:

http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_6/

表达自我重复,并且可能是一个性能问题...

那么这篇文章:

http://vacskamati.blogspot.com/2008/10/one-time-execution-of-ie-css.html

这是伟大的原因,这是我发现的唯一一个tr我可以解决这个问题......但我似乎无法做到这一点....

我在做什么...是模拟“最大宽度”和“最大高度”在IE ...我知道FF和evyerthing否则可以直接使用CSS ..我必须让它在IE6和IE7中以某种方式工作...

我知道我可以在外面使用JS,但是你会在我的代码中看到...我会尝试放置php值...所以我需要直接在表达式中进行一些控制,因此它只会自动执行一次,然后我不必在别处编写JS函数。 ..我认为这应该是非常简单的...但我只是可以得到它...无论如何...我的代码是这样的东西....:

<div id="div_id" 
    style=" 
      max-height:<?php echo $height_var; ?>; 
      -$height: 
       expression( 
          if(document.getElementById('div_id').offsetHeight><?php echo $height_var; ?>){ 
          document.getElementById('div_id').style.height = '400px' 
          } 

         ); 
      overflow:scroll; 
      " > 
    content--lbalbalbalbalblablablalb 
</div> 

的sooo ...嗯这是最基本的想法...我已经tryied不同的方式上面的文章tryies解释,我已经tryied发送人邮件,嗯,可是当我等待可能的答案,我将这个问题暴露给SO社区,因为不能找到我认为可能很简单的东西的答案是很奇怪的......

所以现在...就我所知,EXPRESSION重复本身..我得到SCROLL,如果原始内容大于400px ....但我知道它重复自身,因为...如果我发送“警报()”它始终显示....所以。 ...再次如何实现一次性表达式...因此IE不会评估它是否为鼠标移动或任何动作....

在此先感谢=)(并为我奇怪的缩进代码感到遗憾...= P)

+0

请原谅我的无知,但为什么' - ! $ height:'而不是'height:'? – shanethehat

+0

啊,是的,嗯,我在第二篇文章的评论中读到,使用 - $ hack是因为只有IE6和IE7读取表达式= P,但我猜有点可选? – Edward

+0

当内容占用比父元素更多的空间时,你期望发生什么? – Dor

回答

0

我并不确切地知道你想要什么,但我希望这将有助于:

效仿最大宽度:

* html div#division 
{ 
    width: expression(document.body.clientWidth > 776 ? "777px" : "auto"); /* sets max-width for IE */ 
} 
div#division 
{ 
    max-width: 777px; /* this sets the max-width value for all standards-compliant browsers */ 
} 

效仿最大高度

* html div#division 
{ 
    height: expression(this.scrollHeight > 332 ? "333px" : "auto"); /* sets max-height for IE */ 
} 
div#division 
{ 
    max-height: 333px; /* sets max-height value for all standards-compliant browsers */ 
} 

http://perishablepress.com/press/2007/01/16/maximum-and-minimum-height-and-width-in-internet-explorer/

请注意,不再支持一次性CSS表达式。 http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx

+0

嗨,谢谢你的回答,不幸的是我已经去过那个网站,并试图联系这个人问同样的问题,他甚至在评论中解释说,IE“追逐自己”,你把相同的价值观,这是为什么你把“-1”换成你想要的值,比如“332?333”...... 非常感谢,但是这并不能解决原始问题,即如何只让表达式发生一次= P – Edward

0

最大宽度和最大高度DO工作在IE(越野车在6)。只要确保:

  • 添加重要:style="max-height: 200px !important"
  • 添加DOCTYPE “ - // W3C // DTD XHTML 1.0”

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"> <div style="border: red thin dotted; max-height: 40px !important; overflow: hidden"><pre>qwerty qwerty qwerty</pre></div>

+0

mmm ...谢谢我想,我会在稍后尝试,因为现在我不在那台计算机上,但是,我将不得不通过两件事情,希望你能回答,嗯: 1-没有DOCTYPE?因为我不能使用它,对不起,我猜这是不会去没有?IDK 2 - 我认为它不回答原来的“如何做一次性CSS表达”,但如果它适用于最大高度,然后我将它投票=) – Edward

+1

http://msdn.microsoft.com/en-us/library/ms530809(VS.85).aspx “此属性仅在严格!DOCTYPE。“ 我没有回答原来的问题,但解决了原来的问题(: – friendzis