是否有可能在CSS3中使div 50px小于100%?

Der*_*會功夫 221 html css css3

是否有可能div在纯CSS 中使50px小于100%?我希望<div>它只比50%小于100%.我不想要任何JavaScript.

Der*_*會功夫 277

是的你可以.不使用IE expression(),您可以使用CSS3在CSS3中执行此操作calc().

div {
    width: 100%;
    width: -webkit-calc(100% - 50px);
    width: -moz-calc(100% - 50px);
    width: calc(100% - 50px);
}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/thirtydot/Nw3yd/66/

这将使您的生活变得更加轻松.它目前在3种主流浏览器中得到支持:Firefox,谷歌浏览器(WebKit)和IE9:http://caniuse.com/calc

MDN:https://developer.mozilla.org/en/CSS/-moz-calc

  • 问题是a)关于宽度与高度的问题不明确,b)自我回答不是最好的答案.对于宽度,sandeep是更好的,对于身高,gilly3's.今天一些重要的浏览器统计数据不支持OP的答案.(IE7/8) (41认同)
  • 顺便说一句:非前缀版本应该在前缀版本之后,而不是之前.请参阅https://developer.mozilla.org/Writing_Forward_Compatible_Websites另外,根据我的经验,许多calc()情况可以被`box-sizing`取代. (16认同)
  • 请注意,此问题特定于CSS3并且具有CSS3特定答案,因此它不是对推荐的仅针对先前版本的其他人的欺骗. (5认同)
  • 我不得不说,对于大多数网站来说,使用`calc()`*来表示重要的事情*是一个坏主意.浏览器支持还不够好. (2认同)

san*_*eep 159

一个DIV自动进行其父的宽度.所以没有必要定义任何width.通常只会这样写:

div{
    margin-right:50px;
}
Run Code Online (Sandbox Code Playgroud)

检查这个小提琴

  • [这个](http://jsfiddle.net/Nw3yd/3/)vs [this](http://jsfiddle.net/Nw3yd/4/)怎么样? (11认同)
  • @Chango - 当你调整窗口大小时,[那](http://jsfiddle.net/Nw3yd/4/)非常棒. (4认同)

gil*_*ly3 37

另一种选择是绝对定位.

div {
    position: absolute;
    left: 0;
    right: 50px;
}
Run Code Online (Sandbox Code Playgroud)

小提琴

但是,Sandeep的解决方案是您应该经常使用的解决方案.只是避免过度使用float.这可以防止元素自然地填充其容器.


Puy*_*yol 7

我的解决方案有和没有float: left.

HTML:

<div></div>
Run Code Online (Sandbox Code Playgroud)

CSS:

div {
    height: 20px;
    background: black;
    float: left;
    width: 100%;
    padding-right: 50px;
    box-sizing: border-box;
    background-clip: content-box; 
}?
Run Code Online (Sandbox Code Playgroud)

演示

兼容性:
Firefox 3.6,Safari 5,Chrome 6,Opera 10,IE 9

  • 你的方法中的div仍然占据屏幕的所有宽度,所以如果你把它们中的两个放在一起,就不能让它们漂浮在另一个上面. (2认同)