当前位置: 首页 > 面试题库 >

CSS Calc替代

锺离刚洁
2023-03-14
问题内容

我正在尝试使用CSS和没有jquery动态地更改div的宽度。 以下代码将

/* Firefox */
width: -moz-calc(100% - 500px);
/* WebKit */
width: -webkit-calc(100% - 500px);
/* Opera */
width: -o-calc(100% - 500px);
/* Standard */
width: calc(100% - 500px);

我还希望支持IE 5.5及更高版本 ,我发现了以下内容:表达式。这是正确的用法吗?

/* IE-OLD */
width: expression(100% - 500px);

我还可以支持Opera和Android浏览器吗?


问题答案:

几乎总是box-sizing: border-box可以替换计算规则,例如calc(100% - 500px)用于布局。

例如:

如果我有以下标记:

<div class="sideBar">sideBar</div>
<div class="content">content</div>

而不是这样做:(假设边栏为300px宽)

.content {
  width: calc(100% - 300px);
}

做这个:

.sideBar {
     position: absolute; 
     top:0;
     left:0;
     width: 300px;
}
.content {
    padding-left: 300px;
    width: 100%;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}



* {

  margin: 0;

  padding: 0;

}

html,

body,

div {

  height: 100%;

}

.sideBar {

  position: absolute;

  top: 0;

  left: 0;

  width: 300px;

  background: orange;

}

.content {

  padding-left: 300px;

  width: 100%;

  -moz-box-sizing: border-box;

  box-sizing: border-box;

  background: wheat;

}


<div class="sideBar">sideBar</div>

<div class="content">content</div>

PS: 我不会在IE 5.5(hahahaha)中工作,但它将在IE8+,所有移动设备和所有现代浏览器(caniuse)中工作

我刚刚从Paul Irish的博客中找到了这篇文章,他还展示了框大小作为简单calc()表达式的一种可能选择:(粗体是我的)

边框可以很好地解决边界框问题,这是我最喜欢的用例之一。我可能想用50%或20%的列划分网格,但想通过px或em添加填充。
没有CSS即将发布的calc(),这是不可能的……除非您使用border-box

注意: 以上技术确实与相应的calc()语句看起来相同。虽然有区别。使用calc()规则时,内容div的宽度值实际为100% - width of fixed div,但是使用上述技术,内容div的实际宽度为全100%宽度,但 外观 为“填满”剩余宽度。(这可能足以满足大多数人的需求)

也就是说,如果内容div的宽度实际上 是很重要的100% - fixed div width 那么可以使用另一种技术-
利用块格式化上下文

1)浮动固定宽度div

2)在内容div上设置overflow:hiddenoverflow:auto



 类似资料:
  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 问题内容: 我想为re.sub提供替代的替换模式。 假设我有两种搜索模式可供选择,如下所示: 而不是提供一个替换模式,我想以某种方式捕获匹配哪个搜索模式的替换项并提供替换模式。这可能吗?谢谢。 PS。这里的代码细节无关紧要,这是一个普遍的问题。 问题答案: 您可以将函数传递给。在该函数中,您可以根据捕获的组返回所需的值。一个简单的代码说明: 该函数检查匹配是否成功,并根据捕获的组返回替换字符串。如

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 首先-我的描述;) 我从服务器收到XmlHttpRequests JSON响应。MySQL驱动程序将所有数据输出为字符串,PHP将其按原样返回,因此任何整数都将作为字符串返回,因此: JS中的parseInt()函数是否有任何快速替代方法(hack),可以解析纯数字字符串,例如 问题答案: 要转换为整数,只需使用一元+运算符,它应该是最快的方法: 可以通过类似的方式转换为其他类型: 更

  • 问题内容: 我有以下内容: 和 终于我有了 如果我做 和P元帅,我只是把田野当作事物的一部分,而不是高度。 我知道我可以在A中添加@XmlSeeAlso(B.class),这一切都可以。 但是问题是我不知道B以外的所有扩展类,因为A可能在运行时扩展。 如何在运行时动态定义@XmlSeeAlso? 问题答案: 这取决于您如何创建JAXBContext。该newInstance方法可以与所有的类的显式

  • 问题内容: 在一个Web项目中,用户上传了他们的文件,但是当我在服务器上收到它们时,它们将被存储为.tmp文件而不是原始文件扩展名(这也是我的首选行为)。 但是,这引起了问题。虽然对我来说本地的,但是在我的Linux开发机器上,它可以正常工作并且可以确定正确的mime类型,但是当我将项目上传到生产服务器(amazon beantalk)时,似乎无法正确确定mime类型。 从阅读javadocs来看